Query OSV.dev for package vulnerabilities, batch-audit dependency lists, and fetch full advisory records via MCP. STDIO or Streamable HTTP.
Four well-named tools with strong, detailed descriptions (150 - 250 chars each). All tools have complete input schemas with typed parameters and descriptions. Tool names follow verb_noun pattern (osv_list, osv_query, osv_get). Descriptions explain WHAT, WHEN, and dependencies clearly. Parameters include constraints (minLength, minItems, maxItems). Output schemas are not explicitly documented in the source provided, which is a gap. Error handling guidance is present in descriptions but not formalized in error response patterns. No tool annotations (readOnlyHint) visible in source, though all tools are READ_ONLY per metadata.
Fetch the full advisory record for an OSV vulnerability ID. Returns the complete record: summary, full details text, CVE aliases, all affected packages and version ranges, fix versions, CVSS severity vectors, CWE weakness IDs, and references. Use when osv_query_package or osv_query_batch returns a vuln ID and you need the full advisory context — eligibility criteria, scope of affected packages, or remediation guidance.
Return the list of supported ecosystem identifier strings for use with osv_query_package and osv_query_batch. Ecosystem strings are case-sensitive exact matches — passing "pypi" instead of "PyPI" returns an error from the API. Use this tool to discover valid ecosystem strings before querying, or to verify an ecosystem identifier from a lockfile format. The list is static (maintained from the OSV schema spec) and may occasionally lag newly added ecosystems.
Query vulnerabilities for multiple packages in one call — the primary tool for dependency audits, SBOM scanning, and lockfile triage. Pass an array of {name, ecosystem, version} tuples (up to 1000). Each entry in the response corresponds positionally to the input. Each finding includes CVE aliases for chaining to nist-nvd-mcp-server for CVSS scoring.
Query known vulnerabilities for a single package version across any supported ecosystem. Returns all matching OSV advisories with severity (CVSS vectors), CVE aliases, affected version ranges, and first safe version. Use osv_list_ecosystems to validate the ecosystem string before querying — ecosystem strings are case-sensitive exact matches and an invalid value returns an error, not empty results.
Output schemas not documented. Tool descriptions explain what is returned (e.g., 'Returns all matching OSV advisories with severity, CVE aliases, affected version ranges'), but formal output schema definitions are not visible in source. LLMs cannot plan downstream tool calls or extract fields without explicit schema.
Tool annotations (readOnlyHint, idempotentHint) not visible in source. All four tools are READ_ONLY and idempotent, but these hints are not declared in tool definitions. Agents cannot infer safety without explicit annotations.
Error handling not formalized. Descriptions mention 'returns an error' for invalid ecosystem strings, but no structured error response format or recovery guidance is documented. LLMs need actionable error messages (e.g., 'Invalid ecosystem: got "pypi", did you mean "PyPI"?').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
osv_query_batch lacks pagination guidance. Tool accepts up to 1000 packages but does not document result limits, pagination, or how to handle large response payloads. Agents may request 1000 items and exhaust context.
Parameter descriptions use examples (e.g., 'e.g. "express", "requests", "serde"') instead of formal constraints. LLMs may treat examples as the only valid options or reuse them literally. Use enums or regex patterns instead.