cve-mcp

cve-mcp

Unifies NVD, EPSS, CISA KEV, GitHub Advisory, and OSV into a single MCP server, enabling AI agents to query vulnerability intelligence conversationally with 23 tools for incident response, prioritization, dependency audits, and threat monitoring.

Category
访问服务器

README

<p align="center"> <br> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-light.svg"> <img alt="cve-mcp" src="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg" width="700"> </picture> </p>

<h3 align="center">CVE & vulnerability intelligence for AI agents.</h3>

<p align="center"> NVD, EPSS, CISA KEV, GitHub Advisory, and OSV — unified into a single MCP server.<br> Your AI agent gets <b>vulnerability intelligence on demand</b>, not a 200-page report. </p>

<br>

<p align="center"> <a href="#the-problem">The Problem</a> • <a href="#how-its-different">How It's Different</a> • <a href="#quick-start">Quick Start</a> • <a href="#what-the-ai-can-do">What The AI Can Do</a> • <a href="#tools-reference-23-tools">Tools</a> • <a href="#data-sources">Data Sources</a> • <a href="#architecture">Architecture</a> </p>

<p align="center"> <a href="https://www.npmjs.com/package/cve-mcp"><img src="https://img.shields.io/npm/v/cve-mcp.svg" alt="npm"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a> <img src="https://img.shields.io/badge/runtime-Bun-f472b6" alt="Bun"> <img src="https://img.shields.io/badge/protocol-MCP-8b5cf6" alt="MCP"> <img src="https://img.shields.io/badge/tools-23-f97316" alt="23 Tools"> <img src="https://img.shields.io/badge/sources-5-ef4444" alt="5 Sources"> </p>


The Problem

Vulnerability intelligence is scattered across multiple databases. NVD has CVE details. EPSS tells you exploitation probability. CISA KEV tracks actively exploited vulns. GitHub Advisory covers open source packages. OSV maps vulnerabilities to specific package versions. No single tool aggregates them, and none work with AI agents.

Traditional workflow:
  search NVD for CVE details          →  navigate a clunky web UI
  check EPSS for exploitation risk    →  separate API, separate format
  look up CISA KEV status             →  download a JSON feed manually
  search GitHub advisories            →  yet another interface
  query OSV for package impact        →  different API, different schema
  correlate everything                →  copy-paste into a spreadsheet
  ──────────────────────────────────
  Total: 30+ minutes per CVE, longer for bulk triage

cve-mcp gives your AI agent 23 tools via the Model Context Protocol. The agent queries all five sources in parallel, correlates data, calculates risk scores, and tells you exactly what matters.

With cve-mcp:
  You: "Prioritize these 10 CVEs by actual exploitation risk"

  Agent: → fetches CVSS scores from NVD
         → gets EPSS exploitation probability for each
         → checks CISA KEV for actively exploited
         → cross-references GitHub advisories for patches
         → "3 are critical: CVE-2024-3400 (EPSS 97%, in KEV),
            CVE-2023-44487 (HTTP/2 rapid reset, EPSS 96%),
            CVE-2021-44228 (Log4Shell, EPSS 97%, in KEV).
            Here are patches and affected versions..."

How It's Different

Existing tools give you raw data. cve-mcp gives your AI agent the ability to reason about vulnerabilities.

<table> <thead> <tr> <th></th> <th>Traditional Tools</th> <th>cve-mcp</th> </tr> </thead> <tbody> <tr> <td><b>Interface</b></td> <td>Web UI / CLI / raw API calls</td> <td>MCP — AI agent calls tools conversationally</td> </tr> <tr> <td><b>Data sources</b></td> <td>One database at a time</td> <td>NVD + EPSS + KEV + GHSA + OSV in parallel</td> </tr> <tr> <td><b>Risk scoring</b></td> <td>CVSS only (severity, not exploitability)</td> <td>CVSS × EPSS × KEV = actual risk priority</td> </tr> <tr> <td><b>Correlation</b></td> <td>Manual copy-paste</td> <td>Agent enriches: "This CVE has CVSS 9.8, EPSS 97%, is in KEV, affects lodash@4.17.20"</td> </tr> <tr> <td><b>Bulk triage</b></td> <td>One CVE at a time</td> <td>Agent prioritizes 50 CVEs in a single conversation</td> </tr> <tr> <td><b>Package impact</b></td> <td>Separate OSV/GHSA lookup</td> <td>Agent finds affected packages + versions automatically</td> </tr> <tr> <td><b>Dependencies</b></td> <td>Heavy CLI tools, Python environments</td> <td>2 runtime dependencies, runs with npx</td> </tr> </tbody> </table>


Quick Start

Option 1: npx (no install)

npx cve-mcp

Option 2: Clone

git clone https://github.com/badchars/cve-mcp.git
cd cve-mcp
bun install

Environment variables (optional)

# Increases NVD rate limit from 5 to 50 requests per 30 seconds
export NVD_API_KEY=your-nvd-api-key

# Enables GitHub Advisory search (60 → 5000 requests/hour)
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Both are optional. The server works without them, just with lower rate limits.

Connect to your AI agent

<details open> <summary><b>Claude Code</b></summary>

# With npx
claude mcp add cve-mcp -- npx cve-mcp

# With local clone
claude mcp add cve-mcp -- bun run /path/to/cve-mcp/src/index.ts

</details>

<details> <summary><b>Claude Desktop</b></summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "cve-mcp": {
      "command": "npx",
      "args": ["cve-mcp"],
      "env": {
        "NVD_API_KEY": "optional-key",
        "GITHUB_TOKEN": "optional-token"
      }
    }
  }
}

</details>

<details> <summary><b>Cursor / Windsurf / other MCP clients</b></summary>

Same JSON config format. Point the command to npx cve-mcp or your installation path.

</details>

Start querying

You: "What do you know about CVE-2024-3400?"

That's it. The agent handles the rest.


What The AI Can Do

Incident Response

You: "We got hit by CVE-2024-3400. Give me everything."

Agent: → cve_enrich {cveId: "CVE-2024-3400"}
       → NVD: PAN-OS command injection, CVSS 10.0
       → EPSS: 97.2% exploitation probability
       → KEV: Added 2024-04-12, due 2024-05-01
       → GHSA: No open source advisory (commercial product)
       → exploit_search: 23 PoC repos on GitHub
       → "Critical. Actively exploited in the wild.
          PAN-OS GlobalProtect, versions < 10.2.9-h1.
          Patch immediately. CISA deadline: May 1."

Vulnerability Prioritization

You: "Prioritize these CVEs from our scan: CVE-2021-44228, CVE-2024-3400,
      CVE-2023-44487, CVE-2024-21762, CVE-2023-4966"

Agent: → cve_prioritize {cves: [...]}
       → Ranks by CVSS × EPSS × KEV multiplier
       → "#1: CVE-2024-3400 (risk: 19.44, CVSS 10.0, EPSS 97%, KEV)
          #2: CVE-2021-44228 (risk: 19.40, CVSS 10.0, EPSS 97%, KEV)
          #3: CVE-2023-4966 (risk: 19.10, CVSS 9.4, EPSS 97%, KEV)
          All 5 are in CISA KEV — patch all immediately."

Dependency Audit

You: "Check if lodash 4.17.20 and django 3.2.0 have known vulnerabilities"

Agent: → osv_batch {queries: [
          {package: "lodash", version: "4.17.20", ecosystem: "npm"},
          {package: "django", version: "3.2.0", ecosystem: "PyPI"}
       ]}
       → "lodash 4.17.20: 3 vulnerabilities (prototype pollution)
          django 3.2.0: 12 vulnerabilities (SQL injection, XSS)
          Upgrade lodash to 4.17.21+, django to 4.2+"

Threat Monitoring

You: "What are the most likely to be exploited CVEs right now?"

Agent: → cve_trending {limit: 10, minEpss: 0.9}
       → "Top 10 by exploitation probability:
          1. CVE-2024-3400 — PAN-OS (EPSS 97.2%, CVSS 10.0, KEV)
          2. CVE-2023-44487 — HTTP/2 Rapid Reset (EPSS 96.5%, CVSS 7.5, KEV)
          ..."

CVSS Deep Dive

You: "Break down this CVSS vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"

Agent: → cvss_parse {vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}
       → "Score: 10.0 (CRITICAL)
          Network attack vector, no privileges required, no user interaction.
          Scope changed — can impact other components.
          Full compromise: confidentiality, integrity, and availability."

Tools Reference (23 tools)

<details> <summary><b>NVD (4)</b></summary>

Tool Description
nvd_search Search CVEs by keyword, severity, CWE, date range
nvd_get Get full CVE details (CVSS, CWE, CPE, references)
nvd_recent Recently published/modified CVEs
cve_by_product Search CVEs by product name (CPE keyword match)

</details>

<details> <summary><b>EPSS (2)</b></summary>

Tool Description
epss_score EPSS exploitation probability for one or more CVEs
epss_top Top CVEs by exploitation probability

</details>

<details> <summary><b>KEV (3)</b></summary>

Tool Description
kev_check Check if CVE(s) are in CISA Known Exploited Vulnerabilities catalog
kev_search Search KEV by vendor, product, or keyword
kev_recent Recently added KEV entries

</details>

<details> <summary><b>GHSA (2)</b></summary>

Tool Description
ghsa_search Search GitHub security advisories by keyword, ecosystem, severity
ghsa_get Get advisory details by GHSA ID or CVE ID

</details>

<details> <summary><b>OSV (3)</b></summary>

Tool Description
osv_query Query vulnerabilities for a specific package version
osv_get Get vulnerability details by OSV/GHSA/CVE ID
osv_batch Batch query multiple packages at once

</details>

<details> <summary><b>Exploit (1)</b></summary>

Tool Description
exploit_search Search for public PoC exploits (GitHub repositories)

</details>

<details> <summary><b>CWE (1)</b></summary>

Tool Description
cwe_lookup Look up CWE weakness by ID or search by keyword

</details>

<details> <summary><b>CVSS (1)</b></summary>

Tool Description
cvss_parse Parse and explain a CVSS v3.1 vector string with score calculation

</details>

<details> <summary><b>Meta (6)</b></summary>

Tool Description
cve_enrich Full enrichment: NVD + EPSS + KEV + GHSA + OSV in parallel
cve_prioritize Rank CVEs by risk (CVSS × EPSS × KEV multiplier)
cve_trending Currently trending CVEs by exploitation probability
cve_compare Side-by-side comparison of two CVEs
cve_list_sources List all data sources and their availability
cve_report Generate a markdown vulnerability report

</details>


Data Sources

Source Auth What it provides
NVD Optional NVD_API_KEY CVE details, CVSS scores, CWE mappings, CPE affected products, references
EPSS None Exploitation probability score (0-1) and percentile ranking
CISA KEV None Known exploited vulnerabilities with remediation deadlines
GitHub Advisory Optional GITHUB_TOKEN Open source security advisories, affected packages, severity
OSV None Package-level vulnerability data across 16+ ecosystems

Risk Score Formula

Risk Score = CVSS Base Score × EPSS Score × KEV Multiplier

Where:
  CVSS Base Score  = 0-10 (severity from NVD)
  EPSS Score       = 0-1 (exploitation probability from FIRST)
  KEV Multiplier   = 2 if in CISA KEV, 1 otherwise

This gives a practical risk score that balances severity (CVSS) with real-world exploitation likelihood (EPSS) and known active exploitation (KEV).


Architecture

src/
├── index.ts                    Entry point + MCP stdio
├── types/
│   └── index.ts                ToolDef, ToolContext, ToolResult, API types
├── protocol/
│   ├── tools.ts                23 tool definitions (Zod schemas)
│   └── mcp-server.ts           MCP server + stdio transport
├── nvd/
│   ├── index.ts                NVD API v2 — search, get, recent
│   └── cpe.ts                  Product/CPE search
├── epss/
│   └── index.ts                EPSS — score, top
├── kev/
│   └── index.ts                KEV — check, search, recent (cached)
├── ghsa/
│   └── index.ts                GitHub Advisory — search, get
├── osv/
│   └── index.ts                OSV — query, get, batch
├── exploit/
│   └── index.ts                PoC search via GitHub repos
├── cwe/
│   └── index.ts                CWE database (40+ entries embedded)
├── cvss/
│   └── index.ts                CVSS v3.1 parser + score calculator
├── meta/
│   ├── enrich.ts               Full CVE enrichment (all sources)
│   ├── prioritize.ts           Risk-based CVE ranking
│   ├── trending.ts             Trending CVEs by EPSS
│   ├── compare.ts              Side-by-side CVE comparison
│   └── sources.ts              Data source health check
└── utils/
    ├── rate-limiter.ts          Queue-based rate limiter (NVD)
    └── cache.ts                 TTL cache (NVD results)

Design decisions:

  • Intelligence, not audit — Unlike cloud-audit-mcp and github-security-mcp, this is a data tool. No CheckResult, no findings accumulation. Each query is independent and stateless.
  • Parallel enrichmentcve_enrich calls all 5 sources via Promise.allSettled. If one source is down, the rest still return data.
  • Shared rate limiter — All NVD modules share a single RateLimiter instance (6s between requests) to avoid 429 errors.
  • KEV caching — The full KEV catalog (~1200 entries, ~200KB) is loaded once and cached in memory with 1-hour TTL.
  • NVD result caching — Individual CVE lookups are cached with 10-minute TTL to avoid redundant API calls during enrichment.
  • Embedded CWE database — 40+ top CWEs from OWASP/MITRE embedded as static data. No external API needed.
  • Full CVSS calculator — CVSS v3.1 base score calculation algorithm implemented locally. Parses any vector string and explains each metric.
  • 2 dependencies@modelcontextprotocol/sdk and zod. Nothing else.

Limitations

  • NVD API without NVD_API_KEY is limited to 5 requests per 30 seconds. Set the key for production use
  • GitHub Advisory search without GITHUB_TOKEN is limited to 60 requests per hour
  • Exploit search uses GitHub repository search which has its own rate limits
  • CVSS parser supports v3.1 only (v2 and v4 vectors are not parsed, though v2 scores are returned from NVD)
  • CWE database is embedded (40+ entries) rather than comprehensive (1000+ in full MITRE database)
  • macOS / Linux (Windows not tested)

Part of the MCP Security Suite

Project Domain Tools
hackbrowser-mcp Browser-based security testing 39 tools, Firefox, injection testing
cloud-audit-mcp Cloud security (AWS/Azure/GCP) 38 tools, 60+ checks
github-security-mcp GitHub security posture 39 tools, 45 checks
cve-mcp Vulnerability intelligence 23 tools, 5 sources

<p align="center"> <b>For authorized security testing and assessment only.</b><br> Always ensure you have proper authorization before testing systems. </p>

<p align="center"> <a href="LICENSE">MIT License</a> • Built with Bun + TypeScript </p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选