Skip to main content
Glama
Anicodeth

dependency-audit-mcp

by Anicodeth

dependency-audit-mcp

Give your coding agent real eyes on how stale and risky your dependencies are.

An MCP server that audits a project's npm dependencies against the live registry. Feed it a package.json and the agent gets a per-dependency report: how far behind latest each package is (patch / minor / major), how many versions behind, whether it's deprecated, and its license — real facts, not a guess from training data.

Why this exists

Ask an agent "what's outdated here?" and it will happily hallucinate version numbers. The npm registry knows the truth. This server hands the agent that truth in one call, and pairs naturally with breaking-changes-mcp — audit to find what's behind, then check the breaking changes before you bump.

Related MCP server: npm-mcp

Tools

Tool

What it does

audit_dependencies

Full report from a package.json: freshness gap, versions-behind, deprecation, and license for every dependency, sorted worst-first with deprecated/major callouts.

check_package

One-off lookup for a single package — latest version, how far behind your range is, deprecation, license.

No API key required.

Quick start

npx dependency-audit-mcp

Claude Code

claude mcp add dependency-audit -- npx -y dependency-audit-mcp

Claude Desktop / Cursor / Windsurf / any MCP client

{
  "mcpServers": {
    "dependency-audit": {
      "command": "npx",
      "args": ["-y", "dependency-audit-mcp"]
    }
  }
}

Example prompts

  • "Audit this repo's dependencies — what's outdated or deprecated?" (agent reads package.json, calls audit_dependencies)

  • "Is request deprecated? What should I use instead?"

  • "How far behind is my ^4.17.0 of lodash?"

Output at a glance

✓ up-to-date   ·  patch   △ minor   ⚠ major behind

  package                      range        → latest       gap         behind     license
⚠ react                        ^17.0.2      → 19.1.0        major       210        MIT
△ zod                          ^3.20.0      → 3.23.8        minor       28         MIT
⚠ request                      ^2.88.0      → 2.88.2        patch                  Apache-2.0  DEPRECATED

Config

Env var

Default

Purpose

NPM_REGISTRY

https://registry.npmjs.org

Override for private/mirror registries.

How it works

package.json text
   │
   ├─ parse dependencies / devDependencies (+ optional peer)
   ├─ for each dep → npm registry metadata (bounded concurrency)
   ├─ semver-diff installed lower-bound vs dist-tags.latest
   └─ collect deprecation + license ──► sorted, worst-first report

Non-registry ranges (workspace:, file:, git+…, *) are listed as skipped rather than guessed at.

Develop

npm install
npm run build
node dist/index.js

License

MIT © Anicodeth

Available Tools

2 tools
audit_dependenciesAudit a project's npm dependenciesA

Given the contents of a package.json, report every dependency's freshness against the npm registry: how far behind latest it is (patch/minor/major), how many versions behind, whether it's DEPRECATED, and its license. Reach for this when asked to 'update dependencies', 'check what's outdated', 'is anything deprecated', or before a dependency bump — it gives the agent real registry facts instead of guessing from stale training data. Read the repo's package.json and pass its full text as packageJson.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeDevNoInclude devDependencies (default true).
includePeerNoInclude peerDependencies (default false).
packageJsonYesThe FULL text of the package.json file to audit (JSON). The tool parses dependencies from it.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool queries the npm registry and produces a report with specific fields. However, it doesn't state whether the tool is read-only, potential rate limits, or failure modes. The 'real registry facts' line adds rationale rather than behavioral detail.

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?

The description is exactly two sentences with no filler. The first sentence front-loads the core purpose and outputs. The second sentence provides clear usage guidance and input preparation. Every word 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?

Without an output schema, the description adequately lists the return fields (patch/minor/major, versions behind, deprecated, license) and gives strong usage context. It could mention edge cases (e.g., invalid package.json, registry unavailability) or error handling, but for an audit tool the key information is present.

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 100% with each parameter described. The description adds value by directing the agent to read the repo's package.json and pass it as the `packageJson` parameter, which clarifies the expected input. It doesn't expand on includeDev/includePeer beyond the schema definitions.

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 clearly states the tool reports each dependency's freshness against the npm registry, including how far behind (patch/minor/major), versions behind, deprecated status, and license. This is a specific verb+resource with concrete outputs. However, it does not differentiate itself from the sibling tool 'check_package'.

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?

The description explicitly gives trigger phrases ('update dependencies', 'check what's outdated', 'is anything deprecated') and context (before a dependency bump). It also instructs the agent to read the repo's package.json and pass its full text. It lacks exclusions or mentions of alternatives, so not a 5.

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

check_packageCheck a single package's statusA

Look up one npm package: its latest version, how far a given range/version is behind, deprecation status, and license. Use for a quick one-off check ('is X deprecated?', 'what's the latest Y?', 'how far behind is my Z?') without needing a whole package.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name, e.g. 'lodash', '@types/node'.
rangeNoThe version or range you currently use, e.g. '^4.17.0'. Defaults to 'latest' (reports latest only).

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the read-only nature via 'Look up' and 'reports', and lists the specific data returned (version, range lag, deprecation, license). It does not mention error behavior or rate limits, but for a simple lookup this is adequate.

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 sentences, no wasted words. The first sentence front-loads the core purpose and outputs; the second provides usage guidance. Every phrase earns its place.

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?

The tool is simple (2 params, no output schema), and the description covers all essential return values, usage context, and alternatives. It is fully self-contained for selecting and invoking the tool correctly.

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 100%, but the description adds meaning by explaining how the 'range' parameter works ('how far a given range/version is behind') and provides usage examples. This exceeds the baseline of 3 by giving context beyond the schema.

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?

The description states a specific verb ('Look up') and resource ('one npm package'), and lists concrete outputs: latest version, range comparison, deprecation status, and license. It explicitly contrasts with 'single package' vs. the sibling 'audit_dependencies', making the distinction clear.

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?

It provides explicit usage context: 'Use for a quick one-off check... without needing a whole package.json.' This implies when to use this tool over a bulk audit, though it doesn't name the alternative explicitly. The exclusion ('without needing a whole package.json') gives practical guidance.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedaudit_dependencies
    • First observedcheck_package

TDQS

A4.2/5.0
Disambiguation5/5

The two tools have clearly distinct scopes: audit_dependencies evaluates an entire package.json against the registry, while check_package focuses on a single package. There is no ambiguity about which tool to use for a given request.

Naming Consistency5/5

Both tools follow the same verb_noun pattern with lowercase and underscores: 'audit_dependencies' and 'check_package'. The naming is consistent and predictable.

Tool Count3/5

With only two tools, the server feels thin for a general dependency-audit purpose, but it does cover the two primary use cases: whole-project audit and single-package lookup. The count is borderline but not unreasonable for such a narrow domain.

Completeness4/5

The core auditing operations are covered: checking a full dependency set and checking an individual package. Minor gaps exist, such as lack of support for lockfiles or batch version comparisons, but these are workarounds and not severe.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Anicodeth/dependency-audit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server