
A vulnerability scan hands you 200 CVEs. Which ones matter? CVSS alone won’t tell you — a “Critical 9.8” with a 0.1% chance of being exploited is not the same problem as a “High 7.5” that’s in CISA’s KEV catalog with a working Metasploit module. To know the real risk you need NVD for severity, EPSS for exploitation probability, KEV for active exploitation, Shodan for exposure, Nuclei and Metasploit for weaponization, and OSV or GHSA for package impact. That’s eleven platforms, each with its own API and output shape.
cve-mcp gives an AI agent 41 tools across 11 sources over the Model Context Protocol. The agent queries them in parallel, correlates the results, checks for public exploit tooling, and computes a composite risk score that reflects how likely a thing is to actually be exploited — not just how bad it would be in theory. It’s on npm under MIT (v0.2.0, a couple thousand downloads a month at the time of writing), and it’s the same intelligence that powers our public CVE browser and KEV hub.
The score is the point
Aggregating eleven feeds is table stakes. The useful part is turning them into one number that sorts a backlog:
Risk = CVSS Base × EPSS × KEV multiplier × Exploit multiplier
CVSS Base 0–10 severity (NVD)
EPSS 0–1 exploitation probability in the next 30 days (FIRST)
KEV multiplier 2× if in CISA KEV, else 1×
Exploit multiplier 1.5× if a Nuclei template or Metasploit module exists, else 1×
Run the two cases that usually get ranked the same by a scanner:
- CVSS 10.0, EPSS 0.1%, no known exploit →
10 × 0.001 × 1 × 1 = 0.01 - CVSS 7.5, EPSS 95%, in KEV, Metasploit module →
7.5 × 0.95 × 2 × 1.5 = 21.4
The “lower severity” one is the fire. EPSS is the signal most triage ignores, and it’s doing most of the work in that gap.

What it covers
Eleven live sources, plus three reference databases:
| Source | Auth | Provides |
|---|---|---|
| NVD | optional | CVE details, CVSS, CWE, affected CPE products |
| EPSS | none | exploitation probability + percentile (FIRST) |
| CISA KEV | none | known-exploited catalog with remediation deadlines |
| GitHub Advisory | optional | open-source advisories, affected packages |
| OSV | none | package-level vulns across 16+ ecosystems (Google) |
| Shodan CVEDB / InternetDB | none | CVE lookup + per-IP exposure, no subscription |
| VulnCheck | optional | extended KEV (~80% more than CISA), CPE/PURL search |
| Vulners | optional | search across 200+ sources, exploit references |
| Nuclei templates | none | is there a detection template for this CVE? |
| Metasploit | none | is there an exploit module for this CVE? |
| CIRCL | none | enrichment with CAPEC mapping, alternate references |
| + MITRE ATT&CK, MITRE CWE, AttackerKB | none | CWE→technique mapping, weakness definitions, attacker-value ratings |
Thirty of the 41 tools need no API key. The eleven that take one — NVD, GitHub, VulnCheck, Vulners, AttackerKB — use it only to raise a rate limit or unlock an extra source, and everything else keeps working without it.
How it works
The server runs as a stdio process an MCP client spawns as a child — zero config, and it has exactly two dependencies (@modelcontextprotocol/sdk and zod for argument validation):
{
"mcpServers": {
"cve-mcp": { "command": "npx", "args": ["-y", "cve-mcp"] }
}
}
The workhorse tool is cve_enrich. It fires Promise.allSettled across every source at once, so one slow or down feed doesn’t stall the rest — the agent gets NVD severity, EPSS probability, KEV status, Shodan exposure, Nuclei/Metasploit weaponization and GHSA/OSV package impact back from a single call. cve_prioritize runs that enrichment over a list and returns it sorted by the risk formula above.
From 200 CVEs to five patches
That sort is the whole reason to wire this up. Hand the agent a scanner dump:
cve_prioritize({ cves: ["CVE-2024-3400", "CVE-2021-44228", ...] })
#1 CVE-2024-3400 risk 29.2 CVSS 10.0 × EPSS 0.97 × KEV × MSF
#2 CVE-2021-44228 risk 29.1 CVSS 10.0 × EPSS 0.97 × KEV × Nuclei
#3 CVE-2023-4966 risk 27.3 CVSS 9.4 × EPSS 0.97 × KEV × MSF
...
#47 CVE-2024-xxxxx risk 0.03 CVSS 5.3 × EPSS 0.001 × no KEV × no exploit
The synthesis the agent hands back is the part a human acts on: the top five are all in KEV with working exploits — patch now; items 6–15 are high EPSS but no public exploit yet — this sprint; the rest are low EPSS, no KEV, no tooling — backlog. Fifty CVEs become five urgent actions and a defensible order for the rest. From there the agent can map a CVE’s CWE to ATT&CK techniques (cve_to_attack), confirm an exposed IP is actually affected (shodan_ip_vulns), or write the whole thing up (cve_report).
Where it fits in CyberStrike
cve-mcp is one of the built-in MCP servers in the CyberStrike suite. It ships enabled per config, and its tools join the agent through a lazy registry — only lightweight metadata sits in context until the agent reaches for a tool.
The point of putting it behind the protocol is that it chains with the others. Infrastructure fingerprinting detects Apache 2.4.49 → the agent calls cve_by_product("Apache HTTP Server 2.4.49") → gets CVE-2021-41773 → cve_enrich confirms EPSS 97%, in KEV, Nuclei template exists → the agent escalates from “noticed it” to “confirmed exploitable and worth testing.” Pair it with the darknet MCP server to check whether the same target’s credentials are already loose, and you’ve got exposure and exploitability in one run. The reasoning for splitting tools across servers instead of one monolith is the same we laid out in MCP vs A2A.
Getting started
Standalone, in any MCP client, with no keys:
npx cve-mcp
NVD, EPSS, KEV, OSV, Shodan, Nuclei, Metasploit, CIRCL, CWE and ATT&CK all work out of the box. Add keys only where you want the extra headroom — NVD_API_KEY takes NVD from 5 to 50 requests per 30 seconds, GITHUB_TOKEN takes GHSA from 60 to 5,000 requests an hour, and VULNCHECK_API_KEY / VULNERS_API_KEY / ATTACKERKB_API_KEY unlock their respective sources. Pass them through the environment, not a checked-in config — the MCP hardening rules apply here too.
Published on npm as cve-mcp (MIT). Part of the CyberStrike embedded MCP server suite — see also the darknet MCP server, ten ways to secure your MCP servers, and our live CVE + KEV browser.


