mcpField
V
vuln-triage-mcp

vuln-triage-mcp

ローカル
github.com/kimmawlaセキュリティ01 週間前に更新

vuln-triage-mcp について

vuln-triage-mcpは、修正する脆弱性の優先順位を決めるAIエージェント向けMCPサーバーです。CVSS、FIRST EPSS、CISA KEVを組み合わせ、スコアの根拠や不足データも示します。

主な機能

  1. 01CVEとGHSAのアドバイザリー検索
  2. 02パッケージに影響する脆弱性の検索
  3. 03EPSSの悪用確率スコア取得
  4. 04CISA KEVの既知の悪用記録を確認
  5. 05優先度の採点と根拠の提示

活用シーン

  1. 01複数の脆弱性の修正順を比較
  2. 02パッケージのバージョンに影響する脆弱性を確認
  3. 03脆弱性が実際に悪用されているか確認

MCP 対応

MCPクライアントに、脆弱性検索、パッケージ検索、EPSS・KEV確認、トリアージのツールを提供します。データソースはOSV.dev、FIRST EPSS、CISA KEVです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"kimmawla-vuln-triage": {
"command": "uvx",
"args": [
"vuln-triage-mcp"
]
}
}
}
起動コマンドuvx vuln-triage-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypivuln-triage-mcp0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

vuln-triage-mcp

OSV.dev、FIRST EPSS、CISA KEV を利用して、どの脆弱性を優先して修正すべきかを AI エージェントに知らせます。

PyPI version Python 3.12+ License: MIT Tests

このプロジェクトの目的

2、3文で説明してください。CVSS だけでは深刻度に基づいて順位付けされ、悪用される可能性は考慮されません。 このサーバーは、悪用確率(EPSS)と既知の悪用状況(KEV)を加味し、その判断理由を示します。 例:誰にも悪用されていない CVSS 9.8 の脆弱性は、実際に悪用されている CVSS 8.8 の脆弱性より下位になります。

クイックスタート

Claude Code

claude mcp add vuln-triage -- uvx vuln-triage-mcp

Claude Desktop / その他のクライアント

uvx を使用する JSON 設定のスニペットです。 必要なもの:Python 3.12 以降。API キーは不要です。

試してみる

プロンプトの例と期待される結果:

  • 「CVE-2021-44228、CVE-2023-4863、CVE-2019-10744 のうち、最も緊急性が高いのはどれですか?」
  • 「lodash 4.17.15 に脆弱性はありますか? どのバージョンにアップグレードすべきですか?」
  • 「CVE-XXXX は現在、実際に悪用されていますか?」

ツール

ツール引数使用する場面別のツールを優先する場面
lookup_vulnerabilityvuln_id1 件の CVE/GHSA のアドバイザリー詳細を確認したい場合ユーザーが優先順位付けを求めている -> triage_vulnerability
find_vulns_for_packagename, ecosystem, version=""「パッケージ X(バージョン Y)に影響する脆弱性は何ですか」という場合ユーザーがすでに ID を指定している場合
get_epss_scorecve_id悪用確率だけを確認したい場合ユーザーが全体的な優先度を知りたい -> triage_vulnerability
check_known_exploitedcve_id「この脆弱性は実際に悪用されていますか」(CISA KEV)と尋ねられた場合同上
triage_vulnerabilityvuln_id「緊急性はどの程度か/最初に何を修正すべきか」という質問全般詳細のみを求めている -> lookup_vulnerability

スコアの仕組み

  • 計算式:CVSS(基本値)x 40 + EPSS x 35 + KEV +25。KEV に掲載されている場合は 80 が下限です
  • 区分:下の表を参照してください
  • データ不足:該当する要素は省略され、不足しているデータは reasoning に記載され、confidence は低下します
  • ドキュメントへのリンク:docs/scoring-spec.md
区分条件
criticalスコア >= 80、または CISA KEV に掲載されている(確信度にかかわらず、常に 80 が下限です)
highスコア 60-79
mediumスコア 40-59
lowスコア < 40
unknownKEV に掲載されておらず、CVSS の深刻度がないか、確信度が低い(3 つのシグナルのうち 0~1 件)。分類するにはデータが不十分ですが、スコアは返され、不足している情報は reasoning に記載されます。リスクが低いという判定ではありません。

unknown は high、medium、low より優先されます。KEV に掲載された脆弱性には適用されません。

信頼性と制限事項

  • 部分的な結果:EPSS または KEV の取得に失敗した場合、不足しているソースが結果に示されます
  • 結果の切り詰め:truncated、found_count と returned_count の比較、ranking_note
  • KEV キャッシュの古さ:stale と catalog_fetched_at
  • タイムアウトと再試行ポリシー(1 行)
  • パッケージのクエリでは、最大 50 件のアドバイザリーが深刻度順に返されます

セキュリティ

  • アドバイザリーのテキストは信頼できないサードパーティーのコンテンツです(プロンプトインジェクションの要因になり得ます)。 サニタイズされ、長さが制限されたうえで untrusted_text として返され、サーバーの指示によってモデルにその旨が通知されます
  • すべての ID とエコシステムに入力検証を実施します
  • 認証情報は不要で、保存もされません。3 つの公開 API に対する読み取り専用の呼び出しのみを行います
  • このプロジェクトの脆弱性の報告先:SECURITY.md またはメール

評価

ゴールデンセット:期待される区分、確信度、順序を記録した 17 件(CVE 16 件、GHSA 1 件)。記録日:10/21/2026。 結果:記録済みのフィクスチャでは 17/17 件が一致(uv run pytest tests/test_golden.py)。また、10/21/2026 のライブ API に対しても 17/17 件が一致(uv run pytest -m live tests/test_golden.py)。EPSS は毎日変動するため、時間の経過とともにライブ実行の結果が異なる場合があります。ゴールデンセットまたはスコアリング仕様に変更があった場合は、uv run python scripts/record_golden_fixtures.py でフィクスチャを再記録してください。

データソースと帰属表示

OSV.dev、FIRST EPSS(利用規約に従って引用)、CISA KEV。いずれとも提携していません。

開発

uv sync、uv run pytest、Inspector の実行、ライブテスト用マーカー。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。