
AI 驱动的安全情报触手可及——28 个工具 + 一键 triage_cve 编排器,24 个数据源,一个协议。
一个生产级别的模型上下文协议(MCP)服务器,将 Claude 变成全能的安全分析师。无需在 NVD、EPSS、CISA KEV、Shodan、VirusTotal 和 GreyNoise 之间切换 15 个以上的浏览器标签页,只需向 Claude 提出一个问题,即可在数秒内获得关联情报。基于 Python、FastMCP、httpx、aiosqlite、Pydantic v2 和 defusedxml 构建。
问题所在: 对单个 CVE 进行分诊意味着要查询 NVD 获取 CVSS 分数、EPSS 获取利用概率、CISA KEV 获取活跃利用状态、GitHub 获取补丁、VirusTotal 获取恶意软件关联——然后再进行人工关联。对于 50 个 CVE,这需要整整一天的时间。
解决方案: CVE MCP 服务器让 Claude 能够直接访问 28 个安全工具,覆盖 24 个 API——并且由 triage_cve 一键编排器统一调度。只需问“我们是否需要修补 CVE-2024-3400?”,Claude 就会并行查询所有相关源,计算综合风险评分(包含 CISA KEV 硬覆盖),并提供带有证据的优先修复建议。
我正在开展一项全球学术研究,衡量安全专业人员、开发者和企业团队对智能体 AI(包括 MCP 服务器、工具调用、治理和人机协同工作流)的实际准备程度。
如果你正在使用此仓库,你的回答将是一个非常有价值的数据点。
📋 参与调查(10 分钟): 调查问卷
┌─────────────────────────────────────────────────────────────────────┐ │ Claude Desktop / Claude Code │ │ (MCP Client via stdio) │ └──────────────────────────────┬──────────────────────────────────────┘ │ Model Context Protocol (stdio) ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ CVE MCP Server (Python) │ │ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ 27 MCP │ │ Composite │ │ SQLite Cache │ │ │ │ Tools │ │ Risk Engine │ │ + Audit Log │ │ │ └──────┬──────┘ └──────┬───────┘ └───────┬───────┘ │ │ │ │ │ │ │ ┌──────┴────────────────┴───────────────────┴──────┐ │ │ │ Async HTTP Client (httpx) │ │ │ │ Rate Limiter · Response Cache │ │ │ └──────────────────────┬───────────────────────────┘ │ └─────────────────────────┼───────────────────────────────────────────┘ │ HTTPS (outbound only) ┌───────────────┼───────────────────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ VULNERABILITY│ │ NETWORK │ │ THREAT │ │ INTELLIGENCE │ │ INTELLIGENCE │ │ INTELLIGENCE │ ├──────────────┤ ├──────────────┤ ├──────────────┤ │ NVD API 2.0 │ │ AbuseIPDB │ │ VirusTotal │ │ EPSS / FIRST │ │ GreyNoise v3 │ │ MalwareBazaar│ │ CISA KEV │ │ Shodan │ │ ThreatFox │ │ OSV.dev │ │ CIRCL PDNS │ │ Ransomwhere │ │ GitHub GHSA │ │ │ │ AlienVault │ │ MITRE ATT&CK │ │ │ │ URLScan.io │ └──────────────┘ └──────────────┘ └──────────────┘
所有流量均为 **出站 HTTPS 仅** — 不打开任何入站端口。API 密钥从环境变量加载,且从不记录。私有/内部 IP 地址被所有查询工具屏蔽。
---
## 🔍 工具目录(28 个工具)
### ⭐ 编排(v0.2.0)— 从这里开始
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `triage_cve` | 一键分类,并发展开 NVD + EPSS + CISA KEV(对于 `depth != "quick"` 还包括公开 PoC),计算复合风险评分并执行 KEV 硬覆盖,当 NIST NVD 被限流时回退到 VulnCheck NVD++,并在 `depth="deep"` 时输出 SSVC v2 门控决策 | 免费 / 无需密钥(建议使用密钥) | `triage_cve("CVE-2021-44228", depth="deep")` |
> **也通过 MCP 原语暴露** — 资源:`kev://catalog`、`epss://scores/{cve_id}`、`manifest://tool-hash`(已注册工具面的 SHA-256,用于防篡改检测)。提示:`patch_decision`、`compare_and_prioritize`、`dependency_triage`。
### 核心漏洞情报(8 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `lookup_cve` | 从 NVD 获取详细 CVE 记录,包括 CVSS 分数、CWE、受影响产品、参考信息和时间线 | 免费 / 无需密钥(建议使用密钥) | `lookup_cve("CVE-2024-3400")` |
| `search_cves` | 按关键字、产品名称、严重性或日期范围在 NVD 中搜索 CVE | 免费 / 无需密钥(建议使用密钥) | `search_cves(keyword="Apache Log4j", severity="CRITICAL")` |
| `get_epss_score` | 获取一个或多个 CVE 的 EPSS 利用概率(0–1)和百分位数 | 免费 / 无需密钥 | `get_epss_score("CVE-2024-3400")` |
| `check_kev_status` | 检查某个 CVE 是否出现在 CISA 的已知被利用漏洞目录中 | 免费 / 无需密钥 | `check_kev_status("CVE-2021-44228")` |
| `get_cvss_details` | 解析并解释 CVSS v3.1 向量字符串,提供每个指标的详细分解 | 免费 / 无需密钥 | `get_cvss_details("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H")` |
| `get_cwe_info` | 从嵌入式数据库中按 CWE ID 查找常见弱点枚举详细信息 | 免费 / 无需密钥 | `get_cwe_info("CWE-79")` |
| `get_cve_references` | 提取并分类某个 CVE 的所有参考链接(补丁、公告、利用代码) | 免费 / 无需密钥(建议使用密钥) | `get_cve_references("CVE-2023-44487")` |
| `bulk_cve_lookup` | 批量获取最多 20 个 CVE 的详细信息,单次调用并行富集 | 免费 / 无需密钥(建议使用密钥) | `bulk_cve_lookup(["CVE-2024-3400", "CVE-2023-44487"])` |
### 利用与攻击情报(4 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `search_exploits` | 在 GitHub 上搜索公开的概念验证利用和利用代码仓库 | `GITHUB_TOKEN`(可选) | `search_exploits("CVE-2024-3400")` |
| `get_mitre_techniques` | 将 CVE 或 CWE 映射到相关的 MITRE ATT&CK 技术、战术和缓解措施 | 免费 / 无需密钥 | `get_mitre_techniques("CVE-2021-44228")` |
| `check_poc_availability` | 确定某个 CVE 是否存在已知的概念验证代码,跨多个来源检查 | `GITHUB_TOKEN`(可选) | `check_poc_availability("CVE-2024-3400")` |
| `get_attack_patterns` | 检索与 CWE 或 CVE 相关的 CAPEC 攻击模式详情 | 免费 / 无需密钥 | `get_attack_patterns("CWE-89")` |
### 阶段 3:高级风险与报告(4 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `calculate_risk_score` | 使用 CVSS、EPSS、KEV 状态和 PoC 可用性计算 0–100 的复合风险评分 | 免费 / 无需密钥(建议使用密钥) | `calculate_risk_score("CVE-2024-3400")` |
| `generate_risk_report` | 为一个或多个 CVE 生成格式化的执行安全报告,附带建议 | 免费 / 无需密钥(建议使用密钥) | `generate_risk_report(["CVE-2024-3400", "CVE-2023-44487"])` |
| `prioritize_cves` | 按复合风险评分对 CVE 列表进行排序,用于分类优先级 | 免费 / 无需密钥(建议使用密钥) | `prioritize_cves(["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])` |
| `get_trending_cves` | 基于高 EPSS 分数和近期 KEV 添加获取热门 CVE | 免费 / 无需密钥 | `get_trending_cves(days=7, min_epss=0.5)` |
### 网络情报(4 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `lookup_ip_reputation` | 通过 AbuseIPDB 检查 IP 地址滥用历史和置信度分数 | `ABUSEIPDB_API_KEY` | `lookup_ip_reputation("185.220.101.34")` |
| `check_ip_noise` | 查询 GreyNoise 获取 IP 扫描/攻击活动、分类和关联的 CVE | `GREYNOISE_API_KEY` | `check_ip_noise("185.220.101.34")` |
| `shodan_host_lookup` | 通过 Shodan 获取某个 IP 的开放端口、服务、横幅和漏洞 | `SHODAN_API_KEY` | `shodan_host_lookup("8.8.8.8")` |
| `passive_dns_lookup` | 从 CIRCL Passive DNS 检索域名的历史 DNS 解析数据 | `CIRCL_PDNS_USER` + `CIRCL_PDNS_PASSWORD` | `passive_dns_lookup("example.com")` |
### 威胁情报(4 个工具)