# 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.

- Trust score: 51/100 (low)
- Change this week: −15
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `vuln-triage-mcp`: 51/100 (this document), [markdown](https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp.md), [page](https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp)

## Channel facts

- Registry: `pypi`
- Package: `vuln-triage-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs uv_build at install time, a recognised build step with no custom scripting around it.
  - 1 of 23 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 14 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**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.

## Install

### 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.

### Claude

```bash
claude mcp add kimmawla-vuln-triage-mcp -- uvx vuln-triage-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "kimmawla-vuln-triage-mcp": {
      "command": "uvx",
      "args": [
        "vuln-triage-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "kimmawla-vuln-triage-mcp": {
      "command": "uvx",
      "args": [
        "vuln-triage-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add kimmawla-vuln-triage-mcp -- uvx vuln-triage-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kimmawla-vuln-triage-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "vuln-triage-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add kimmawla-vuln-triage-mcp --command uvx --arg vuln-triage-mcp
```

### Hermes

```yaml
mcp_servers:
  kimmawla-vuln-triage-mcp:
    command: "uvx"
    args: ["vuln-triage-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "kimmawla-vuln-triage-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "vuln-triage-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add kimmawla-vuln-triage-mcp -t stdio -c uvx -a vuln-triage-mcp
```

### Other

```json
{
  "mcpServers": {
    "kimmawla-vuln-triage-mcp": {
      "command": "uvx",
      "args": [
        "vuln-triage-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 51, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-29 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-21 (score 51)

First indexed and scored.

## MCP tools (5)

### `lookup_vulnerability` (~120 tokens)

Lookup Vulnerability

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.

Input parameters:

- `vuln_id` (string, required)

### `find_vulns_for_package` (~318 tokens)

Find Vulns For Package

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.

Input parameters:

- `ecosystem` (string, required)
- `name` (string, required)
- `version` (string)

### `get_epss_score` (~139 tokens)

Get Epss Score

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.

Input parameters:

- `cve_id` (string, required)

### `check_known_exploited` (~184 tokens)

Check Known Exploited

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".

Input parameters:

- `cve_id` (string, required)

### `triage_vulnerability` (~425 tokens)

Triage Vulnerability

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.

Input parameters:

- `vuln_id` (string, required)

Output parameters:

- `advisory`
- `epss`
- `fix_available`
- `kev` (object)
- `missing_sources` (array)
- `partial` (boolean)
- `priority` (object)
- `vuln_id` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp#diagnostics

## Score history

- 2026-11-05: 51
- 2026-11-04: 66
- 2026-11-03: 66
- 2026-11-02: 66
- 2026-11-01: 66
- 2026-10-31: 66
- 2026-10-30: 66
- 2026-10-29: 66
- 2026-10-28: 51
- 2026-10-27: 51
- 2026-10-26: 51
- 2026-10-25: 51
- 2026-10-24: 51
- 2026-10-23: 51
- 2026-10-22: 51
- 2026-10-21: 51

## Common questions

### 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 51 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 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 5 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.

## Links

- PyPI project: https://pypi.org/project/vuln-triage-mcp/
- Socket report: https://socket.dev/pypi/package/vuln-triage-mcp
- Repository: https://github.com/kimmawla/vuln-triage-mcp
- Changelog RSS feed: https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp.json
- HTML version of this page: https://verifymcp.io/servers/kimmawla-vuln-triage-mcp/vuln-triage-mcp
