
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 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `virustotal_lookup` | 对文件哈希、URL、域名或 IP 进行 70+ 防病毒引擎分析 | `VIRUSTOTAL_API_KEY` | `virustotal_lookup(hash="44d88612fea8a8f36de82e1278abb02f")` |
| `search_malware` | 在 MalwareBazaar 中按哈希、标签或签名搜索恶意软件样本 | `ABUSECH_AUTH_KEY`(可选) | `search_malware(tag="Emotet")` |
| `search_iocs` | 查询 ThreatFox 获取与恶意软件家族相关的入侵指标 | `ABUSECH_AUTH_KEY`(可选) | `search_iocs(malware="CobaltStrike")` |
| `check_ransomware` | 从 Ransomwhere 查找勒索软件支付地址和交易数据 | 免费 / 无需密钥 | `check_ransomware(address="bc1q...")` |
### DevSecOps(3 个工具)
| 工具 | 描述 | 需要 API 密钥 | 示例用法 |
|------|-------------|-----------------|---------------|
| `scan_dependencies` | 扫描包名和版本,根据 OSV.dev 查找已知漏洞 | 免费 / 无需密钥 | `scan_dependencies(ecosystem="PyPI", packages={"requests": "2.28.0"})` |
| `scan_github_advisories` | 按生态系统、包或严重性搜索 GitHub 安全公告 | `GITHUB_TOKEN`(可选) | `scan_github_advisories(ecosystem="pip", package="django")` |
| `urlscan_check` | 提交 URL 进行扫描,或从 URLScan.io 检索之前的扫描结果 | `URLSCAN_API_KEY` | `urlscan_check("https://suspicious-site.com")` |
---
## 📦 安装
### 先决条件
- **Python 3.10+**(推荐 3.11 或 3.12)
- **pip** 或 **uv** 包管理器
- **Git** 用于克隆仓库
- 一个可以访问环境变量的终端
### 分步设置```bash
# 1. Clone the repository
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
# 2. Create and activate a virtual environment
python -m venv venv
# macOS / Linux:
source venv/bin/activate
# Windows (PowerShell):
.\venv\Scripts\Activate.ps1
# Windows (CMD):
venv\Scripts\activate.bat
# 3. Install dependencies
pip install -e .
# 4. Copy and configure environment variables
cp .env.example .env
# Edit .env with your API keys (see API Keys Setup section below)
# 5. Verify the server starts
python -m cve_mcp.server
git clone https://github.com/mukul975/cve-mcp-server.git cd cve-mcp-server uv venv source .venv/bin/activate # or .venv\Scripts\activate on Windows uv pip install -e . cp .env.example .env
### 包含测试依赖项```bash
pip install -e ".[test]"
API 密钥按优先级组织——首先获取第一层密钥,以免费工具获得最大覆盖率,然后根据需要逐步添加第二层和第三层。
⚡ 零密钥启动: 八个工具无需任何 API 密钥即可工作——EPSS、CISA KEV、OSV.dev、MITRE ATT&CK、CWE 查询、CVSS 解析、Ransomwhere 和 NVD(速率降低)。您可以立即启动服务器使用,然后逐步添加密钥。
NVD_API_KEY=
GITHUB_TOKEN=
ABUSEIPDB_KEY= # https://www.abuseipdb.com/account/api VIRUSTOTAL_KEY= # https://www.virustotal.com/gui/join-us URLSCAN_KEY= # https://urlscan.io/user/signup SHODAN_KEY= # https://account.shodan.io/register
GREYNOISE_API_KEY= # https://viz.greynoise.io/signup
CIRCL_PDNS_USER= CIRCL_PDNS_PASS=
CACHE_DB_PATH= # defaults to ~/.cve-mcp/cache.db AUDIT_LOG_PATH= # defaults to ~/.cve-mcp/audit.log REQUEST_TIMEOUT=30 # HTTP timeout in seconds MAX_RETRIES=3 # retries on transient errors
### Claude Desktop配置
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json````json
{
"mcpServers": {
"cve-mcp": {
"command": "python",
"args": ["-m", "cve_mcp.server"],
"cwd": "/absolute/path/to/cve-mcp-server",
"env": {
"NVD_API_KEY": "your-key-here",
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx",
"ABUSEIPDB_KEY": "your-abuseipdb-key",
"GREYNOISE_API_KEY": "your-greynoise-key",
"SHODAN_KEY": "your-shodan-key"
}
}
}
}
⚠️ 重要提示: 始终使用绝对路径。更改配置后完全退出 Claude Desktop(Cmd+Q / Alt+F4)——仅重新加载无效。
claude mcp add cve-mcp -- python -m cve_mcp.server
claude mcp add cve-mcp -e NVD_API_KEY=your_key -e VULNCHECK_TOKEN=your_token -- python -m cve_mcp.server
claude mcp list
---
## 🚀 快速入门
### 步骤 1:安装(2分钟)```bash
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
python -m venv venv && source venv/bin/activate
pip install -e .
无需 .env 文件。将服务器添加到 Claude Desktop 或 Claude Code 后尝试:
"什么是 CVE-2021-44228?它是否被积极利用?"
Claude 将使用 lookup_cve(NVD)、get_epss_score(EPSS)和 check_kev(CISA KEV)——全部免费,无需密钥。
"扫描这些 Python 包是否存在漏洞:requests 2.28.0, flask 2.2.0, django 3.2.0"
echo 'NVD_API_KEY=your-key-here' > .env
在 [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) 申请免费 NVD 密钥 — 通过电子邮件即时获取,速率限制从 **每30秒5到50次请求** 提升。
### 第4步:全功率模式
一旦你添加了 Tier 1 和 Tier 2 密钥:
> **"计算 CVE-2024-3400 的风险评分并告诉我是否应立即修补。"**
---
## 💬 使用示例
### 场景1:"是否应立即修补 Log4Shell?"
> **你:** 分析 CVE-2021-44228 (Log4Shell) 是否需要立即修补。给出风险评分和你的建议。
Claude 在幕后协调多个工具:```
→ lookup_cve("CVE-2021-44228")
CVSS 3.1: 10.0 (CRITICAL) | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
→ get_epss_score("CVE-2021-44228")
EPSS: 0.97531 (97.5%) | Percentile: 99.99%
→ check_kev("CVE-2021-44228")
✅ IN CISA KEV — Added 2021-12-10 | Known ransomware use: Yes
→ check_poc_exists("CVE-2021-44228")
✅ WEAPONIZED — 300+ public PoC repositories found
→ calculate_risk_score("CVE-2021-44228")
Risk Score: 97/100 (CRITICAL) | Urgency: PATCH IMMEDIATELY
Claude的回应: "CVE-2021-44228 得分 97/100(严重)。Apache Log4j 中的远程代码执行,CVSS 10.0,97.5% EPSS 概率,已确认在 CISA KEV 中存在活跃利用,包括勒索软件活动,300 多个公开利用。立即修补。"
你: 扫描这些依赖:requests==2.28.0, flask==2.2.0, django==3.2.0, pillow==9.0.0, cryptography==37.0.0``` → scan_dependencies(ecosystem="PyPI", packages={...}) Found 12 vulnerabilities across 4 packages
**Claude 的响应:** "在你的包中发现了 **12 个漏洞**。**立即操作:** Django 3.2.0(3 个关键 CVE,包括 SQL 注入),Pillow 9.0.0(堆溢出),cryptography 37.0.0(OpenSSL 链)。升级到:django>=4.2.16,pillow>=10.3.0,cryptography>=42.0.0。"
### 场景 3:"调查可疑 IP"
> **你:** 调查可疑 IP 185.220.101.34 —— 是否恶意?```
→ check_ip_reputation("185.220.101.34")
AbuseIPDB Confidence: 100% | Reports: 4,832 | ISP: Tor Exit Node
→ check_ip_noise("185.220.101.34")
GreyNoise: MALICIOUS | Tags: [Tor Exit Node, Web Scanner]
CVEs targeted: CVE-2024-3400, CVE-2023-46805
→ shodan_host_lookup("185.220.101.34")
Open ports: 22, 80, 443, 9001 | OS: Linux
Claude的响应: "185.220.101.34是一个已知的Tor出口节点,被AbuseIPDB评为100%恶意,有4,832份滥用报告。GreyNoise确认正在主动扫描CVE-2024-3400(Palo Alto)和CVE-2023-46805(Ivanti)。建议:在防火墙上屏蔽。"
你: 为以下内容生成一份高管安全报告:CVE-2024-3400, CVE-2023-44487, CVE-2023-4966, CVE-2024-21887``` → compare_cves([...]) Compiles: NVD, EPSS, KEV, PoC availability, MITRE ATT&CK mapping Generates: Ranked risk table, remediation timeline, executive summary
---
## 📊 风险评分说明
`calculate_risk_score` 工具通过加权四个独立信号生成一个 **0 到 100 的综合风险评分**。
### 计算公式```
Risk Score = (CVSS × 0.20) + (EPSS × 0.35) + (KEV × 0.30) + (PoC × 0.15)
得分上限为100。
数值评分器是 scoring_version 1.0(在 triage_cve、calculate_risk_score 和 health_check 中暴露)。上述线性加权和是数值评分的 v1 默认值,有一个硬性覆盖:
triage_cve(depth="deep") 获得实验性的 SSVC v2 门控决策(CISA 部署者模型 → Act / Attend / Track* / Track),作为 0–100 数字的定性、可解释的替代方案。EPSS 获得最高权重(35%),因为它是实际利用的唯一最佳预测器——远优于单独的 CVSS。一个 CVSS 10.0 但 EPSS 0.01 的漏洞在理论上危险但实际上不太可能被利用。KEV 为 30% 是地面真相:确认的利用,而非预测。CVSS 为 20% 捕获了新 CVE 的严重性上下文(这些 CVE 的 EPSS 数据不足)。PoC 为 15% 反映了公开利用代码极大地加速了现实世界的攻击。
triage_cve 编排器 — 一个工具调用,同时分发到 NVD + EPSS + CISA KEV(对于 depth != "quick" 还包括公开 PoC 发现),计算综合风险评分,并返回清晰的报告。depth 为 quick / standard(默认)/ deep;deep 还会发出 SSVC v2 门控决策。triage_cve 内部自动使用的透明 NVD 回退)、CIRCL hashlookup 和 HIBP Pwned Passwords 范围 API。scoring_version — KEV 列表中的 CVE 始终为 CRITICAL(分数 ≥ 76);评分版本在 triage_cve 和 health_check 中报告。MCP_TRANSPORT=http 以在 HOST:PORT(默认 ,无状态)上提供可流式 HTTP,而非 stdio。附带一个 。pytest tests/ -v
pytest tests/test_validators.py tests/test_risk_scorer.py -v
pytest tests/ -v --cov=src/cve_mcp --cov-report=term-missing
### 使用 MCP Inspector 进行测试```bash
npx @modelcontextprotocol/inspector python -m cve_mcp.server
到 http://localhost:6274 打开 — 交互式测试每个工具,查看输入模式,并检查响应格式。
src/cve_mcp/ ├── server.py # FastMCP server — all 27 @mcp.tool() definitions ├── config.py # Environment config and API base URLs ├── models.py # Pydantic models (CVERecord, KEVEntry, EPSSScore, ...) ├── audit.py # Rotating audit log (50MB, 5 backups) ├── api/ │ ├── nvd_client.py # NVD REST API v2.0 │ ├── osv_client.py # OSV.dev package vulnerability API │ ├── epss_client.py # FIRST EPSS API │ ├── kev_client.py # CISA KEV catalog │ ├── ip_intel.py # AbuseIPDB + GreyNoise │ ├── domain_intel.py # crt.sh + CIRCL passive DNS │ ├── shodan_client.py # Shodan host intelligence │ ├── hash_intel.py # MalwareBazaar + VirusTotal │ ├── url_safety.py # URLScan.io │ ├── malware_intel.py # ThreatFox IOC lookup │ ├── ransomware_intel.py# Ransomwhere Bitcoin address lookup │ ├── exploit_intel.py # GitHub PoC/exploit search │ ├── vendor_advisory.py # MSRC + Red Hat + Ubuntu advisories │ ├── attack_mapping.py # MITRE ATT&CK STIX mapping │ ├── cve_timeline.py # CVE event timeline builder │ ├── dependency_scan.py # OSV-based dependency scanning │ ├── poc_checker.py # GitHub + Exploit-DB + Nuclei PoC search │ ├── report_generator.py# Vuln report + CVE comparison matrix │ └── rate_limiter.py # Token bucket rate limiter for NVD ├── cache/ │ └── sqlite_cache.py # Async SQLite cache with per-key TTL └── utils/ ├── validators.py # CVE ID normalization, IP/hash validation └── risk_scorer.py # Composite risk score computation
### 缓存策略
| 资源 | TTL |
|----------|-----|
| CVE 记录 (NVD) | 1 小时 |
| EPSS 评分 | 6 小时 |
| KEV 目录 | 1 小时 |
| IP/域名情报 | 1 小时 |
| Exploit-DB CSV | 24 小时 |
| ATT&CK STIX 数据 | 24 小时 |
| 勒索软件情报 | 24 小时 |
### 审计日志
每次工具调用都会记录到 `~/.cve-mcp/audit.log`:```json
{
"timestamp": "2026-04-14T10:23:45.123Z",
"tool": "lookup_cve",
"parameters": {"cve_id": "CVE-2024-3400"},
"duration_ms": 342,
"cache_hit": false,
"status": "ok"
}
API 密钥和响应负载绝不会写入审计日志。
所有网络情报工具在进行任何外部 API 调用之前,都会阻止私有和保留 IP 范围:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16(RFC 1918)127.0.0.0/8(回环),169.254.0.0/16(链路本地)::1, fc00::/7(IPv6 私有).env 已被 gitignore所有 XML 解析均使用 defusedxml,以防止 XML 炸弹攻击(十亿笑攻击、XXE 注入)。
pip install -e . python --version # must be 3.10+
**Claude Desktop 未显示锤子图标 (🔨)**
- 检查您的配置中是否存在 JSON 语法错误(不要有尾随逗号)
- 使用**绝对路径** — 相对路径会静默失败
- 完全退出 Claude Desktop (Cmd+Q / Alt+F4) 然后重新启动
### NVD 请求频率受限```bash
# Add your free NVD API key to .env
NVD_API_KEY=your-key-here
# https://nvd.nist.gov/developers/request-an-api-key
服务器会自动排队多余的请求,但如果你有一个密钥,则吞吐量可提升10倍。
curl -H "key: YOUR_KEY" https://api.greynoise.io/v3/ip/8.8.8.8
### Windows 编码问题```powershell
$env:PYTHONUTF8 = "1"
$env:PYTHONIOENCODING = "utf-8"
欢迎贡献。
在server.py中使用@mcp.tool()装饰器添加工具函数
在utils/validators.py中添加输入验证
在api/中实现API客户端
在tests/中添加测试
更新本README```python @mcp.tool() async def my_new_tool(param: str, ctx: Context = None) -> str: """ One-line description for Claude to know when to use this tool.
Args: param: Description of the parameter """ app = _get_app(ctx)
### 测试要求
- 所有新工具必须至少包含一个使用模拟响应的离线测试
- 风险评分变更必须包含公式验证测试用例
- 网络工具必须包含验证私有 IP 拦截的测试
- 所有测试必须通过:`pytest tests/ -v`
---
## 📄 许可证
MIT 许可证 — 详见 [LICENSE](https://github.com/mukul975/cve-mcp-server/blob/HEAD/LICENSE)。```
Copyright (c) 2025-2026 Mahipal Jangra (mukul975)
使用 🔐 由 Mahipal Jangra 构建 · 柏林,德国
将安全情报转化为对话。
| 环境变量 | 功能 | 获取方式 | 免费层限制 | 必需? |
|---|
NVD_API_KEY | NVD 查询速度提升10倍(每30秒50次请求 vs 5次) | 在 nvd.nist.gov 上申请 | 每30秒50次请求 | 可选但强烈推荐 |
GITHUB_TOKEN | GitHub 安全公告搜索 + 漏洞 PoC 搜索 | 在 github.com/settings/tokens 创建 PAT | 每小时5,000次请求 | 可选(无则60次/小时) |
| 环境变量 | 功能 | 获取方式 | 免费层限制 | 必需? |
|---|
ABUSEIPDB_KEY | IP 信誉查询 | 在 abuseipdb.com 注册 | 每天1,000次检查 | IP 工具必需 |
VIRUSTOTAL_KEY | 文件/URL/域名/IP 恶意软件扫描 | 在 virustotal.com 注册 | 每天500次查询,每分钟4次 | VT 工具必需 |
GREYNOISE_API_KEY | IP 噪声/扫描活动情报 | 在 viz.greynoise.io 注册 | 每周50次查询(社区版) | GreyNoise 工具必需 |
SHODAN_KEY | 主机/端口/服务侦察 | 在 account.shodan.io 注册 | 基本主机查询(免费层) | Shodan 工具必需 |
| 环境变量 | 功能 | 获取方式 | 免费层限制 | 必需? |
|---|
URLSCAN_KEY | URL 扫描和网站分析 | 在 urlscan.io 注册 | 每天5,000次公开扫描 | 可选 |
CIRCL_PDNS_USER | CIRCL 被动 DNS 查询 | 在 circl.lu 申请访问 | 仅合作伙伴访问 | 可选 |
CIRCL_PDNS_PASS | CIRCL 被动 DNS 认证 | 随 CIRCL 注册提供 | 仅合作伙伴访问 | 可选 |
| 组件 | 权重 | 捕获内容 |
|---|
| CVSS v3.1 基础分数 | 20% | 理论上最坏情况的严重性 |
| EPSS 概率 | 35% | 未来30天内被利用的统计可能性 |
| CISA KEV 状态 | 30% | 确认在野外的活跃利用 |
| PoC 可用性 | 15% | 公开的漏洞利用代码降低了攻击者的门槛 |
| 得分 | 标签 | 建议操作 |
|---|
| 0 – 25 | LOW | 计划在下一个维护窗口进行 |
| 26 – 50 | MEDIUM | 按 SLA 在 30 天内修补 |
| 51 – 75 | HIGH | 在 7 天内修补;上报给团队负责人 |
| 76 – 100 | CRITICAL | 在 24–48 小时内修补。 紧急变更窗口。 |
0.0.0.0:8000Dockerfilekev://catalog、epss://scores/{cve_id} 和 manifest://tool-hash(注册工具表面的 SHA-256 哈希);提示 patch_decision、compare_and_prioritize 和 dependency_triage。sampling/createMessage(Unit 42 MCP 采样攻击向量);新的出站路径通过 scheme/主机白名单控制。| # | 源 | 提供的数据 | 认证 | 速率限制(免费) |
|---|
| 1 | NVD | CVE 详情、CVSS、CWEs、CPEs | apiKey 标头(可选) | 5 请求/30秒(有密钥 50) |
| 2 | EPSS | 利用概率和百分位数 | 无 | 1,000 请求/分钟 |
| 3 | CISA KEV | 活跃利用的 CVE 目录 | 无 | 静态文件 |
| 4 | OSV.dev | 开源包漏洞 | 无 | 无公布限制 |
| 5 | GitHub 公告 | GHSA 公告、补丁、受影响版本 | Bearer 令牌 | 60/小时(有 PAT 5,000) |
| 6 | MITRE ATT&CK | TTPs、技术、缓解措施 | 无 | 无公布限制 |
| 7 | AbuseIPDB | IP 滥用置信度、报告、ISP、地理位置 | Key 标头 | 1,000 次检查/天 |
| 8 | GreyNoise | IP 噪音/扫描活动、分类 | key 标头 | 50 次查询/周 |
| 9 | Shodan | 开放端口、服务、横幅、CVE | key 查询参数 | 基本查询 |
| 10 | VirusTotal | 多引擎扫描结果、信誉 | x-apikey 标头 | 500/天, 4/分钟 |
| 11 | MalwareBazaar | 恶意软件样本、哈希、签名 | Auth-Key 标头 | 公平使用 |
| 12 | ThreatFox | 与恶意软件家族相关的 IOC | Auth-Key 标头 | 公平使用 |
| 13 | Ransomwhere | 勒索软件 BTC 地址和交易 | 无 | 无公布限制 |
| 14 | URLScan.io | URL 扫描、截图、DOM | API-Key 标头 | 5,000 次公共扫描/天 |
| 15 | CIRCL PDNS | 历史被动 DNS 记录 | HTTP 基本认证 | 合作伙伴访问 |
| 16 | GitHub 代码搜索 | 漏洞利用 PoC 仓库搜索 | Bearer 令牌 | 与 GHSA 限制共享 |
| 17 | Exploit-DB | 公共漏洞利用数据库 CSV | 无 | 无公布限制 |
| 18 | Nuclei 模板 | 社区检测模板 | 无 | 无公布限制 |
| 19 | MSRC | 微软安全公告 | 无 | 无公布限制 |
| 20 | Red Hat 安全 | Red Hat CVE 公告 | 无 | 无公布限制 |
| 21 | Ubuntu 安全 | Ubuntu CVE 追踪器 | 无 | 无公布限制 |
| 22 | VulnCheck NVD++ | NVD 模式 CVE 记录(透明 NVD 回退) | Bearer 令牌(免费社区) | 根据 VulnCheck 社区层级 |
| 23 | CIRCL hashlookup | 已知良好文件元数据(NSRL 等)、hashlookup:trust | 无 | 尽力而为 |
| 24 | HIBP Pwned Passwords | 通过 k-匿名范围 API 的泄露密码计数 | 无 | 无硬性限制 |