cve-mcp
v0.2.0
Published
CVE/vulnerability intelligence MCP server — 41 tools, 11 sources: NVD, EPSS, KEV, GHSA, OSV, Shodan, VulnCheck, Vulners, Nuclei, Metasploit, CIRCL, ATT&CK
Maintainers
Readme
问题所在
漏洞情报分散在多个数据库中。NVD 有 CVE 详情。EPSS 告诉你被利用的概率。CISA KEV 跟踪正在被积极利用的漏洞。GitHub Advisory 覆盖开源包。OSV 将漏洞映射到特定的包版本。没有任何单一工具能聚合它们,也没有能与 AI 代理配合使用的。
传统工作流:
在 NVD 搜索 CVE 详情 → 操作笨重的 Web 界面
在 EPSS 检查利用风险 → 独立的 API,独立的格式
查询 CISA KEV 状态 → 手动下载 JSON 源
搜索 GitHub 安全公告 → 又一个不同的界面
在 OSV 查询包影响 → 不同的 API,不同的架构
关联所有数据 → 复制粘贴到电子表格
──────────────────────────────────
总计:每个 CVE 30 多分钟,批量分类需要更长时间cve-mcp 通过 Model Context Protocol 为您的 AI 代理提供 23 个工具。代理并行查询所有五个来源,关联数据,计算风险评分,并准确告诉您什么是重要的。
使用 cve-mcp:
你:"按实际利用风险对这 10 个 CVE 进行优先级排序"
代理:→ 从 NVD 获取 CVSS 评分
→ 获取每个 CVE 的 EPSS 利用概率
→ 检查 CISA KEV 是否正在被积极利用
→ 交叉引用 GitHub 安全公告查找补丁
→ "3 个是严重级别:CVE-2024-3400(EPSS 97%,在 KEV 中),
CVE-2023-44487(HTTP/2 快速重置,EPSS 96%),
CVE-2021-44228(Log4Shell,EPSS 97%,在 KEV 中)。
以下是补丁和受影响版本……"有何不同
现有工具给你原始数据。cve-mcp 让你的 AI 代理能够对漏洞进行推理分析。
快速开始
选项 1:npx(无需安装)
npx cve-mcp选项 2:克隆
git clone https://github.com/badchars/cve-mcp.git
cd cve-mcp
bun install环境变量(可选)
# 将 NVD 速率限制从 5 提升到每 30 秒 50 个请求
export NVD_API_KEY=your-nvd-api-key
# 启用 GitHub Advisory 搜索(60 → 5000 请求/小时)
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx两者都是可选的。服务器在没有它们的情况下也能工作,只是速率限制较低。
连接到您的 AI 代理
# 使用 npx
claude mcp add cve-mcp -- npx cve-mcp
# 使用本地克隆
claude mcp add cve-mcp -- bun run /path/to/cve-mcp/src/index.ts添加到 ~/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"
}
}
}
}相同的 JSON 配置格式。将命令指向 npx cve-mcp 或您的安装路径。
开始查询
你:"你知道关于 CVE-2024-3400 的什么信息?"就是这样。代理会处理剩下的事情。
AI 能做什么
事件响应
你:"我们被 CVE-2024-3400 攻击了。给我所有信息。"
代理:→ cve_enrich {cveId: "CVE-2024-3400"}
→ NVD:PAN-OS 命令注入,CVSS 10.0
→ EPSS:97.2% 利用概率
→ KEV:2024-04-12 添加,截止日期 2024-05-01
→ GHSA:无开源安全公告(商业产品)
→ exploit_search:GitHub 上 23 个 PoC 仓库
→ "严重。正在野外被积极利用。
PAN-OS GlobalProtect,版本 < 10.2.9-h1。
立即修补。CISA 截止日期:5 月 1 日。"漏洞优先级排序
你:"对我们扫描出的这些 CVE 进行优先级排序:CVE-2021-44228、CVE-2024-3400、
CVE-2023-44487、CVE-2024-21762、CVE-2023-4966"
代理:→ cve_prioritize {cves: [...]}
→ 按 CVSS × EPSS × KEV 乘数排序
→ "#1:CVE-2024-3400(风险:19.44,CVSS 10.0,EPSS 97%,KEV)
#2:CVE-2021-44228(风险:19.40,CVSS 10.0,EPSS 97%,KEV)
#3:CVE-2023-4966(风险:19.10,CVSS 9.4,EPSS 97%,KEV)
全部 5 个都在 CISA KEV 中——立即全部修补。"依赖审计
你:"检查 lodash 4.17.20 和 django 3.2.0 是否有已知漏洞"
代理:→ osv_batch {queries: [
{package: "lodash", version: "4.17.20", ecosystem: "npm"},
{package: "django", version: "3.2.0", ecosystem: "PyPI"}
]}
→ "lodash 4.17.20:3 个漏洞(原型污染)
django 3.2.0:12 个漏洞(SQL 注入、XSS)
升级 lodash 到 4.17.21+,django 到 4.2+"威胁监控
你:"当前最可能被利用的 CVE 有哪些?"
代理:→ cve_trending {limit: 10, minEpss: 0.9}
→ "按利用概率排名前 10:
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 深度分析
你:"分解这个 CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
代理:→ cvss_parse {vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}
→ "评分:10.0(严重)
网络攻击向量,无需权限,无需用户交互。
范围变更——可以影响其他组件。
完全攻陷:机密性、完整性和可用性。"工具参考(23 个工具)
| 工具 | 描述 |
|------|------|
| nvd_search | 按关键字、严重性、CWE、日期范围搜索 CVE |
| nvd_get | 获取完整 CVE 详情(CVSS、CWE、CPE、参考链接) |
| nvd_recent | 最近发布/修改的 CVE |
| cve_by_product | 按产品名称搜索 CVE(CPE 关键字匹配) |
| 工具 | 描述 |
|------|------|
| epss_score | 一个或多个 CVE 的 EPSS 利用概率 |
| epss_top | 按利用概率排名的顶级 CVE |
| 工具 | 描述 |
|------|------|
| kev_check | 检查 CVE 是否在 CISA 已知被利用漏洞目录中 |
| kev_search | 按供应商、产品或关键字搜索 KEV |
| kev_recent | 最近添加的 KEV 条目 |
| 工具 | 描述 |
|------|------|
| ghsa_search | 按关键字、生态系统、严重性搜索 GitHub 安全公告 |
| ghsa_get | 通过 GHSA ID 或 CVE ID 获取公告详情 |
| 工具 | 描述 |
|------|------|
| osv_query | 查询特定包版本的漏洞 |
| osv_get | 通过 OSV/GHSA/CVE ID 获取漏洞详情 |
| osv_batch | 批量查询多个包 |
| 工具 | 描述 |
|------|------|
| exploit_search | 搜索公开的 PoC 漏洞利用(GitHub 仓库) |
| 工具 | 描述 |
|------|------|
| cwe_lookup | 通过 ID 查找 CWE 弱点或按关键字搜索 |
| 工具 | 描述 |
|------|------|
| cvss_parse | 解析并解释 CVSS v3.1 向量字符串及评分计算 |
| 工具 | 描述 |
|------|------|
| cve_enrich | 完整丰富:NVD + EPSS + KEV + GHSA + OSV 并行查询 |
| cve_prioritize | 按风险排序 CVE(CVSS × EPSS × KEV 乘数) |
| cve_trending | 按利用概率排列的当前热门 CVE |
| cve_compare | 两个 CVE 的并排比较 |
| cve_list_sources | 列出所有数据来源及其可用性 |
| cve_report | 生成 Markdown 漏洞报告 |
数据来源
| 来源 | 认证 | 提供的数据 |
|------|------|-----------|
| NVD | 可选 NVD_API_KEY | CVE 详情、CVSS 评分、CWE 映射、CPE 受影响产品、参考链接 |
| EPSS | 无需 | 利用概率评分(0-1)和百分位排名 |
| CISA KEV | 无需 | 已知被利用漏洞及修复截止日期 |
| GitHub Advisory | 可选 GITHUB_TOKEN | 开源安全公告、受影响包、严重性 |
| OSV | 无需 | 跨 16+ 生态系统的包级漏洞数据 |
风险评分公式
风险评分 = CVSS 基础评分 × EPSS 评分 × KEV 乘数
其中:
CVSS 基础评分 = 0-10(来自 NVD 的严重性)
EPSS 评分 = 0-1(来自 FIRST 的利用概率)
KEV 乘数 = 如果在 CISA KEV 中为 2,否则为 1这提供了一个实用的风险评分,平衡了严重性(CVSS)、现实世界利用可能性(EPSS)和已知主动利用(KEV)。
架构
src/
├── index.ts 入口点 + MCP stdio
├── types/
│ └── index.ts ToolDef、ToolContext、ToolResult、API 类型
├── protocol/
│ ├── tools.ts 23 个工具定义(Zod schemas)
│ └── mcp-server.ts MCP 服务器 + stdio 传输
├── nvd/
│ ├── index.ts NVD API v2 — 搜索、获取、最近
│ └── cpe.ts 产品/CPE 搜索
├── epss/
│ └── index.ts EPSS — 评分、排名
├── kev/
│ └── index.ts KEV — 检查、搜索、最近(已缓存)
├── ghsa/
│ └── index.ts GitHub Advisory — 搜索、获取
├── osv/
│ └── index.ts OSV — 查询、获取、批量
├── exploit/
│ └── index.ts 通过 GitHub 仓库搜索 PoC
├── cwe/
│ └── index.ts CWE 数据库(内嵌 40+ 条目)
├── cvss/
│ └── index.ts CVSS v3.1 解析器 + 评分计算器
├── meta/
│ ├── enrich.ts 完整 CVE 丰富(所有来源)
│ ├── prioritize.ts 基于风险的 CVE 排序
│ ├── trending.ts 按 EPSS 排列的热门 CVE
│ ├── compare.ts CVE 并排比较
│ └── sources.ts 数据源健康检查
└── utils/
├── rate-limiter.ts 基于队列的速率限制器(NVD)
└── cache.ts TTL 缓存(NVD 结果)设计决策:
- 情报,而非审计 — 与 cloud-audit-mcp 和 github-security-mcp 不同,这是一个数据工具。没有 CheckResult,没有发现累积。每个查询都是独立且无状态的。
- 并行丰富 —
cve_enrich通过Promise.allSettled调用所有 5 个来源。如果一个来源不可用,其余的仍然返回数据。 - 共享速率限制器 — 所有 NVD 模块共享一个
RateLimiter实例(请求间隔 6 秒)以避免 429 错误。 - KEV 缓存 — 完整的 KEV 目录(约 1200 条,约 200KB)一次性加载并缓存在内存中,TTL 为 1 小时。
- NVD 结果缓存 — 单个 CVE 查询以 10 分钟 TTL 缓存,避免丰富过程中的冗余 API 调用。
- 内嵌 CWE 数据库 — 来自 OWASP/MITRE 的 40+ 顶级 CWE 作为静态数据内嵌。无需外部 API。
- 完整 CVSS 计算器 — 本地实现 CVSS v3.1 基础评分计算算法。解析任何向量字符串并解释每个指标。
- 2 个依赖 —
@modelcontextprotocol/sdk和zod。没有其他。
限制
- 不使用
NVD_API_KEY的 NVD API 限制为每 30 秒 5 个请求。生产环境请设置密钥 - 不使用
GITHUB_TOKEN的 GitHub Advisory 搜索限制为每小时 60 个请求 - Exploit 搜索使用 GitHub 仓库搜索,有其自身的速率限制
- CVSS 解析器仅支持 v3.1(v2 和 v4 向量不被解析,但 NVD 会返回 v2 评分)
- CWE 数据库为内嵌式(40+ 条目),非完整版(MITRE 完整数据库中有 1000+ 条目)
- macOS / Linux(Windows 未测试)
MCP 安全套件的一部分
| 项目 | 领域 | 工具 | |------|------|------| | hackbrowser-mcp | 基于浏览器的安全测试 | 39 个工具,Firefox,注入测试 | | cloud-audit-mcp | 云安全(AWS/Azure/GCP) | 38 个工具,60+ 检查 | | github-security-mcp | GitHub 安全态势 | 39 个工具,45 项检查 | | cve-mcp | 漏洞情报 | 23 个工具,5 个来源 |
