Vuln Triage Mcp

io.github.kimmawla由 GitHub 帳號 kimmawla 發布v0.1.0更新於 Nov 5, 2026

Tells your AI agent which vulnerabilities to fix first, using OSV.dev, FIRST EPSS, and CISA KEV.

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

本機 MCP 伺服器,結合 OSV.dev 公告、FIRST EPSS 利用機率與 CISA KEV 已知利用資訊,為漏洞排出修補優先順序。

可以做什麼
  • 查詢單一 CVE 或 GHSA 編號的原始公告細節
  • 依生態系、套件名稱與版本找出受影響的漏洞公告
  • 取得 EPSS 利用機率分數,並檢查是否列入 CISA KEV
  • 對漏洞進行分級,給出 critical、high、medium、low 或 unknown 等級、分數與推理說明
  • 回報部分結果、結果截斷、KEV 快取過期以及缺少的資料來源
適用情境
適合助理需要回答「先修哪個漏洞」「這個 CVE 是否已被實際利用」等問題的情況,也適合在單看嚴重程度不足以判斷風險時使用。查詢某個套件版本是否有已知漏洞時同樣有用。
執行需求
以 stdio 方式在本機執行,通常透過 uvx 啟動 PyPI 套件 vuln-triage-mcp。需要 Python 3.12 以上版本,並能連線至 OSV.dev、FIRST EPSS 與 CISA KEV 三個公開 API。不需要 API 金鑰或憑證。
安裝前請注意
公告文字來自第三方,被視為提示注入風險,會經過清理、限制長度並以不可信文字形式回傳。查詢為唯讀操作,但 EPSS 分數每日變動、KEV 快取可能過期,排序結果會隨時間改變。unknown 等級代表資料不足,並非低風險。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vuln Triage Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

vuln-triage-mcp

Tells your AI agent which vulnerabilities to fix first, using OSV.dev, FIRST EPSS, and CISA KEV.

[PyPI version] [Python 3.12+] [License: MIT] [Tests]

Why this exists

Two or three sentences. CVSS alone ranks by severity, not by likelihood of exploitation. This server adds exploit probability (EPSS) and known exploitation (KEV), and shows its reasoning. Example: a CVSS 9.8 nobody exploits ranks below a CVSS 8.8 that is being exploited in the wild.

Quick start

Claude Code

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

Claude Desktop / other clients

JSON config snippet using uvx. Requires: Python 3.12+, no API keys.

Try it

Three example prompts and what to expect:

  • "Which is most urgent: CVE-2021-44228, CVE-2023-4863, CVE-2019-10744?"
  • "Is lodash 4.17.15 vulnerable? What should I upgrade to?"
  • "Is CVE-XXXX actively exploited?"

Tools

ToolArgsUse it whenPrefer another when
lookup_vulnerabilityvuln_idraw advisory details for one CVE/GHSAuser wants prioritization -> triage_vulnerability
find_vulns_for_packagename, ecosystem, version="""what vulns affect package X (version Y)"user already has an ID
get_epss_scorecve_idexploit-probability onlyuser wants overall priority -> triage_vulnerability
check_known_exploitedcve_id"is this exploited in the wild" (CISA KEV)same
triage_vulnerabilityvuln_idany "how urgent / what should I fix first" questionraw details only -> lookup_vulnerability

How scoring works

  • Formula: CVSS (base) x 40 + EPSS x 35 + KEV +25; KEV-listed floors at 80
  • Buckets: see the table below
  • Missing data: component omitted, named in reasoning, lowers confidence
  • Link to docs/scoring-spec.md
BucketWhen
criticalscore >= 80, or listed in CISA KEV (always floored to 80, whatever the confidence)
highscore 60-79
mediumscore 40-59
lowscore < 40
unknownnot KEV-listed, and either no CVSS severity or low confidence (0-1 of 3 signals). Too little data to classify; the score is still returned, and reasoning names what is missing. Not a low-risk verdict.

unknown takes precedence over high, medium, and low; it never applies to a KEV-listed vulnerability.

Reliability and limits

  • Partial results: if EPSS or KEV fails, the result names the missing source
  • Truncation: truncated, found_count vs returned_count, ranking_note
  • Stale KEV cache: stale and catalog_fetched_at
  • Timeouts and retry policy (one line)
  • Package queries return at most 50 advisories, sorted by severity

Security

  • Advisory text is untrusted third-party content (prompt injection vector): sanitized, length-capped, returned under untrusted_text, and flagged to the model in the server instructions
  • Input validation on all IDs and ecosystems
  • No credentials required or stored; read-only calls to three public APIs
  • Reporting vulnerabilities in this project: SECURITY.md or email

Evaluation

Golden set: 17 entries (16 CVEs, 1 GHSA) with expected buckets, confidence, and ordering, recorded 10/21/2026. Result: 17/17 match on the recorded fixtures (uv run pytest tests/test_golden.py), and 17/17 against the live APIs on 10/21/2026 (uv run pytest -m live tests/test_golden.py). EPSS drifts daily, so the live run can diverge over time; re-record the fixtures with uv run python scripts/record_golden_fixtures.py when the golden set or scoring spec changes.

Data sources and attribution

OSV.dev, FIRST EPSS (cite per their usage terms), CISA KEV. Not affiliated with any of them.

Development

uv sync, uv run pytest, running the Inspector, live-test marker.

License

MIT

來源:README.md,提交 9545145

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:軟體包安裝失敗。

版本歷史

1
  1. v0.1.0最新Oct 21, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分