Realtime CVE intelligence over the Model Context Protocol. Gives an LLM one place
to look up a vulnerability and get **details, exploitation signals, and public
proof-of-concepts** — aggregated from five authoritative sources:
| **NIST NVD** (API v2.0) | Description, CVSS v2/v3.1/v4 scores + vectors, CWE weaknesses, affected-product CPEs, references |
| **CISA KEV** | Confirmed active-exploitation status, remediation due dates, ransomware-use flag |
| **FIRST.org EPSS** | Probability a CVE is exploited in the 30 days (+ percentile) |
| **GitHub Security Advisories** | Package-level impact: ecosystem, vulnerable version ranges, first patched version |
| **nomi-sec PoC-in-GitHub + Exploit-DB** | Public proof-of-concept repos (ranked by stars) and exploit references, with optional repo-content retrieval |
| **Metasploit + Nuclei** | Packaged, ready-to-run tooling: Metasploit modules (Rapid7, with reliability rank) and Nuclei templates (ProjectDiscovery) referencing the CVE |
| `cve_triage` | **Prioritization verdict** fusing CVSS + EPSS + KEV + PoC into ACT NOW → LOW. |
| `cve_batch_triage` | Triage up to 25 CVEs in one call, returned ranked by priority (turn a scan/findings list into a fix-first queue). |
| `cve_watchlist` | Vendor/product digest: recently published CVEs + that vendor's CISA KEV entries in one call. |
| `cve_get_details` | Full enriched detail for one CVE (NVD + KEV + EPSS, with triage banner). |
| `cve_search` | NVD by keyword, CPE, severity, KEV status, date range. |
| `cve_recent` | Recently published CVEs (realtime monitoring, up to 120-day look-back). |
| `cve_get_pocs` | Discover public PoC / exploit references for a CVE. |
| `cve_fetch_poc_code` | Fetch a PoC repo's file listing + README. |
| `cve_get_exploit_tooling` | Packaged Metasploit modules + Nuclei templates for a CVE (with run strings). |
| `cve_get_kev` | CISA KEV single lookup or catalog browse. |
| `cve_get_epss` | EPSS scores for one or many CVEs. |
| `cve_get_advisories` | GitHub Security Advisories for a CVE. |
All tools are read-only and support `response_format: "markdown"` (default) or `"json"`.
All are optional but recommended — they raise rate limits and coverage:
- `NVD_API_KEY` — [request one here]( (NVD throttles hard without it).
- `GITHUB_TOKEN` — any GitHub PAT; raises the GitHub API limit for advisories and PoC fetching.
- `TRANSPORT` — `stdio` (default) or `http`.
- `PORT` — HTTP port when `TRANSPORT=http` (default `3000`, bound to `127.0.0.1`).
claude mcp add cve --env NVD_API_KEY=xxx --env GITHUB_TOKEN=ghp_xxx -- node / /k4p/cve-mcp-server/dist/index.js
### Claude Desktop (`claude_desktop_config.json`)
"args": ["/ /k4p/cve-mcp-server/dist/index.js"],
- "Tell me everything Log4Shell, including whether it's actively exploited."
- "What critical CVEs were published this week that are in the CISA KEV catalog?"
- "Find public PoCs for CVE-2024-3400 and show me what's in the top repo."
- "Is there a Metasploit module or Nuclei template for EternalBlue?"
- "Rank CVE-2021-44228, CVE-2023-23397, and CVE-2024-3400 by EPSS exploitation likelihood."
- "Here are 12 CVEs from last night's scan — triage them and tell me what to patch first."
- "What's new for Fortinet this month, and which of theirs are actively exploited?"
- "Which Maven packages does CVE-2021-44228 affect and in what version was it fixed?"
PoC and exploit tools surface **already-public** security research artifacts and are
intended for authorized defensive testing, detection engineering, and vulnerability
triage. `cve_fetch_poc_code` retrieves repository contents (file listing + README,
size-bounded) and `cve_get_exploit_tooling` links to public Metasploit/Nuclei source;
use them only against targets you are authorized to test.
`cve_triage` (and the banner on `cve_get_details`) turns four signals into one verdict:
| 🔴 **ACT NOW** | In CISA KEV (confirmed exploited), or composite score ≥ 85 |
Composite score (0-100): CVSS contributes up to 50, EPSS up to 40, and **exploit availability up
to 15**. Availability is a gradient (strongest signal wins, not additive): a weaponized Metasploit
exploit module → 15, other packaged tooling (auxiliary module / Nuclei template) → 12, a public
PoC → 10, none → 0. KEV membership hard-pins to 100. Each verdict comes with a plain-English
rationale — including an explicit "severe on paper but low real-world signal → deprioritize" note
when CVSS is high but EPSS/KEV/PoC/tooling are all cold.
- **Retries with backoff** on `429/502/503/504` and network blips (honors `Retry-After`) — so
NVD's strict unauthenticated rate limit doesn't fail a triage mid-run.
- **CVE-detail lookups cached 15 min** in-process (the same CVE is queried repeatedly across
`cve_get_details` / `cve_triage` / `cve_get_pocs`).
`evals/` holds a 10-question suite (`cve-mcp-evals.xml`, mcp-builder format) plus a
ground-truth checker that asserts each answer is still retrievable from the live
See [`evals/README.md`](evals/README.md) for details. Answers are chosen to be stable
over time (CVSS/CWE, KEV dates, GHSA patched versions, classic Metasploit paths).
- The CISA KEV catalog is cached in-process for one hour to avoid re-downloading the
- The Metasploit metadata (~11 MB) and Nuclei CVE index (~2 MB) feeds are fetched once
and cached in-process for six hours, then indexed by CVE for instant lookups.
- NVD caps date-range queries at 120 days; `cve_recent` clamps to that.
- Responses are truncated at 25,000 characters; use pagination or `json` format for more.
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
