
本番グレードのMCPサーバー。Claudeに21のAPIにわたる27のセキュリティインテリジェンスツールを提供 — CVE検索、EPSSスコアリング、CISA KEV、MITRE ATT&CK、Shodan、VirusTotalなど。

AI搭載のセキュリティインテリジェンスをあなたの手元に — 28のツール + ワンコールの triage_cve オーケストレーター、24のデータソース、1つのプロトコル。
Claudeをフルスペクトラムのセキュリティアナリストに変える、本番グレードの Model Context Protocol (MCP) サーバーです。NVD、EPSS、CISA KEV、Shodan、VirusTotal、GreyNoiseをまたいで15以上のブラウザタブを切り替える代わりに、Claudeに1つの質問をするだけで、相関付けられたインテリジェンスを数秒で得られます。Python、FastMCP、httpx、aiosqlite、Pydantic v2、defusedxmlで構築されています。
問題: 1件のCVEをトリアージするには、NVDでCVSSスコア、EPSSで悪用可能性、CISA KEVで積極的悪用の有無、GitHubでパッチ、VirusTotalでマルウェアとの関連を照会し、その後すべてを頭の中で相関付ける必要があります。50件のCVEであれば、丸1日を失うことになります。
解決策: CVE MCP Serverは、Claudeに24のAPIにわたる28のセキュリティツールへの直接アクセスを提供します — 最前面には triage_cve ワンコールオーケストレーターを配置。「CVE-2024-3400にパッチを当てるべきですか?」と質問すると、Claudeは関連するすべてのソースに並行して展開し、複合リスクスコア(CISA KEVによるハードオーバーライド付き)を計算し、証拠付きの優先順位付けされた推奨事項を提供します。
私は、セキュリティ専門家、開発者、エンタープライズチームがエージェントAI(MCPサーバー、ツール呼び出し、ガバナンス、人間参加型ワークフロー)に対して実際にどの程度準備ができているかを測定する、グローバルな学術研究を実施しています。
このリポジトリを利用されている場合、あなたの回答は非常に価値のあるデータポイントになります。
📋 アンケートに回答する(10分): Survey
┌─────────────────────────────────────────────────────────────────────┐ │ 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からCVSSスコア、CWE、影響を受ける製品、参照情報、タイムラインを含む詳細なCVEレコードを取得 | 無料 / キー不要(キー推奨) | `lookup_cve("CVE-2024-3400")` |
| `search_cves` | キーワード、製品名、深刻度、日付範囲でNVDのCVEを検索 | 無料 / キー不要(キー推奨) | `search_cves(keyword="Apache Log4j", severity="CRITICAL")` |
| `get_epss_score` | 1つ以上のCVEについてEPSS悪用確率(0–1)とパーセンタイルを取得 | 無料 / キー不要 | `get_epss_score("CVE-2024-3400")` |
| `check_kev_status` | CVEがCISAの既知の悪用済み脆弱性(KEV)カタログに掲載されているか確認 | 無料 / キー不要 | `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でCommon Weakness Enumerationの詳細を検索 | 無料 / キー不要 | `get_cwe_info("CWE-79")` |
| `get_cve_references` | CVEのすべての参照リンクを抽出して分類(パッチ、アドバイザリ、エクスプロイト) | 無料 / キー不要(キー推奨) | `get_cve_references("CVE-2023-44487")` |
| `bulk_cve_lookup` | 並列エンリッチメントにより、1回の呼び出しで最大20件のCVE詳細をバッチ取得 | 無料 / キー不要(キー推奨) | `bulk_cve_lookup(["CVE-2024-3400", "CVE-2023-44487"])` |
### エクスプロイト&攻撃インテリジェンス(4ツール)
| ツール | 説明 | APIキー要件 | 使用例 |
|------|-------------|-----------------|---------------|
| `search_exploits` | GitHubで公開されている概念実証(PoC)エクスプロイトとエクスプロイトコードリポジトリを検索 | `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` | 1つ以上の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` | マルウェアファミリーに関連する侵害インジケーター(IOC)を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 Security Advisoriesを検索 | `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 キーは優先度順に整理されています。まず Tier 1 のキーを取得して、無料ツールで最大のカバレッジを確保し、必要に応じて Tier 2 と Tier 3 を段階的に追加してください。
⚡ ゼロキースタート: EPSS、CISA KEV、OSV.dev、MITRE ATT&CK、CWE ルックアップ、CVSS パース、Ransomwhere、NVD(低レート)の 8 つのツールは API キーなしで動作します。サーバーをすぐに使い始め、キーを段階的に追加できます。
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、EPSS 確率 97.5%、ランサムウェアキャンペーンを含む 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(SQLインジェクションを含む重大なCVE 3件)、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で4,832件の悪用報告に基づき、100%悪意があると評価されています。 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` ツールは、4つの独立したシグナルを重み付けして **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 デフォルトであり、1つのハードオーバーライドがあります:
Act / Attend / Track* / Track)は、0〜100 の数値に代わる定性的で説明可能な選択肢として、triage_cve(depth="deep") 経由で利用できます。EPSS が最も高い重み(35%)を得ているのは、実際の悪用を予測する唯一の最良の指標だからです。CVSS 単独よりもはるかに優れています。CVSS 10.0 でも EPSS 0.01 であれば、理論上は危険ですが実際には可能性が低いです。KEV の30% はグラウンドトゥルース(正解データ)です。予測ではなく、悪用の確認済み情報です。CVSS の20% は、EPSS データが不十分な新しい CVE の深刻度コンテキストを捉えます。PoC の15% は、公開されたエクスプロイトが現実世界の攻撃を劇的に加速させることを反映しています。
triage_cve オーケストレーター — 1回のツール呼び出しで、NVD + EPSS + CISA KEV(+ depth != "quick" の場合の公開 PoC 検出)を並行してファンアウトし、複合リスクスコアを計算して、クリーンなレポートを返します。depth は quick / standard(デフォルト)/ deep のいずれかです。deep はさらに SSVC v2 ゲート判定を出力します。triage_cve 内で自動的に使用される透過的な NVD フォールバック)、CIRCL hashlookup、HIBP Pwned Passwords range API です。scoring_version — KEV リスト掲載の CVE は常に CRITICAL(スコア ≥ 76)です。スコアリングバージョンは triage_cve と health_check で報告されます。MCP_TRANSPORT=http を設定すると、stdio の代わりに HOST:PORT(デフォルト 、ステートレス)で streamable-HTTP を提供します。 が同梱されています。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 爆弾攻撃(billion laughs、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)
### テスト要件
- すべての新しいツールには、モックされたレスポンスを使用したオフラインテストが少なくとも1つ必要です
- リスクスコアの変更には、計算式の検証テストケースを含める必要があります
- ネットワークツールには、プライベート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 が構築 · ベルリン、ドイツ
セキュリティインテリジェンスを会話に変える。
| ENV 変数 | 有効になる機能 | 取得方法 | 無料枠の制限 | 必須? |
|---|
NVD_API_KEY | NVD ルックアップを 10 倍高速化(50 req/30s 対 5) | nvd.nist.gov でリクエスト | 30秒あたり50リクエスト | 任意(強く推奨) |
GITHUB_TOKEN | GitHub Advisory の検索 + エクスプロイト PoC の検索 | github.com/settings/tokens で PAT を作成 | 1時間あたり5,000リクエスト | 任意(未設定時は 60/時) |
| ENV 変数 | 有効になる機能 | 取得方法 | 無料枠の制限 | 必須? |
|---|
ABUSEIPDB_KEY | IP レピュテーションのルックアップ | abuseipdb.com で登録 | 1日あたり1,000回のチェック | IP ツールには必須 |
VIRUSTOTAL_KEY | ファイル/URL/ドメイン/IP のマルウェアスキャン | virustotal.com でサインアップ | 1日あたり500件のルックアップ、毎分4件 | VT ツールには必須 |
GREYNOISE_API_KEY | IP ノイズ/スキャン活動のインテリジェンス | viz.greynoise.io でサインアップ | 週50クエリ(コミュニティ) | GreyNoise ツールには必須 |
SHODAN_KEY | ホスト/ポート/サービスのリコネサンス | account.shodan.io で登録 | 基本的なホストルックアップ(無料枠) | Shodan ツールには必須 |
| ENV 変数 | 有効になる機能 | 取得方法 | 無料枠の制限 | 必須? |
|---|
URLSCAN_KEY | URL スキャンとウェブサイト分析 | urlscan.io でサインアップ | 1日あたり5,000件のパブリックスキャン | 任意 |
CIRCL_PDNS_USER | CIRCL Passive DNS ルックアップ | circl.lu でアクセスをリクエスト | パートナーアクセスのみ | 任意 |
CIRCL_PDNS_PASS | CIRCL Passive DNS 認証 | CIRCL 登録時に提供 | パートナーアクセスのみ | 任意 |
| コンポーネント | 重み | 内容 |
|---|
| CVSS v3.1 Base Score | 20% | 理論上の最悪ケースの深刻度 |
| EPSS Probability | 35% | 今後30日以内に悪用される統計的な可能性 |
| CISA KEV Status | 30% | 野外で活発に悪用されているとの確認済み情報 |
| PoC Availability | 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 サンプリング攻撃ベクトル)。新しいアウトバウンドパスはスキーム/ホスト許可リストで制限されています。| # | ソース | 提供データ | 認証 | レート制限(無料) |
|---|
| 1 | NVD | CVE の詳細、CVSS、CWE、CPE | apiKey ヘッダー(任意) | 5 req/30秒(キー使用時 50) |
| 2 | EPSS | 悪用確率とパーセンタイル | なし | 1,000 req/分 |
| 3 | CISA KEV | 実際に悪用されている CVE カタログ | なし | 静的ファイル |
| 4 | OSV.dev | オープンソースパッケージの脆弱性 | なし | 公表されている制限なし |
| 5 | GitHub Advisories | GHSA アドバイザリ、パッチ、影響を受けるバージョン | Bearer トークン | 60/時間(PAT 使用時 5,000) |
| 6 | MITRE ATT&CK | TTP、戦術、緩和策 | なし | 公表されている制限なし |
| 7 | AbuseIPDB | IP の悪用信頼度、レポート、ISP、地理位置情報 | Key ヘッダー | 1,000回/日 |
| 8 | GreyNoise | IP のノイズ/スキャン活動、分類 | key ヘッダー | 50回/週 |
| 9 | Shodan | オープンポート、サービス、バナー、CVE | key クエリパラメータ | 基本的なルックアップ |
| 10 | VirusTotal | マルチ AV スキャン結果、評価(レピュテーション) | 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 Basic 認証 | パートナーアクセス |
| 16 | GitHub Code Search | エクスプロイト PoC リポジトリの検索 | Bearer トークン | GHSA と共通の制限 |
| 17 | Exploit-DB | 公開エクスプロイトデータベース CSV | なし | 公表されている制限なし |
| 18 | Nuclei Templates | コミュニティ検出テンプレート | なし | 公表されている制限なし |
| 19 | MSRC | Microsoft セキュリティアドバイザリ | なし | 公表されている制限なし |
| 20 | Red Hat Security | Red Hat CVE アドバイザリ | なし | 公表されている制限なし |
| 21 | Ubuntu Security | Ubuntu CVE トラッカー | なし | 公表されている制限なし |
| 22 | VulnCheck NVD++ | NVD スキーマの CVE レコード(透過的な NVD フォールバック) | Bearer トークン(無料 Community) | VulnCheck Community ティアによる |
| 23 | CIRCL hashlookup | 既知の正常なファイルメタデータ(NSRL など)、hashlookup:trust | なし | ベストエフォート |
| 24 | HIBP Pwned Passwords | k-匿名性レンジ API による侵害済みパスワードの件数 | なし | 厳密な制限なし |