osv-advisory-mcp-server
Server Details
Query OSV.dev for package vulnerabilities and batch-audit dependency lists via MCP.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/osv-advisory-mcp-server
- GitHub Stars
- 2
- Server Listing
- osv-advisory-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool targets a distinct query mode: single package, batch packages, single commit, full record by ID, and ecosystem enumeration. The only boundary friction is between osv_query_package and osv_query_batch, since a one-element batch could substitute for a package query, but the descriptions explicitly position batch for audits and explain the cursor handoff to osv_query_package.
All five tools follow the same osv_<verb>_<noun> pattern: get_vulnerability, list_ecosystems, query_package, query_batch, query_commit. The verb choice is semantically meaningful (get for a known record, query for searches, list for enumeration) and applied consistently.
Five tools map cleanly onto the OSV API surface (by-ID lookup, package query, batch query, commit query, ecosystem list) with no filler or redundancy. It is well within the ideal 3-15 range for a focused lookup server.
Coverage mirrors the core OSV endpoints and supports the main workflows: lookup by ID, dependency/SBOM audit via batch, commit-level queries, and ecosystem discovery feeding the query tools. Minor gaps exist (no direct CVE/alias-to-OSV-ID resolution and no general search by severity or package name across ecosystems), but agents can work around these via returned aliases.
Available Tools
5 toolsosv_get_vulnerabilityOsv Get VulnerabilityARead-onlyIdempotentInspect
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 — affected packages or remediation guidance. For overflow, repeat the original input with page: overflow.page. Continue the same path with offset: page.nextOffset and revision: page.revision until nextOffset is null. Retrieve each entries[].deferred.path separately at offset zero without a revision. Do not pass the output page object as input. Every page is a fresh lookup; restart a changed node without a revision. Transmission overflow and upstream truncation are separate; neither confirms clean.
Inputs: id (required), page. Returns: id, page, error, cweIds, +16 more
osv_list_ecosystemsOsv List EcosystemsARead-onlyIdempotentInspect
Return the supported ecosystem base names for osv_query_package and osv_query_batch: every ecosystem the OSV schema names that OSV.dev accepts at query time, plus GIT, as verified on 2026-10-31. Known base names are case-insensitive. Preserve suffix spelling. Alpine needs a release branch, such as Alpine:v3.17. The list is static and may lag ecosystems added after that date.
Inputs: no named parameters. Returns: note, error, ecosystems
osv_query_batchOsv Query BatchARead-onlyIdempotentInspect
Query vulnerabilities for multiple packages in one call — the primary tool for dependency audits, SBOM scanning, and lockfile triage. Submit up to 5000 mixed {name, ecosystem, version} tuples and {purl, version?} identifiers, with exactly one embedded or separate version per PURL. The first 1000 entries are processed. Follow summary.nextInputOffset to submit the remaining slice. Pass a row's nextCursor as cursor to osv_query_package with that row's identifier. 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. Large replies retain the complete summary. For overflow, repeat the original packages array with page: overflow.page. Continue the same path with offset: page.nextOffset and revision: page.revision until nextOffset is null. Retrieve each entries[].deferred.path separately at offset zero without a revision. Do not pass the output page object as input. /results/17 selects original input row 17, even when earlier rows failed. Pages are fresh lookups and do not recompute the initial summary; restart a changed node without a revision. Transmission overflow and upstream truncated are separate; neither confirms clean.
Inputs: packages (required), page. Returns: page, error, notice, preview, +5 more
osv_query_commitOsv Query CommitARead-onlyIdempotentInspect
Query known vulnerabilities for one full Git commit hash (40 hexadecimal SHA-1 or 64 hexadecimal SHA-256 characters, case-insensitive). Abbreviated hashes are rejected. Returns advisory summaries, record-wide severity and GIT ranges with repositories and ordered fix events; use osv_get_vulnerability for full records. No package-specific fixedVersions are inferred. For overflow, repeat the original input with page: overflow.page. Continue the same path with offset: page.nextOffset and revision: page.revision until nextOffset is null. Retrieve entries[].deferred.path separately at offset zero without a revision. Do not pass the output page object as input. Pages are fresh lookups; restart a changed node without a revision. Transmission overflow and upstream truncated are separate; neither confirms clean.
Inputs: commit (required), page, cursor. Returns: page, error, vulns, notice, +6 more
osv_query_packageOsv Query PackageARead-onlyIdempotentInspect
Query known vulnerabilities for a single package version using {name, ecosystem, version} or {purl, version?}; supply exactly one embedded or separate version. Returns all matching OSV advisories with severity (CVSS vectors), CVE aliases, affected version ranges, and the fixed versions listed for the queried package. Find canonical ecosystem names and the Alpine release format in osv_list_ecosystems. Known base names are case-insensitive. Preserve suffix spelling. For overflow, repeat the original input with page: overflow.page. Continue the same path with offset: page.nextOffset and revision: page.revision until nextOffset is null. Retrieve each entries[].deferred.path separately at offset zero without a revision. Do not pass the output page object as input. Set page.advisoryId to an announced ID to fetch its fields with fixes and severity for the queried package; retain advisoryId on subsequent pages. Pages are fresh lookups; restart a changed node without a revision. Transmission overflow and upstream truncated are separate; neither confirms clean.
Inputs: name, page, purl, cursor, +2 more. Returns: page, error, vulns, notice, +7 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Check npm, PyPI, Go and Maven packages or lockfiles against OSV.dev: CVEs, CVSS, fixed versions.
Queries live Google OSV.dev vulnerability intelligence for any PyPI, npm, Go, or Rust crate and re
Package vuln advisories from OSV.dev: CVEs, severity, fixes, manifest audit. Pay per call via x402.
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceEnables auditing npm, pip, and other package dependencies for known CVEs via the OSV database, with tools to scan manifests, query individual packages, and integrate into CI/CD workflows.570 npmMIT- FlicenseNot gradedqualityDmaintenanceScans Python, Node.js, Java/Spring, and PHP dependency manifests for known vulnerabilities using OSV and GitHub Advisory APIs.-
- AlicenseAqualityCmaintenanceMCP server for querying CVE and package vulnerability data from NVD and OSV.dev, allowing CVE lookups and dependency scanning.4148 npm1MIT
- AlicenseAqualityCmaintenanceEnables coding agents to check individual project dependencies or local CycloneDX/SPDX SBOM files against the public OSV.dev advisory database and receive ranked vulnerability findings.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.