io.github.kimmawla/vuln-triage-mcp
PYPI · VULN-TRIAGE-MCP
Tells your AI agent which vulnerabilities to fix first, using OSV.dev, FIRST EPSS, and CISA KEV.
Available components
Last scanned (1 day ago)
Scores higher than 61% of PyPI servers
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs uv_build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 23 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 13 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1300 tokens (~260/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 21 Oct 26 51
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed pypi/vuln-triage-mcp@0.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | uv_build |
Background: Why install scripts are a supply-chain risk →
Dependencies 23 packages
| Packages resolved | 23 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_known_exploited Check Known Exploited ~184
Whether a CVE is in CISA's Known Exploited Vulnerabilities (KEV) catalog, i.e. confirmed exploited in the wild, with the date added and CISA's required action. Use when: the user asks "is this being exploited in the wild" / "is it in KEV". Prefer another tool when: the user wants an overall priority or "should I fix this"; use triage_vulnerability. Needs a CVE ID; for a GHSA ID, use triage_vulnerability. status is "listed" or "not_listed". stale=true means the catalog could not be refreshed and may be out of date. If the catalog cannot be loaded at all, this returns an error; that means KEV status is unknown, not "not listed".
| Name | Type | Req | Description |
|---|---|---|---|
| cve_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
find_vulns_for_package Find Vulns For Package ~318
List known vulnerabilities (OSV.dev) affecting a package, or one version of it. Use when: the user asks "what vulnerabilities affect package X" or "is version Y of X vulnerable". ecosystem is one of PyPI, npm, Go, Maven, crates.io, RubyGems, NuGet, Packagist. Prefer another tool when: the user already has a CVE or GHSA ID; use lookup_vulnerability for details or triage_vulnerability for priority. Pass version whenever the user knows it (from a lockfile, requirements, error message, etc.): it narrows results sharply to advisories affecting that version. An empty version returns advisories for all versions ever released, which can be large and is mostly irrelevant to a specific install. Results are sorted by CVSS base score (highest first, unscored last) and capped at 50. found_count is the number of unique advisories collected; returned_count is the number in vulns. Before concluding a package has few or no known vulnerabilities, check truncated and compare found_count with returned_count. truncated=true means the list is incomplete; truncation_reason says why (the 50 cap, or OSV pagination stopping early: page or time limit, a failed page, or "pagination did not advance"), and ranking_note warns that the ranking covers only what was collected.
| Name | Type | Req | Description |
|---|---|---|---|
| ecosystem | string | yes | – |
| name | string | yes | – |
| version | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_epss_score Get Epss Score ~139
FIRST EPSS exploit-prediction score for one CVE: the probability (0-1) of exploitation activity in the next 30 days, and its percentile among all CVEs. Use when: the user asks only about exploit probability / likelihood for a CVE. Prefer another tool when: the user wants an overall priority or "should I fix this"; use triage_vulnerability. Needs a CVE ID; for a GHSA ID, use triage_vulnerability. epss and percentile are null (found=false) when EPSS has no score for the CVE.
| Name | Type | Req | Description |
|---|---|---|---|
| cve_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
lookup_vulnerability Lookup Vulnerability ~120
Raw advisory details for one vulnerability from OSV.dev: summary, details, CVSS, CVE aliases, fixed versions, and references. Use when: the user wants the facts about one specific CVE-YYYY-NNNN or GHSA-xxxx-xxxx-xxxx ID, without a priority judgment. Prefer another tool when: the user asks how urgent it is or what to fix first; use triage_vulnerability, which includes these details plus EPSS, KEV, and a score.
| Name | Type | Req | Description |
|---|---|---|---|
| vuln_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
triage_vulnerability Triage Vulnerability ~425
Prioritize one vulnerability: OSV advisory, CVSS base score, EPSS exploit probability, CISA KEV status, and a 0-100 priority score with bucket, confidence, and reasoning. Also reports whether a fixed version exists. Use when: any "how urgent is this", "should I fix this", or "what should I fix first" question about a CVE-YYYY-NNNN or GHSA-xxxx-xxxx-xxxx ID. Prefer another tool when: the user wants raw advisory details only; use lookup_vulnerability. To find IDs for a package, use find_vulns_for_package first. If EPSS or KEV is unavailable, the result is still returned with partial=true and the unavailable source named in missing_sources; KEV status is then "unknown", which does not mean "not listed". A GHSA ID without a CVE alias cannot be checked in EPSS or KEV, and missing_sources says so. A CVE with no OSV.dev record (common for vendor/closed-source products such as Windows or Exchange) is still triaged from EPSS and KEV: advisory is null, there is no CVSS component, and missing_sources includes "osv". If EPSS and KEV don't know the CVE either, reasoning says the ID may not exist or may be too new; check it for typos. A GHSA ID with no OSV record, or an OSV timeout or server error, returns an error. bucket is critical, high, medium, low, or unknown. KEV-listed vulnerabilities are always critical (score at least 80). Otherwise bucket is "unknown" when there is no CVSS severity or confidence is low: too little data to classify, and reasoning names what is missing. "unknown" means insufficient data. Never report it to the user as low risk or safe; say the priority could not be determined and what data is missing.
| Name | Type | Req | Description |
|---|---|---|---|
| vuln_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| advisory | – | yes | – |
| epss | – | yes | – |
| fix_available | – | yes | – |
| kev | object | yes | – |
| missing_sources | array | yes | – |
| partial | boolean | yes | – |
| priority | object | yes | – |
| vuln_id | string | yes | – |
No examples provided.
How do I install the io.github.kimmawla/vuln-triage-mcp server?
io.github.kimmawla/vuln-triage-mcp runs locally as a PyPI package, launched with uvx vuln-triage-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · vuln-triage-mcp
claude mcp add kimmawla-vuln-triage-mcp -- uvx vuln-triage-mcp
What is the io.github.kimmawla/vuln-triage-mcp server?
io.github.kimmawla/vuln-triage-mcp is listed in the public MCP registry as io.github.kimmawla/vuln-triage-mcp. Tells your AI agent which vulnerabilities to fix first, using OSV.dev, FIRST EPSS, and CISA KEV. This page covers its PyPI package (vuln-triage-mcp).
Is the io.github.kimmawla/vuln-triage-mcp server safe to use?
io.github.kimmawla/vuln-triage-mcp scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.kimmawla/vuln-triage-mcp server expose?
io.github.kimmawla/vuln-triage-mcp exposes 5 tools: lookup_vulnerability, find_vulns_for_package, get_epss_score, check_known_exploited, triage_vulnerability. Their descriptions and schemas cost roughly 1,186 tokens of context every time the server is loaded.
Is the io.github.kimmawla/vuln-triage-mcp server still maintained?
io.github.kimmawla/vuln-triage-mcp is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.kimmawla/vuln-triage-mcp server under?
io.github.kimmawla/vuln-triage-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.