Skip to main content
Glama
depaudit-mcp

depaudit-mcp

by 0xmortuex

depaudit-mcp

Let your AI agent audit your project's dependencies, transitive ones included, straight from the lockfiles.

depaudit-mcp is an MCP server that reads lockfiles, asks OSV.dev which locked versions have known vulnerabilities, and tells the agent what to upgrade, how risky the upgrade is, and which direct dependency drags the problem in. It is read-only: it never edits your lockfiles or manifests. No API key is needed.

Lockfile

Notes

uv.lock

dev groups and workspace members count as direct

poetry.lock

direct deps come from the pyproject.toml next to it

requirements.txt (requirements*.txt)

== pins only; no graph, so every pin is "direct"

package-lock.json

v2 and v3; nested node_modules, workspaces, aliases

pnpm-lock.yaml

v6 to v9

yarn.lock

Yarn v1 (Berry is rejected with a clear message)

Cargo.lock

workspace members are the roots; git/path sources are skipped

go.sum

direct modules come from go.mod; no dependency graph

What it looks like

Real output (OSV data of 2026-11-06) for an npm project that depends on lodash 4.17.15 and mkdirp 0.5.1:

> scan_project .
depaudit scan of C:\work\demo
  package-lock.json: 35 packages, 3 direct, 32 transitive  [C:\work\demo\package-lock.json]
9 advisories across 4 vulnerable package versions: 1 CRITICAL, 4 HIGH, 3 MODERATE, 1 LOW

== package-lock.json (C:\work\demo\package-lock.json)
CRITICAL minimist 0.0.8 [transitive]  fix: upgrade to >= 0.2.4
    - GHSA-xvch-5gv4-984h (CVE-2021-44906) CRITICAL CVSS 9.8, fixed in 0.2.4: Prototype Pollution in minimist
    - GHSA-vh95-rmgr-6w4m (CVE-2020-7598) MODERATE CVSS 5.6, fixed in 0.2.1: Prototype Pollution in minimist
    via: mkdirp 0.5.1 > minimist 0.0.8
HIGH     lodash 4.17.15 [direct]  fix: upgrade to >= 4.18.0
    - GHSA-35jh-r3h4-6jhm (CVE-2021-23337) HIGH CVSS 7.2, fixed in 4.17.21: Command Injection in lodash
    ...

> suggest_fixes .
1. minimist 0.0.8 -> 0.2.4  [transitive, minor] fixes 2 advisory/ies, worst CRITICAL  BREAKING: major/0.x bump, read the changelog and run tests
     do: upgrade the parent, or add "overrides": {"minimist": "0.2.4"} to package.json
     pulled in by: mkdirp 0.5.1 > minimist 0.0.8
3. lodash 4.17.15 -> 4.18.1  [direct, minor] fixes 5 advisory/ies, worst HIGH
     do: npm install lodash@4.18.1

Note the lodash target: 4.18.0 is listed as the fix for one advisory, but OSV says 4.18.0 is itself affected by another, so the plan moves on to 4.18.1. Every proposed target is re-checked.

Related MCP server: @4da/mcp-server

Install

Needs Python 3.10+ and internet access to api.osv.dev and the package registries.

Claude Code

claude mcp add depaudit -- uvx depaudit-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "depaudit": { "command": "uvx", "args": ["depaudit-mcp"] }
  }
}

Without uv: pip install depaudit-mcp, then use depaudit-mcp as the command.

Tools

Tool

What it does

scan_project(path, limit=30)

Finds lockfiles under path (a directory, searched 3 levels deep, or one file). Counts direct vs transitive packages and lists vulnerable ones worst first, with merged advisories, CVSS, fixed-in versions and the dependency path for transitive ones.

suggest_fixes(path)

Minimal upgrade plan: the smallest version fixing every advisory (verified clean against OSV), a BREAKING flag for major and 0.x-minor bumps, the parent that pulls the package in, and the command or override to apply. Prints only; changes nothing.

list_outdated(path, include_transitive=False, limit=40)

Packages behind the latest release on PyPI, npm, crates.io or the Go proxy, labelled MAJOR / MINOR / PATCH.

check_package(ecosystem, name, version)

One name and version, no lockfile needed. Also shows the latest release.

explain_vulnerability(id)

An advisory in detail: summary, severity and vector, affected ranges, fix, references. Accepts GHSA, CVE, PYSEC, RUSTSEC, GO ids.

Try asking

  • "Scan this project for vulnerable dependencies and tell me the three most urgent fixes."

  • "Which of my vulnerable packages are transitive, and what pulls them in?"

  • "What is the smallest set of upgrades that gets rid of every critical and high advisory? Which ones are breaking?"

  • "Is requests 2.19.1 safe to ship? What does GHSA-x84v-xcm2-53pg actually let an attacker do?"

  • "Which direct dependencies are a major version behind?"

  • "Audit every lockfile in this monorepo and group the findings by service."

How it works, and what it cannot tell you

  1. Lockfiles are parsed locally into packages, direct roots and dependency edges.

  2. All distinct (ecosystem, name, version) triples go to OSV's /v1/querybatch in chunks, following next_page_token until every page is read; each advisory record is then fetched once from /v1/vulns/{id}.

  3. Records that alias each other (GHSA, PYSEC, CVE, RUSTSEC) are merged into one issue. Severity is the advisory's own rating, or a CVSS v3 base score computed from its vector. Records with only a CVSS v4 vector and no rating show as UNKNOWN.

  4. Latest versions come from the registries, concurrently, cached for an hour.

Limits to know about:

  • It reports published advisories for the exact locked versions. It does not know whether your code calls the vulnerable function, and it finds nothing about unpublished bugs.

  • Dev dependencies are included (they run in your CI). Optional and platform-specific dependencies are included when the lockfile lists them.

  • Fixed-in versions come from OSV ECOSYSTEM/SEMVER ranges. Advisories that only list affected versions (no ranges) show "no fix known".

  • A fix for a transitive package may be blocked by the parent's version range. The plan names the parent; upgrading it is usually the right move.

  • requirements.txt has no graph (every pin shows as direct) and go.sum can list modules that are not in the build.

  • Not supported: npm lockfile v1, pnpm before v6, Yarn Berry, pip -r includes (scan the included file).

Security and privacy

  • Read-only on disk. The server only opens lockfiles and the package.json / pyproject.toml / go.mod beside them. It never writes. suggest_fixes prints commands; it does not run them.

  • What leaves your machine: package names and exact versions (to api.osv.dev and the registries pypi.org, registry.npmjs.org, crates.io, proxy.golang.org), and advisory ids. File paths and contents do not leave. Private package names in a lockfile are sent too, so do not point it at a lockfile whose package names are confidential.

  • path is any path the agent passes. Like any tool that reads files, give an agent that can call it only the access you are comfortable with. It only parses files with the supported lockfile names.

  • Requests have timeouts (20 s); 429 and 5xx responses are retried at most 3 times, honouring Retry-After, then fail with an explicit error. Lookup failures are shown, never turned into "no vulnerabilities".

  • For tests or mirrors, the endpoints can be redirected with DEPAUDIT_OSV_URL, DEPAUDIT_PYPI_URL, DEPAUDIT_NPM_URL, DEPAUDIT_CRATES_URL and DEPAUDIT_GOPROXY_URL.

Tests

pip install ".[test]" "ruff==0.16.0" "mypy==2.3.0"
ruff check src tests && mypy --strict src
pytest tests            # offline: real lockfiles, a real stdio MCP session, recorded API responses
pytest tests -m live    # real OSV.dev / PyPI / npm / crates.io / Go proxy

The offline tests run the real HTTP client against a local server that replays responses recorded from the live APIs (tests/fixtures/recorded/, produced by tests/record_fixtures.py), including pagination, 429 retries, timeouts and error mapping. Lockfile fixtures for uv, poetry, npm, pnpm (v6 and v9) and Yarn v1 were generated by the real tools; Cargo.lock, go.sum and requirements.txt fixtures are written by hand. The live tests check that requests 2.19.1 and lodash 4.17.15 are reported by the real API and that proposed fix targets are clean.

Companion

The tutorial depaudit-mcp-the-hard-way builds a minimal version of this server from scratch.

License

MIT

Available Tools

5 tools
check_packageA

Check one exact package version for known vulnerabilities, without a lockfile.

ecosystem: PyPI, npm, crates.io or Go. Also reports the latest release and how far behind this version is. Example: check_package("PyPI", "requests", "2.19.1").

NameRequiredDescriptionDefault
nameYes
versionYes
ecosystemYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It correctly signals a read-only advisory lookup and adds that the tool also returns the latest release and version lag, which is useful extra context, but it says nothing about network dependency, rate limits, caching, or what happens for an unknown/unpublished package version.

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?

Four short lines, each earning its place: purpose and scope first, then the ecosystem vocabulary, then the bonus output, then a worked example. No filler or restatement of the tool name.

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 the description need not detail return values, and it wisely only flags the notable extra fields. The remaining gap is failure behavior (invalid ecosystem, nonexistent version) for a three-required-parameter tool with no annotation coverage.

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

Parameters4/5

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

Schema coverage is 0% and the schema declares only bare property titles, so the description is doing real work: it enumerates the accepted ecosystem values (PyPI, npm, crates.io, Go) where the schema has no enum, and the example fixes the positional/argument order name→version. Only 'version' format (exact vs range) is left slightly ambiguous.

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 opens with a specific verb and resource ('Check one exact package version for known vulnerabilities') and adds the scoping qualifier 'without a lockfile', which separates it in spirit from scan_project and list_outdated. It does not name those siblings explicitly, so the differentiation is implied rather than stated.

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?

'Without a lockfile' and 'one exact package version' imply the usage context (an ad-hoc single-package lookup rather than a project scan), but no alternative tool is named and no when-not-to-use condition is given. An agent must infer that scan_project or list_outdated cover the project-level cases.

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

explain_vulnerabilityA

Explain one advisory: summary, severity, affected version ranges, fix, references.

id: an OSV-known id such as GHSA-x84v-xcm2-53pg, CVE-2018-18074, PYSEC-2018-28 or RUSTSEC-2020-0071.

NameRequiredDescriptionDefault
idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry behavioral disclosure. It does signal a read-only lookup and names the sections returned, but says nothing about data source/auth needs, network requirements, rate limits, or what happens when the id is unknown or not found.

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?

The output contents are front-loaded in the first clause and the id format guidance follows, with no filler. The line breaks make the parameter note slightly awkward to parse as prose but nothing is wasted.

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

Completeness5/5

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

This is a single-parameter lookup tool with an output schema, so return shape is already covered — and the description still previews what sections come back. The one remaining gap, error behavior on an unknown id, is minor given the schema richness and tool simplicity.

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

Parameters4/5

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

Schema coverage is 0% and the schema only declares a bare string "Id", so the description has to compensate — and it does, giving four concrete accepted identifier formats (GHSA-…, CVE-…, PYSEC-…, RUSTSEC-…). That is real added meaning the schema lacks; it could go further on case sensitivity or prefix requirements.

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 object ("Explain one advisory") and enumerates the content produced: summary, severity, affected version ranges, fix, references. That makes it distinguishable from siblings like scan_project and list_outdated, though it never names those siblings explicitly.

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 by the singular object "one advisory" — an agent can infer this is the per-advisory deep dive rather than a bulk scan, but there is no statement of when to prefer it over check_package or suggest_fixes, and no prerequisites or exclusions.

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

list_outdatedA

List packages in a project's lockfiles that are behind their latest release.

Compares each locked version with the latest stable version on PyPI, the npm registry, crates.io or the Go module proxy, and labels the gap MAJOR, MINOR or PATCH (biggest first). By default only direct dependencies are checked; set include_transitive=True for everything (more requests; transitive packages may be held back by their parents' version ranges). Lookups are concurrent and cached; packages whose lookup fails are listed, not hidden.

NameRequiredDescriptionDefault
pathYes
limitNo
include_transitiveNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: concurrent cached lookups, failed lookups surfaced rather than hidden, and the caveat that transitive packages may be held back by parents' version ranges. Read-only behavior is only implied by 'List' and supported ecosystems are stated, but permissions and request-volume specifics remain unaddressed.

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?

Four tight sentences, front-loaded with what the tool does, then defaults, then caveats. The registry list and the parent-range parenthetical both add decision-relevant information, and nothing is restated from the schema or the name.

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?

The output schema exists, so return values need not be explained, and the description covers the hard parts of a multi-registry network tool: caching, concurrency, and failure surfacing. It falls short only on the ambiguous 'limit' parameter for a tool whose complexity makes result-count semantics worth one clause.

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, and it fully explains include_transitive (default, cost, parent-range caveat). However, 'limit' (default 40) is never mentioned; an agent cannot tell whether it truncates results or paginates. 'path' is left as a bare string with no indication that it should point at a project root containing lockfiles.

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: 'List packages in a project's lockfiles that are behind their latest release,' and adds scope detail (four named registries, severity labels). It never names a sibling, so an agent must infer on its own that check_package handles single-package lookups and scan_project handles broader scans, which keeps it short of a 5.

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?

Gives useful parameter-level guidance ('By default only direct dependencies are checked; set include_transitive=True for everything') and a cost warning, but never states when to pick this tool over check_package or scan_project. Usage is implied by the word 'lockfiles' rather than spelled out as a routing rule.

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

scan_projectA

Scan a project's lockfiles for known vulnerabilities (OSV.dev).

path: a project directory (lockfiles are found up to 3 levels deep, skipping node_modules and virtualenvs) or one lockfile. Supports uv.lock, poetry.lock, requirements.txt (== pins only), package-lock.json (v2/v3), pnpm-lock.yaml (v6-v9), yarn.lock (v1), Cargo.lock and go.sum.

Reports package counts (direct vs transitive) and, worst first, each vulnerable package version with its advisories (GHSA/PYSEC/CVE merged), severity, CVSS score, fixed-in version and, for transitive ones, the dependency path from a direct dependency. limit caps how many vulnerable packages are listed per lockfile. Read-only.

NameRequiredDescriptionDefault
pathYes
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden and does so well: it declares read-only, caps recursion at 3 levels, skips node_modules/virtualenvs, states result ordering ('worst first') and that advisories are merged (GHSA/PYSEC/CVE) with transitive dependency paths. It omits what happens on an unsupported or unreadable lockfile, whether network access to OSV.dev is required, and any error behavior.

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?

Front-loaded with purpose, then input forms, then supported formats, then output shape. The format enumeration is long but earns its place by preventing calls on unsupported files; the paragraph form is slightly dense compared to a bulleted list.

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 2-parameter scan tool with an output schema, the description covers inputs, supported ecosystem coverage, ordering, and dedup/merge behavior thoroughly. The main residual gaps are error handling for unsupported files and any note that the scan requires reaching OSV.dev.

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

Parameters4/5

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

Schema description coverage is 0%, and the description compensates strongly for both parameters: `path` is defined as either a directory (with depth/skip rules and a full list of accepted lockfile formats/pin styles) or a single lockfile, and `limit` is explained as capping vulnerable packages listed per lockfile. It still lacks details an agent must guess, such as whether `path` is relative to the working directory or absolute and how non-matching pins in requirements.txt are treated.

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 and resource ('Scan a project's lockfiles for known vulnerabilities') plus the data source (OSV.dev), making it clearly distinct from check_package (single package) and list_outdated (outdated, not vulnerable) among the siblings.

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

Usage Guidelines4/5

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

Clearly signals the input scope: a project directory versus a single lockfile, including the recursion depth and skipped directories. It gives the agent a concrete picture of when this tool applies, but never names the alternatives (check_package, list_outdated) or states exclusions explicitly, leaving sibling routing to inference.

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

suggest_fixesA

Propose a minimal upgrade plan for the vulnerabilities in a project's lockfiles.

For each vulnerable package: the smallest version that fixes every advisory (re-checked against OSV so the target is not itself vulnerable), whether the bump is breaking (major, or minor on 0.x), the dependency path for transitive packages, and the command or manifest change to apply it. This tool NEVER modifies files; it only prints the plan.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it states plainly that the tool never modifies files and only prints a plan, and it discloses that targets are re-checked against OSV so the suggested version is not itself vulnerable. It omits operational context such as network access requirements or behavior when no vulnerabilities exist, which keeps it below a 5.

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?

Front-loaded purpose sentence, then a compact enumeration of exactly what the plan contains, then a closing non-mutation guarantee. Every clause is substantive; the middle sentence is dense but the list structure keeps it scannable.

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 one-parameter, read-only planning tool this covers the important ground: what it produces, that it is safe, and that targets are verified. An output schema exists, so the return-value enumeration is somewhat redundant but harmless. The one genuine hole is the meaning of 'path', which an agent needs before it can call the tool correctly.

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% and the single required parameter is named only 'path'. The description hints that it refers to a project with lockfiles, but never clarifies whether it is a project root, a directory to scan recursively, or a specific lockfile — a meaningful ambiguity given lockfiles may be nested. The schema provides no help, so this gap is fully the description's responsibility.

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 first sentence gives a specific verb and resource: propose a minimal upgrade plan for vulnerabilities in a project's lockfiles. That is clearly distinguishable from scan_project or list_outdated, which detect rather than plan. It stops short of naming any sibling explicitly, so the differentiation is inferred rather than stated.

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: an agent can infer this belongs after a scan, since it consumes detected vulnerabilities and emits remediation. There is no explicit when-to-use, when-not-to-use, or pointer to scan_project/list_outdated/check_package as the preceding or alternative step.

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. 5 tool updatesv0.1.0
    • First observedcheck_package
    • First observedexplain_vulnerability
    • First observedlist_outdated
    • First observedscan_project
    • First observedsuggest_fixes

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct action+resource: scan_project (lockfile vuln scan), check_package (single-version vuln check), list_outdated (version gap listing), explain_vulnerability (advisory detail), and suggest_fixes (remediation plan). The potential overlap between suggest_fixes and list_outdated is resolved by descriptions (fixes for vulnerabilities vs. behind-latest labels). An agent can unambiguously pick the right tool.

Naming Consistency5/5

All five tools follow a strict verb_noun snake_case pattern: suggest_fixes, scan_project, list_outdated, check_package, explain_vulnerability. No stylistic deviations or mixed conventions.

Tool Count5/5

Five tools is a tight, well-scoped set for a read-only dependency auditor, with no redundant or filler tools. Each operation (scan, check, list, explain, plan) earns its place.

Completeness4/5

The surface covers the audit lifecycle well: discover vulnerabilities, check individual packages, identify outdated deps, explain advisories, and plan fixes. The main intentional gap is any apply/upgrade operation (explicitly read-only), and there's no batch or export/report tool, but core workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    AI-powered dependency vulnerability and breaking change analyzer that scans dependencies, identifies vulnerabilities via OSV.dev, and uses AI to assess real impact and suggest fixes.
    3
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI coding agents to learn, from locally read lockfiles, what changes between the dependency version installed and a target version, which of the user's files that upgrade touches, and which vulnerabilities it resolves. It also performs OSV-matched vulnerability scans, ranks upgrade plans, and stores decision memory, running entirely on the user's machine with no account or API keys.
    11
    718 npm
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to submit npm, PyPI, Go, or Maven packages and manifests to the free OSV.dev database and receive per-package and per-advisory results with CVE mappings, CVSS scores, severities, and the versions that fix each issue. It also supports filtering by minimum severity, de-duplicating alias advisories, and machine-readable error/warning rows for CI gates and upgrade recommendations.
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude to look up known vulnerabilities in a project's dependencies across OSV.dev, CVE.org, NVD, CISA KEV and EPSS, then rank the findings by real-world exploitation so the most urgent fixes surface first. It supports single-package checks, keyword CVE searches, and whole-lockfile scans, with upgrade-path reasoning.
    4
    MIT