badchars/cve-mcp

GitHub: badchars/cve-mcp

为 AI agent 统一聚合 11 个漏洞情报数据源的 MCP 服务器,支持对话式漏洞查询、风险评分与批量分诊。

Stars: 13 | Forks: 4

English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt | हिन्दी


cve-mcp

面向 AI agent 的 CVE 与漏洞情报。

NVD、EPSS、CISA KEV、GitHub Advisory、OSV、Shodan、VulnCheck、Vulners、Nuclei、Metasploit、CIRCL、AttackerKB 以及 MITRE ATT&CK — 统一集成于单个 MCP server 中。
你的 AI agent 将获得按需获取的漏洞情报,而不是一份长达 200 页的报告。


痛点独特之处快速开始AI 能力工具数据源架构贡献指南更新日志

npm License Bun MCP 41 Tools 11 Sources

## 痛点 漏洞情报散落在多个数据库中。NVD 提供 CVE 详情。EPSS 告诉你被利用的概率。CISA KEV 追踪被积极利用的漏洞。GitHub Advisory 涵盖了开源包。OSV 将漏洞映射到特定的包版本。Shodan 追踪互联网暴露面。Nuclei 和 Metasploit 告诉你是否有可用的 exploit。没有任何单一工具能将它们聚合起来,而且它们都无法与 AI agent 协同工作。 ``` 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 check Shodan for exposure → separate subscription look for Nuclei/MSF exploits → manual GitHub search map to ATT&CK techniques → separate MITRE lookup correlate everything → copy-paste into a spreadsheet ────────────────────────────────── Total: 30+ minutes per CVE, longer for bulk triage ``` **cve-mcp** 通过 [Model Context Protocol](https://modelcontextprotocol.io) 为你的 AI agent 提供 41 个工具。该 agent 可以并行查询 11 个数据源,关联数据,检测武器化信号,计算风险评分,并准确告诉你哪些事情最重要。 ``` 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..." ``` ## 独特之处 现有工具提供原始数据。cve-mcp 赋予你的 AI agent 对漏洞进行推理的能力。
传统工具 cve-mcp
交互方式 Web UI / CLI / 原始 API 调用 MCP — AI agent 以对话方式调用工具
数据源 一次仅查询一个数据库 并行查询 11 个来源:NVD、EPSS、KEV、GHSA、OSV、Shodan、VulnCheck、Vulners、Nuclei、Metasploit、CIRCL
风险评分 仅基于 CVSS(仅反映严重程度,而非可利用性) CVSS × EPSS × KEV × Exploit 乘数 (Nuclei/MSF) = 实际风险
关联性 手动复制粘贴 Agent 自动扩充信息:“CVSS 9.8,EPSS 97%,已被收录至 KEV,存在 Nuclei 模板,有可用的 MSF 模块,映射至 T1190”
批量分诊 一次仅处理一个 CVE Agent 可在单次对话中对 50 个 CVE 进行优先级排序
包影响面 需单独查询 OSV/GHSA Agent 自动查找受影响的包及版本
依赖项 依赖庞大的 CLI 工具和 Python 环境 仅需 2 个运行时依赖,通过 npx 运行
## 快速开始 ### 选项 1:npx(免安装) ``` npx cve-mcp ``` ### 选项 2:克隆仓库 ``` git clone https://github.com/badchars/cve-mcp.git cd cve-mcp bun install ``` ### 环境变量(均为可选) ``` # 将 NVD 速率限制从每 30 秒 5 个请求增加到 50 个 export NVD_API_KEY=your-nvd-api-key # 启用 GitHub Advisory 搜索(60 → 5000 个请求/小时) export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # VulnCheck 扩展的 KEV、CPE、PURL 搜索 export VULNCHECK_API_KEY=your-vulncheck-key # 跨 200+ 来源的 Vulners 漏洞搜索 export VULNERS_API_KEY=your-vulners-key # AttackerKB 社区评估 export ATTACKERKB_API_KEY=your-attackerkb-key ``` 所有配置项均为可选。即使不进行配置,server 也能正常工作 —— 只是部分工具会受到较低的速率限制或返回精简数据。 ### 连接到你的 AI agent
Claude Code ``` # 使用 npx claude mcp add cve-mcp -- npx cve-mcp # 使用本地 clone claude mcp add cve-mcp -- bun run /path/to/cve-mcp/src/index.ts ```
Claude Desktop 添加至 `~/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", "VULNCHECK_API_KEY": "optional-key", "VULNERS_API_KEY": "optional-key", "ATTACKERKB_API_KEY": "optional-key" } } } } ```
Cursor / Windsurf / 其他 MCP 客户端 使用相同的 JSON 配置格式。将 command 指向 `npx cve-mcp` 或你的安装路径。
### 开始查询 ``` You: "What do you know about CVE-2024-3400?" ``` 就这样。剩下的交给 agent 处理即可。 ## AI 能力 ### 事件响应 ``` 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 → Shodan: 4 CPEs, internet-exposed → Nuclei: Detection template exists (critical) → Metasploit: Exploit module available (excellent rank) → "Critical. Weaponized — both Nuclei and MSF modules exist. PAN-OS GlobalProtect, versions < 10.2.9-h1. Patch immediately. CISA deadline: May 1." ``` ### 漏洞优先级排序 ``` 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." ``` ### 依赖审计 ``` 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+" ``` ### 威胁监控 ``` 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 深度解析 (v3.1 & v4.0) ``` You: "Break down this CVSS v4.0 vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" Agent: → cvss_parse {vector: "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"} → "CVSS v4.0 — Score: 9.3 (CRITICAL) Network attack, low complexity, no attack requirements. No privileges, no user interaction. Vulnerable system: full C/I/A impact. Subsequent systems: no impact." ``` ### ATT&CK 映射 ``` You: "Map CVE-2024-3400 to MITRE ATT&CK techniques" Agent: → cve_to_attack {cweIds: ["CWE-77"]} → "CWE-77 (Command Injection) maps to: T1059 — Command and Scripting Interpreter (Execution) T1190 — Exploit Public-Facing Application (Initial Access)" ``` ## 工具参考(共 41 个工具)
NVD (4) | 工具 | 描述 | |------|-------------| | `nvd_search` | 通过关键词、严重程度、CWE、日期范围搜索 CVE | | `nvd_get` | 获取完整的 CVE 详情(CVSS、CWE、CPE、参考链接) | | `nvd_recent` | 最近发布/修改的 CVE | | `cve_by_product` | 通过产品名称搜索 CVE(基于 CPE 关键词匹配) |
EPSS (2) | 工具 | 描述 | |------|-------------| | `epss_score` | 获取单个或多个 CVE 的 EPSS 利用概率 | | `epss_top` | 按利用概率排名靠前的 CVE |
KEV (3) | 工具 | 描述 | |------|-------------| | `kev_check` | 检查 CVE 是否在 CISA 已知被利用漏洞 (KEV) 目录中 | | `kev_search` | 通过供应商、产品或关键词搜索 KEV | | `kev_recent` | 最近添加的 KEV 条目 |
GHSA (2) | 工具 | 描述 | |------|-------------| | `ghsa_search` | 通过关键词、生态系统、严重程度搜索 GitHub 安全公告 | | `ghsa_get` | 通过 GHSA ID 或 CVE ID 获取公告详情 |
OSV (3) | 工具 | 描述 | |------|-------------| | `osv_query` | 查询特定包版本的漏洞 | | `osv_get` | 通过 OSV/GHSA/CVE ID 获取漏洞详情 | | `osv_batch` | 批量查询多个包 |
Exploit (1) | 工具 | 描述 | |------|-------------| | `exploit_search` | 搜索公开的 PoC exploit(GitHub 仓库) |
Shodan (3) | 工具 | 描述 | |------|-------------| | `shodan_cve` | 通过 Shodan CVEDB 查询 CVE(集成 EPSS、KEV、CPE,无需认证) | | `shodan_product` | 通过 Shodan 按产品/供应商名称查找 CVE | | `shodan_ip_vulns` | 获取某个 IP 地址的已知漏洞(InternetDB) |
VulnCheck (3) | 工具 | 描述 | |------|-------------| | `vulncheck_kev` | 扩展的 KEV 目录(比 CISA 多约 80% 的条目) | | `vulncheck_cpe` | 通过 CPE 字符串搜索 CVE | | `vulncheck_purl` | 通过 Package URL (purl) 搜索 CVE |
Vulners (2) | 工具 | 描述 | |------|-------------| | `vulners_lookup` | 从 Vulners 获取 CVE 详情(200+ 数据源,exploit 参考) | | `vulners_search` | 跨 Vulners 数据库进行全文漏洞搜索 |
Nuclei & Metasploit (2) | 工具 | 描述 | |------|-------------| | `nuclei_check` | 检查某个 CVE 是否存在对应的 Nuclei 检测模板 | | `msf_check` | 检查某个 CVE 是否存在对应的 Metasploit exploit 模块 |
CPE (2) | 工具 | 描述 | |------|-------------| | `cpe_search` | 通过关键词搜索 NVD CPE 字典 | | `cpe_match` | 获取特定 CVE 的 CPE 匹配结果 |
CIRCL (1) | 工具 | 描述 | |------|-------------| | `circl_cve` | CIRCL CVE 数据扩充(CAPEC、替代参考链接、影响向量) |
AttackerKB (1) | 工具 | 描述 | |------|-------------| | `attackerkb_assess` | 来自 AttackerKB 的社区评估(攻击者价值、可利用性) |
ATT&CK (1) | 工具 | 描述 | |------|-------------| | `cve_to_attack` | 将 CVE 的 CWE ID 映射到 MITRE ATT&CK 的技术与战术 |
CWE (4) | 工具 | 描述 | |------|-------------| | `cwe_lookup` | 通过 ID 查询或通过关键词搜索 CWE 弱点(静态数据库) | | `cwe_get` | 通过 MITRE API 获取完整的 CWE 详情(1000+ 个 CWE、缓解措施、示例) | | `cwe_hierarchy` | 通过 MITRE API 获取 CWE 的父/子层级结构 | | `cwe_top25` | MITRE CWE Top 25 最危险的软件弱点 |
CVSS (1) | 工具 | 描述 | |------|-------------| | `cvss_parse` | 解析并解释 CVSS v3.1 或 v4.0 的向量字符串并计算得分 |
Meta (6) | 工具 | 描述 | |------|-------------| | `cve_enrich` | 完整的数据扩充:并行获取 NVD + EPSS + KEV + GHSA + OSV + Shodan + Nuclei + MSF | `cve_prioritize` | 按风险对 CVE 进行排序(CVSS × EPSS × KEV × Exploit 乘数) | | `cve_trending` | 根据利用概率获取当前热门的 CVE | | `cve_compare` | 并排对比两个 CVE | | `cve_list_sources` | 列出全部 11 个数据源及其可用性 | | `cve_report` | 生成 Markdown 格式的漏洞报告 |
## 数据源 | 来源 | 认证 | 提供内容 | |--------|------|-----------------| | [NVD](https://nvd.nist.gov/) | 可选 `NVD_API_KEY` | CVE 详情、CVSS 评分、CWE 映射、受影响的 CPE 产品、参考链接 | | [EPSS](https://www.first.org/epss/) | 无 | 利用概率评分 (0-1) 及百分位排名 | | [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | 无 | 已知被利用的漏洞及其修复截止日期 | | [GitHub Advisory](https://github.com/advisories) | 可选 `GITHUB_TOKEN` | 开源安全公告、受影响的包、严重程度 | | [OSV](https://osv.dev/) | 无 | 跨越 16+ 个生态系统的包级漏洞数据 | | [Shodan CVEDB](https://cvedb.shodan.io/) | 无 | 查询 CVE(集成 EPSS/KEV/CPE)及 IP 漏洞扫描 | | [VulnCheck](https://vulncheck.com/) | 可选 `VULNCHECK_API_KEY` | 扩展的 KEV(比 CISA 多约 80% 条目),基于 CPE/PURL 的漏洞搜索 | | [Vulners](https://vulners.com/) | 可选 `VULNERS_API_KEY` | 跨越 200+ 来源的漏洞搜索,exploit 参考 | | [Nuclei Templates](https://github.com/projectdiscovery/nuclei-templates) | 无 | CVE 检测模板存在性检查(严重程度、标签) | | [Metasploit](https://github.com/rapid7/metasploit-framework) | 无 | Exploit 模块存在性检查(类型、排名、路径) | | [CIRCL](https://cve.circl.lu/) | 无 | 包含 CAPEC 映射、替代参考链接和影响向量的 CVE 数据扩充 | | [AttackerKB](https://attackerkb.com/) | 可选 `ATTACKERKB_API_KEY` | 社区评估(攻击者价值、可利用性评级) | | [MITRE ATT&CK](https://attack.mitre.org/) | 无 | CWE 到 ATT&CK 技术的映射(战术、技术) | | [MITRE CWE](https://cwe-api.mitre.org/) | 无 | 完整的 CWE 数据库(1000+ 个弱点、层级结构、缓解措施) | ### 风险评分公式 ``` Risk Score = CVSS Base Score × EPSS Score × KEV Multiplier × Exploit 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 Exploit Multiplier = 1.5 if Nuclei template OR Metasploit module exists, 1 otherwise ``` 这提供了一个实用的风险评分,综合平衡了严重程度 (CVSS)、现实世界中的被利用可能性 (EPSS)、已知的积极利用行为 (KEV) 以及武器化信号(公开的 exploit 工具)。 ## 架构 ``` src/ ├── index.ts Entry point + MCP stdio ├── types/ │ └── index.ts ToolDef, ToolContext, ToolResult, API types ├── protocol/ │ ├── tools.ts 41 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 ├── shodan/ │ └── index.ts Shodan CVEDB + InternetDB (zero-auth) ├── vulncheck/ │ └── index.ts VulnCheck KEV, CPE, PURL ├── vulners/ │ └── index.ts Vulners search + lookup ├── nuclei/ │ └── index.ts Nuclei template existence check ├── metasploit/ │ └── index.ts MSF module check (cached metadata) ├── cpe/ │ └── index.ts NVD CPE dictionary API ├── circl/ │ └── index.ts CIRCL CVE enrichment ├── attackerkb/ │ └── index.ts AttackerKB assessments ├── attack/ │ └── index.ts CWE → MITRE ATT&CK mapping ├── cwe/ │ └── index.ts CWE API (MITRE) + static fallback ├── cvss/ │ └── index.ts CVSS v3.1 + v4.0 parser + calculator ├── meta/ │ ├── enrich.ts Full CVE enrichment (8 sources parallel) │ ├── prioritize.ts Risk-based CVE ranking │ ├── trending.ts Trending CVEs by EPSS │ ├── compare.ts Side-by-side CVE comparison │ └── sources.ts 11 source health checks └── utils/ ├── rate-limiter.ts Queue-based rate limiter └── cache.ts TTL cache ``` **设计决策:** - **情报优先,而非审计** — 与 [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) 和 [github-security-mcp](https://github.com/badchars/github-security-mcp) 不同,这是一个数据工具。没有 CheckResult,也没有结果累积。每次查询都是独立且无状态的。 - **并行扩充** — `cve_enrich` 通过 `Promise.allSettled` 调用 8 个数据源。如果某个源发生宕机,其余源仍会正常返回数据。 - **武器化检测** — 检查 Nuclei 模板和 Metasploit 模块是否存在,以标记包含公开 exploit 工具的 CVE。 - **共享速率限制器** — 所有 NVD 模块共享一个 `RateLimiter` 实例(请求间隔 6 秒)以避免触发 429 错误。 - **KEV + MSF 缓存** — KEV 目录(约 1200 条记录)和 MSF 模块元数据(约 15MB)仅在首次加载,缓存 TTL 为 1 小时。 - **CWE 双模式** — 使用 MITRE CWE REST API 获取完整详情(1000+ 个 CWE),并在 API 无法访问时启用包含 40+ 条目的静态回退机制。 - **CVSS v3.1 + v4.0** — 根据向量前缀自动检测版本。V4.0 采用 MacroVector 评分方法。 - **ATT&CK 映射** — 使用静态的 CWE 到技术映射表(33 个 CWE 条目 → ATT&CK 技术)。无 API 调用。 - **2 个依赖项** — `@modelcontextprotocol/sdk` 和 `zod`。没有其他依赖。 ## 局限性 - 未配置 `NVD_API_KEY` 时,NVD API 的限制为每 30 秒 5 次请求。在生产环境中请务必设置此 key - 未配置 `GITHUB_TOKEN` 时,GitHub Advisory 搜索限制为每小时 60 次请求 - VulnCheck、Vulners 和 AttackerKB 需要 API key 才能使用全部功能 - Exploit 搜索使用 GitHub 仓库搜索,该功能有其自身的速率限制 - MSF 模块元数据(约 15MB)会在首次使用时加载 —— 初始执行 `msf_check` 调用会较慢 - CVSS v4.0 评分使用 MacroVector 近似算法(精确规范非常复杂) - ATT&CK 映射涵盖 33 个 CWE 条目 —— 不常见的 CWE 可能无法完成映射 - macOS / Linux(尚未对 Windows 进行测试) ## MCP Security Suite 的一部分 | 项目 | 领域 | 工具 | |---|---|---| | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | 基于浏览器的安全测试 | 39 个工具,Firefox,注入测试 | | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | 云安全 (AWS/Azure/GCP) | 38 个工具,60+ 项检查 | | [github-security-mcp](https://github.com/badchars/github-security-mcp) | GitHub 安全态势 | 39 个工具,45 项检查 | | **cve-mcp** | 漏洞情报 | 41 个工具,11 个数据源 |

仅用于授权的安全测试与评估。
在对系统进行测试之前,请务必确保已获得适当的授权。

MIT License • 使用 Bun + TypeScript 构建

标签:AI代理, LLM集成, MCP, XSS, 主机安全, 威胁情报, 实时处理, 密码管理, 开发者工具, 漏洞情报, 自动化攻击, 风险评分