0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CVE MCP Server 実践 — Claude Code を27ツールのセキュリティアナリストにするハンズオン

0
Posted at

はじめに

脆弱性対応では、CVE 番号を見てから「これは本当に危険なのか」「実際に悪用されているのか」「自分の依存パッケージは影響を受けるのか」を判断するまでに、NVD・CISA KEV・EPSS・GitHub Advisory といった 複数のデータソースを手作業で行き来する 必要があります。タブを 10 個開いて突き合わせる、あの作業です。

CVE MCP Server は、これらの脆弱性インテリジェンス源を MCP(Model Context Protocol) 経由で Claude Code に束ねて渡す OSS です。「この CVE は危険か、優先度を付けて」と自然言語で聞くだけで、Claude が複数 API を横断して相関を取り、回答してくれます。

この記事では、API キーなしで動く最小構成 から始めて、Claude Code に組み込み、実際に脆弱性トリアージを動かすところまでをハンズオンで解説します。

この記事で学べること

  • CVE MCP Server を Claude Code に組み込む手順(claude mcp add 一発)
  • API キーを 1 つも用意せずに使える 8 ツールの範囲
  • 依存パッケージスキャン・CVE 優先度付けを Claude に任せる実例
  • どの外部 API がどのツールに紐づくか(キーの追加判断材料)

対象読者

  • 脆弱性対応・DevSecOps を効率化したいエンジニア
  • Claude Code に MCP サーバーを組み込んでみたい方
  • AI に「動くツール」を渡してセキュリティ調査を任せたい方

前提環境

  • Python 3.10 以上(推奨 3.11 / 3.12)
  • Claude Code がインストール済み
  • OS: macOS / Linux(Windows は設定ファイルのパスが異なります)

TL;DR

  • CVE MCP Server は 27 ツール・21 データソース を 1 つの MCP サーバーに束ねた OSS(Apache 2.0 ライセンス)。
  • 8 ツールは API キー不要(EPSS・CISA KEV・OSV.dev・MITRE ATT&CK・CWE・CVSS 解析・Ransomwhere・NVD 低レート)で、まずここから試せます。
  • Claude Code への組み込みは claude mcp add cve-mcp -- python -m cve_mcp.server の 1 行。
  • scan_dependenciesrequirements.txt を渡せば、優先度付きのアップグレード推奨が 1 プロンプトで返ります。

CVE MCP Server とは

MCP は、Claude のような LLM に「外部ツール・データソース」を標準化された方法で接続するためのプロトコルです。CVE MCP Server はその MCP サーバー実装で、27 tools, 21 data sources, one protocol を掲げています。

ツールは大きく 6 カテゴリに分かれています。

カテゴリ ツール数 代表的なツール
コア脆弱性インテリジェンス 8 lookup_cve / get_epss_score / check_kev_status
エクスプロイト・攻撃インテリジェンス 4 search_exploits / get_mitre_techniques
リスク・レポート 4 calculate_risk_score / prioritize_cves
ネットワークインテリジェンス 4 lookup_ip_reputation / shodan_host_lookup
脅威インテリジェンス 4 virustotal_lookup / search_iocs
DevSecOps 3 scan_dependencies / scan_github_advisories

ポイントは、1 つの自然言語クエリで複数ツールが連鎖的に呼ばれる ことです。例えば「CVE-2026-XXXX のリスクを評価して」と聞くと、Claude が lookup_cve(詳細取得)→ get_epss_score(悪用確率)→ check_kev_status(実際に悪用されているか)→ calculate_risk_score(合成スコア)を順に呼び、相関した結論を返します。

用語の補足

  • EPSS(Exploit Prediction Scoring System): FIRST が公開する「今後 30 日でその脆弱性が悪用される確率」のスコア。CVSS(深刻度)と違い「実際に攻撃されやすいか」を表します。
  • CISA KEV(Known Exploited Vulnerabilities): 米 CISA が「実際に悪用が確認された」脆弱性をまとめたカタログ。ここに載っている=最優先で対応すべき、の強いシグナルです。
  • OSV.dev: Google が運営するオープンソース脆弱性データベース。パッケージ単位で影響を判定できます。

セットアップ

ステップ1: インストール

リポジトリをクローンして、仮想環境にインストールします。

# リポジトリをクローン
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server

# 仮想環境を作成・有効化(macOS / Linux)
python -m venv venv
source venv/bin/activate

# 編集可能インストール
pip install -e .

# 環境ファイルを用意(キーは後で足せる)
cp .env.example .env

主要な依存ライブラリは FastMCP(MCP 実装フレームワーク)・httpx(非同期 HTTP)・aiosqlite(非同期 SQLite キャッシュ)・Pydantic v2defusedxml(XML 爆弾対策)です。キャッシュを挟むため、同じ CVE への問い合わせは 2 回目以降が高速になります。

ステップ2: Claude Code に登録

CVE MCP Server を Claude Code の MCP サーバーとして登録します。この時点では API キーは不要 です。

# 最小構成(キーなし)
claude mcp add cve-mcp -- python -m cve_mcp.server

# 登録できたか確認
claude mcp list

cve-mcp が一覧に表示されれば成功です。cwd が必要な場合は、claude mcp add をクローンしたディレクトリ内で実行するか、後述の絶対パス指定を使います。

ステップ3(任意): Claude Desktop に登録

Claude Desktop で使う場合は設定ファイルを直接編集します。

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.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"
      }
    }
  }
}

cwd には クローンした絶対パス を指定します。env は不要なら空のままで構いません。

API キーなしで何ができるか

このツールの嬉しい点は、8 ツールが API キーゼロで動く ことです。README によれば、キーなしで使えるのは次の範囲です。

機能 対応ツール データソース
悪用確率スコア get_epss_score EPSS(FIRST)
悪用確認済みか check_kev_status CISA KEV
依存パッケージ脆弱性 scan_dependencies OSV.dev
攻撃手法マッピング get_mitre_techniques MITRE ATT&CK
弱点分類 get_cwe_info CWE
深刻度ベクター解析 get_cvss_details CVSS v3.1
ランサム関連 check_ransomware Ransomwhere
CVE 詳細(低レート) lookup_cve NVD(キーなしは 5 req/30s)

つまり、「脆弱性のトリアージ(優先度付け)」という最も頻度の高い作業は、キーなしで完結します。NVD はキーなしだと 5 req/30s に制限されますが、無料の NVD API キーを足せば 50 req/30s に上がります。

ハンズオン: Claude に脆弱性トリアージを任せる

例1: 単一 CVE のリスク評価

Claude Code でこう聞きます。

CVE-2024-3094(XZ Utils のバックドア)について、
EPSS スコアと CISA KEV 掲載の有無を調べて、対応優先度を判断して。

Claude は lookup_cve で詳細を取得し、get_epss_scorecheck_kev_status を呼んで、根拠付きで優先度を判断します。XZ Utils バックドアは CVSS 10.0 ですが、サプライチェーン攻撃が早期に発見され実際の悪用(in the wild)には至らなかったため、執筆時点では CISA KEV に 未掲載 です。つまり「CVSS は最高だが KEV 未掲載」となり、深刻度(CVSS)だけで最緊急と即断せず、KEV・EPSS で補正する ことの重要性を示す好例になります。人間が 3 つのサイトを開いて突き合わせる作業を 1 プロンプトに畳めます。

例2: 依存パッケージの一括スキャン

DevSecOps で一番効くのがこれです。プロジェクトの requirements.txt を渡します。

このリポジトリの requirements.txt をスキャンして、
既知の脆弱性があるパッケージを重大度の高い順に並べ、
アップグレード推奨バージョンを教えて。

scan_dependencies(OSV.dev)が走り、優先度付きのアップグレード推奨が 1 回の応答 で返ります。CI に組み込む前の手元チェックや、レビュー時の「この PR で危ない依存を入れていないか」の確認に向いています。

例3: 複数 CVE の一括優先度付け

脆弱性スキャナの出力(CVE のリスト)を貼り付けて、こう頼みます。

次の CVE リストを bulk で調べて、EPSS と KEV を踏まえて
対応すべき順に並べ替えて。上位5件は理由も添えて。

bulk_cve_lookup(最大 20 件を並列取得)と prioritize_cves が組み合わさり、「CVSS は高いが実際には悪用されていないもの」を後ろに回す といった、現実的な優先度付けが得られます。深刻度(CVSS)だけでは過剰対応になりがちな部分を、EPSS・KEV で補正できるのがこのツールの肝です。

ハマりポイント

ポイント1: python コマンドが Python 3.10 未満を指している

claude mcp add 後にサーバーが起動しない場合、まず python --version を確認します。3.10 未満なら python3.12 のように明示するか、仮想環境を有効化した状態のパスを使います。claude mcp add cve-mcp -- /absolute/path/to/venv/bin/python -m cve_mcp.server のように venv の Python を絶対パス指定すると確実です。

ポイント2: NVD のレート制限に当たる

キーなしの NVD は 5 req/30s と厳しめです。大量の CVE を一度に投げると待たされるので、まずは少数で試し、頻繁に使うなら無料の NVD_API_KEY を取得して claude mcp add cve-mcp -e NVD_API_KEY=your_key -- python -m cve_mcp.server で渡します。

ポイント3: ネットワーク系ツールはキー必須

shodan_host_lookupvirustotal_lookuplookup_ip_reputation は各サービスの API キーがないと動きません。これらは「必要になったときに、そのツールが使うキーだけ足す」運用が現実的です。キーと無料枠の対応は次の通りです。

環境変数 サービス 無料枠
NVD_API_KEY NVD 50 req/30s
GITHUB_TOKEN GitHub Advisory / PoC 検索 5,000 req/h
ABUSEIPDB_KEY AbuseIPDB(IP 評判) 1,000 checks/day
VIRUSTOTAL_KEY VirusTotal 500 lookups/day
GREYNOISE_API_KEY GreyNoise 50 queries/week
SHODAN_KEY Shodan 基本ホストルックアップ

まとめ

CVE MCP Server は、バラバラだった脆弱性インテリジェンス源を MCP 経由で Claude Code に束ね、「自然言語で聞くだけで複数ソースを相関させたトリアージが返る」 状態を作ってくれる OSS です。

  • まずは git clonepip install -e .claude mcp add の 3 ステップで、キーなしの 8 ツール から試せます。
  • DevSecOps なら scan_dependencies での依存スキャン、運用なら prioritize_cves での優先度付けが即戦力です。
  • 深掘りが必要になったら、そのツールが使う API キーだけを足していけば OK です。

脆弱性対応で「タブを 10 個開く」作業に心当たりがある方は、まずキーなし構成で組み込んでみてください。Apache 2.0 ライセンスなので、自社のワークフローに合わせてフォーク・拡張するのも容易です。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?