Skip to main content
Glama
No3214

MCP Maintainer Tools

by No3214

MCP Maintainer Tools

Evidence, within reach. Seven read-only Model Context Protocol tools for researching package vulnerabilities, CVE records, known exploitation, exploit probability, and package metadata.

Checks

Get started · Usage guide · Contribute · Security · Brand assets

The server connects an MCP client to OSV, NVD, CISA KEV, FIRST EPSS, and deps.dev over local stdio. It returns source context and explicit pagination so maintainers can inspect the evidence behind an answer.

Results are available as both structured MCP objects and JSON text, with an object output schema for every tool.

This is an early public release. It supplies research inputs; release approval, remediation, and risk decisions remain with the maintainer. It does not inspect a local repository, install dependencies, or apply patches.

Existing scanners and MCP servers address overlapping workflows. The validation plan compares alternatives and defines a real-user pilot; external adoption and a measurable advantage have not yet been established.

Get started

You need Git, Python 3.11 or newer, an MCP client with stdio support, and HTTPS access to the providers. Install from this repository; a PyPI release is not provided by this project at present.

macOS or Linux

git clone https://github.com/No3214/mcp-maintainer-tools.git
cd mcp-maintainer-tools
python3 -m venv .venv
./.venv/bin/python -m pip install .

Windows PowerShell

git clone https://github.com/No3214/mcp-maintainer-tools.git
Set-Location mcp-maintainer-tools
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install .

Confirm that the chosen Python installation is 3.11 or newer. These commands call the environment's interpreter directly, so shell activation is unnecessary.

Connect your MCP client

Use the absolute path to the installed environment's Python executable. For a client that uses the common mcpServers configuration shape:

{
  "mcpServers": {
    "maintainer-tools": {
      "command": "/absolute/path/to/mcp-maintainer-tools/.venv/bin/python",
      "args": ["-m", "mcp_maintainer_tools"]
    }
  }
}

Replace the example path with your actual path. Windows uses .venv\Scripts\python.exe; escape backslashes in JSON. Ready-to-edit examples are available for macOS/Linux and Windows. Configuration formats vary by client.

The installed mcp-maintainer-tools command is also available. The minimal configuration works when this command is on the client's PATH.

The process speaks MCP, not an interactive shell. Your client starts it and exchanges protocol messages over stdin/stdout. Starting it directly may look idle because it is waiting for an MCP request. No HTTP listener is opened. Use python -m mcp_maintainer_tools --help or --version with the installed environment's interpreter to check the command without starting the server.

No API key is required. An optional NVD_API_KEY can be supplied through the server process environment or your client's secret settings. Keep the key out of repository files, example configurations, and diagnostic output.

By default, the transport ignores environment proxy and custom-CA settings. If your network requires them, explicitly set MCP_MAINTAINER_TOOLS_TRUST_ENV=true in the server environment and supply only trusted proxy/CA settings. TLS verification remains enabled. Restart the server after changing the setting; see network configuration for the accepted values and variables.

Related MCP server: touful-vuln-search-mcp

Seven tools, one research workflow

Tool

Input

What it returns

osv_query

Package name, version, optional ecosystem and page_token

One page of matching advisories, identifiers, and continuation metadata.

osv_batch

Up to 100 package objects

One page of advisory identifiers per package, with independent continuation tokens.

osv_vuln

vuln_id

The OSV record, retaining package-specific affected ranges and references.

nvd_cve

cve_id

The NVD CVE record, preserving attribution for its metrics, or explicit absence.

kev_check

Up to 100 cve_ids

Matches against a fetched CISA KEV catalog, with catalog metadata and the actual source used.

epss

Up to 100 cve_ids, optional offset and limit

A page of FIRST EPSS scores and continuation metadata.

depsdev_package

Package name, optional system

Package identity and metadata for the provider-marked default version, if identified.

OSV defaults to ecosystem npm; deps.dev defaults to system npm. Their ecosystem/system identifiers are not interchangeable. The usage guide describes arguments and limits.

For example, ask an MCP client:

Look up OSV records for lodash version 4.17.21 in the npm ecosystem. Retrieve every page. For any advisory with a CVE alias, use NVD, KEV, and EPSS for additional context. Preserve sources and unknowns; do not call the package safe merely because a lookup is empty.

This demonstrates a research workflow. It is not a current assessment or recommendation of the example package version. Individual OSV records can be retrieved with osv_vuln after the query or batch lookup.

Read the evidence correctly

Result

Interpretation

OSV has_more: true

Fetch the next page using next_page_token, even when the current page has no records.

EPSS has_more: true

Repeat the same CVE query with next_offset.

NVD found: false

This lookup did not return a CVE record. It is not a clean bill of health.

A CVE in not_in_kev

It was absent from the fetched KEV catalog. Check catalog date and source; this does not establish that it has never been exploited.

deps.dev default: null

The provider did not identify a default version. The tool does not choose one for you.

A failed tool call

The request or response could not be used. Do not replace the failure with an empty success.

Provider coverage and update timing differ. Upstream text and references are untrusted data, not instructions to an assistant or authorization to execute commands. The tools do not supply a complete inventory scan or a guarantee that software is secure.

kev_check tries CISA's canonical feed first. For specific availability failures, it can use CISA's official GitHub mirror. It reports source_url, canonical_source_url, and fallback_used so the source remains visible. The mirror may lag the canonical feed; retrieval time alone does not establish catalog freshness. Malformed, unsafe, or inconsistent data is rejected rather than hidden by a fallback. See the KEV source policy for the exact conditions.

Where your queries go

Calls make outbound HTTPS requests. A package name or version can reveal a dependency, including a private one. Query only information you are comfortable sending to the relevant provider.

Provider

Data sent

Official documentation

OSV — api.osv.dev

Package names, versions, ecosystems, continuation tokens, or advisory identifiers.

OSV API

NVD — services.nvd.nist.gov

CVE ID and the optional API key in a request header.

NVD vulnerability API

CISA KEV — www.cisa.gov; fallback hosted at raw.githubusercontent.com

Request for the full public catalog, first from CISA and, on eligible failures, from its official cisagov/kev-data mirror. Your CVE list is matched locally and is not sent to either host.

KEV catalog, official mirror

FIRST — api.first.org

CVE IDs and pagination parameters.

EPSS API

deps.dev — api.deps.dev

Package name and system; default version when identified.

deps.dev API v3

Development and project health

From a checkout, install the development dependencies and run the tests:

./.venv/bin/python -m pip install -e '.[dev]'
./.venv/bin/python -m pytest -q

On Windows, use .\.venv\Scripts\python.exe in place of ./.venv/bin/python. Tests use mocked provider responses, including a real MCP stdio client/server exchange; they do not require API keys. See CONTRIBUTING.md for change and testing guidance, and the CI workflow for the current validation matrix.

CI is configured for Python 3.11–3.14 on Ubuntu, plus Python 3.12 on Windows and macOS. Additional jobs check lint and formatting, Bandit security patterns, build and Twine package validation, CLI/stdio behavior using the built wheel, and known vulnerabilities in the resolved runtime dependencies. The workflow badge links to actual run results; configuration alone does not establish that a revision passed.

The Required checks job succeeds only when every prerequisite job succeeds. Job logs record the tested interpreter, resolved dependencies, commit, and package origin; package verification also records archive digests. See the 0.1.4 interoperability audit for the current change and measured results, the 0.1.3 protocol logging audit for logging boundaries, and the 0.1.2 dispatch audit for concurrency and verified repository protection.

The dev, audit, and build extras provide the corresponding local tools. The contribution guide lists the commands. The MCP SDK is constrained to the 1.30 series while its typed-input, protocol-version, and log/error adapters are reviewed against that series.

Report implementation vulnerabilities through SECURITY.md. Use GitHub issues for reproducible bugs, documentation improvements, and proposed changes to scope.

License and identity

Project code and original brand assets are available under the MIT License. Data returned by external services may have separate attribution and use terms. Provider names identify integrations and do not imply affiliation or endorsement.

The brand guide contains editable SVG assets, colors, typography, and claim boundaries for project communications.

Available Tools

7 tools
depsdev_packageC
Read-onlyIdempotent

Get deps.dev version metadata. Only a provider-marked default is used; no latest-version guess is made.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
systemNonpm

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description contributes one genuinely extra behavioral fact — that no latest-version guessing occurs and only a provider-marked default is used — which is real resolution semantics not in the annotations. It stops there: no mention of network dependency, error behavior when a default is absent, or supported ecosystems.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the core action is front-loaded ahead of the caveat. It is terse rather than bloated; the only cost is that brevity here shades into under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. But for a tool keyed on package name plus ecosystem, the description says nothing about the ecosystem parameter or its npm default, and gives no signal about what happens when no provider-marked default exists — the exact failure mode its own caveat implies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters: the description never mentions `name` or `system`, nor that `system` defaults to npm, nor which ecosystems are valid. With zero coverage the description is expected to compensate, and it does not — the only hint is the generic phrase "version metadata."

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get deps.dev version metadata" names a verb and a resource, but "version metadata" is vague — it doesn't say whether this returns package info, resolved versions, or dependency data. The second sentence clarifies the resolution policy rather than the purpose. Siblings (osv_*, nvd_cve, kev_check, epss) are vulnerability tools, so the resource is distinguishable, but the description never states that distinction itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative routing is given — nothing tells the agent why it would pick deps.dev metadata over the OSV/NVD/KEV siblings. The note about only accepting a provider-marked default hints at a resolution use case, but that is an implicit inference rather than stated guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epssA
Read-onlyIdempotent

Fetch one FIRST EPSS page for up to 100 CVEs. Scores estimate exploitation probability, not environment-specific risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
cve_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety bar is low; the description still adds real value by disclosing the one-page-per-call pagination model and by warning that scores are exploitation-probability estimates rather than environment-specific risk. It omits rate limits, result ordering, and behavior on invalid CVE IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, with the operational constraint (one page, 100 max) front-loaded and the interpretive caveat second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and annotations cover the safety profile. The description supplies the paging model and the score-interpretation caveat, which is most of what an agent needs; only pagination mechanics and alternatives are thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description has to carry parameter meaning and it only partially does: "up to 100 CVEs" maps to cve_ids/maxItems and limit's cap, but offset is never mentioned and pagination semantics are left implicit. The CVE-ID format and bounds come entirely from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Fetch") plus resource ("FIRST EPSS page") and scope ("up to 100 CVEs") let an agent immediately tell this is the exploitation-probability scoring source, distinct from the OSV/NVD/KEV siblings that return advisory or catalog data. It stops short of explicitly naming a sibling it should be preferred over, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no routing to alternatives such as kev_check or nvd_cve. "Fetch one ... page" implies the result is paged but never says how to continue to the next page or when to prefer a single-CVE lookup, so the agent must infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kev_checkA
Read-onlyIdempotent

Check up to 100 CVEs against a freshly fetched CISA KEV catalog. Absence is not proof of no exploitation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: the catalog is 'freshly fetched' (a live network lookup with current data) and an empty result is explicitly not proof of no exploitation. It does not describe return shape, but an output schema exists to cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the core action front-loaded and the interpretive caveat second. No filler, no repetition of schema details beyond the count limit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-parameter lookup with an output schema and full safety annotations, the definition covers purpose, data freshness, and the key negative-result caveat. The one meaningful omission is guidance on when to reach for this tool versus the other vulnerability-data siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter with 0% schema description coverage, so the description could compensate more. It confirms the parameter is a list of CVEs capped at 100, but that cap is already enforced by schema maxItems and the CVE-ID format is only expressed in the schema pattern, not in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and a specific resource (CISA KEV catalog) with a scope limit (up to 100 CVEs). Naming the CISA KEV catalog uniquely distinguishes it from sibling tools like nvd_cve, osv_query, and epss, which cover different vulnerability data sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool does but never says when to use it instead of nvd_cve, osv_vuln, or epss, nor when not to use it. 'Absence is not proof of no exploitation' is a result caveat, not usage guidance, so the agent must infer routing from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nvd_cveB
Read-onlyIdempotent

Get an NVD CVE, preserving metric-source attribution. Optional NVD_API_KEY is read from the environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds genuine operational context beyond annotations — the environment-read API key and the fact that metric sources are kept distinct rather than merged — but says nothing about behavior without a key (rate limits, error mode) or pagination/response size, which matters for an open-world external call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, and the core action is front-loaded before the credential note. Every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not required, and the credential note covers the main setup surprise. What remains missing is the routing context against four sibling vulnerability tools, which is the largest gap for a single-purpose lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the only format guidance is the machine-readable pattern ^[cC][vV][eE]-[0-9]{4}-[0-9]{4,}$ and maxLength 64. The description never mentions cve_id at all, so it neither confirms the CVE-YYYY-NNNN format nor explains the looser 4+ digit sequence; the parameter is largely self-evident, keeping this at baseline rather than lower.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get an NVD CVE") and adds that metric-source attribution is preserved, which hints at a distinctive return shape versus a plain lookup. It does not, however, distinguish itself from siblings like osv_query, osv_vuln, or kev_check — the agent must infer the NVD-vs-OSV-vs-KEV split from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus osv_vuln, osv_query, kev_check, or epss, all of which surface vulnerability data. The only usage-adjacent content is the note that NVD_API_KEY comes from the environment, which is a precondition rather than a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osv_batchC
Read-onlyIdempotent

One OSV page per package: [{name, version, ecosystem?, page_token?}], at most 100. Follow each token separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: results are paginated per package and each package's page_token must be followed independently — a non-obvious trait worth stating. It says nothing about rate limits, partial failures, or how results are keyed back to packages, though the output schema may cover the latter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the item shape and capped by the batch limit. Terse to the point of near-telegraphic ambiguity, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary. For a single-parameter, read-only batch tool the description covers shape, cap, and pagination follow-up, but leaves purpose framing and comparison with osv_query implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does enumerate the per-package fields (name, version, ecosystem?, page_token?) and the 100-item cap, but omits the ecosystem default of 'npm' and gives no format hints for version or token, leaving some ambiguity the agent must resolve from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description implies a batch OSV lookup ('One OSV page per package') and the input shape, but never states the verb or resource explicitly — no 'query vulnerabilities for these packages'. An agent can infer the purpose but must read the schema to confirm it is a batch version of osv_query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no reference to sibling osv_query, which is the obvious single-package alternative. The only routing hint is 'at most 100', which implies batch use but never says to prefer osv_query for one package.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osv_queryB
Read-onlyIdempotent

Fetch one OSV page for a package version. Repeat with next_page_token until has_more is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
versionYes
ecosystemNonpm
page_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description adds the genuinely useful fact that results are paginated and must be drained via a token, which is behavior beyond the annotations — but it calls the parameter 'next_page_token' while the schema names it 'page_token', which is a naming inconsistency an agent could misread.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the pagination constraint placed after the core action. Nothing extraneous and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the annotations cover the safety profile, so the description needn't explain return values. But with four parameters and zero schema documentation, leaving 'ecosystem' entirely unexplained and misnaming the page token leaves gaps an agent must guess through.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, and it only gestures at name/version ('package version') and the page token — the latter under the wrong name. The 'ecosystem' parameter, which defaults to npm and materially changes results, is never mentioned in the description or the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Fetch one OSV page') and scopes it to 'a package version', so the agent knows this is a single-page vulnerability lookup rather than a batch or CVE-database query. It stops short of naming which sibling to use instead (osv_vuln, osv_batch, nvd_cve), so the differentiation from the sibling list is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a real usage rule — loop until has_more is false — which tells the agent this tool returns partial results. However, there is no guidance on when to pick this over osv_batch or osv_vuln, and no statement of what happens if the package is unknown or the ecosystem is omitted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osv_vulnA
Read-onlyIdempotent

Get an OSV record, retaining package-specific affected ranges, fixed events, and references.

ParametersJSON Schema
NameRequiredDescriptionDefault
vuln_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds a useful note that package-specific affected ranges and fixed events are retained in the result, but says nothing about behavior on an unknown ID (empty vs. error) or about response size/latency for large records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the qualifier about retained fields placed immediately after. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't enumerate return fields, and the annotations cover safety. However, for a lookup keyed entirely on an ID string, the missing ID-format guidance and the not-found behavior are the exact gaps an agent would need filled before calling it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the single parameter vuln_id carries no documented format. The description does not compensate: it never gives examples or states whether the ID is an OSV ID, CVE, or GHSA identifier. The name is largely self-explanatory, which keeps this from scoring lower.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get an OSV record" names a specific verb and resource, and the qualifier about retaining package-specific affected ranges, fixed events, and references clarifies what kind of record is returned. It is clearly a single-record fetch, which implicitly contrasts with the sibling search tool osv_query, but the description never names that sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the presence of a required vuln_id signals "fetch one known record," which an agent can infer is the alternative to querying. There is no explicit when-to-use/when-not-to-use guidance and no mention of osv_query for lookups by package or version.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observeddepsdev_package
    • First observedepss
    • First observedkev_check
    • First observednvd_cve
    • First observedosv_batch
    • First observedosv_query
    • First observedosv_vuln

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool maps to a distinct data source or operation: OSV package-page query, OSV record lookup, OSV batch query, NVD CVE lookup, CISA KEV check, EPSS scoring, and deps.dev package metadata. The OSV trio is the closest overlap, but their descriptions distinguish single-page query, record retrieval, and multi-package batching well enough.

Naming Consistency3/5

All names use snake_case, which is helpful, but the patterns are mixed: some are source-prefixed with an action or object (osv_query, osv_vuln, osv_batch, nvd_cve, kev_check, depsdev_package), while epss is just a bare acronym. The convention is readable but not consistently predictable across the set.

Tool Count5/5

Seven tools is well-scoped for a vulnerability and dependency-intelligence server, with each tool covering a meaningful source or operation. There is no obvious filler or excessive breadth.

Completeness4/5

The surface covers vulnerability lookup across OSV, NVD, KEV, and EPSS plus deps.dev package metadata, which supports common security-maintenance workflows. Minor gaps remain, such as higher-level dependency graph or package-version resolution support, but agents can work around them with existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Unifies NVD, EPSS, CISA KEV, GitHub Advisory, and OSV into a single MCP server, enabling AI agents to query vulnerability intelligence conversationally with 23 tools for incident response, prioritization, dependency audits, and threat monitoring.
    41
    292 npm
    30
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Unified vulnerability search MCP server for penetration testing agents, integrating 5 data sources (NVD, OSV, EPSS, CISA KEV, Exploit-DB+GitHub) and 10 MCP tools for CVE query, keyword search, batch query, EPSS scoring, KEV checking, exploit search, and comprehensive assessment with Chinese output.
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and retrieving curated open-source package license, copyright attribution, and provenance information, including detailed definitions and harvest scanner status, from the Linux Foundation's dataset via MCP tools.
    11 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to look up known open-source vulnerabilities in the OSV.dev database, covering individual packages and versions, specific git commits, single vulnerability IDs, and batch SBOM-style dependency scans. Queries are keyless and return compact summaries or full vulnerability details with affected ranges and references.
    5 npm
    MIT