Back to Browse

Dep Diff MCP Server

Developer ToolsModerate6.6MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Translates a lockfile diff into a human-readable upgrade plan for npm and PyPI.

About

Translates a lockfile diff into a human-readable upgrade plan for npm and PyPI.

Remote endpoints: streamable-http: https://dep-diff.digicatalyst.ca/mcp

Security Report

6.6
Moderate6.6Moderate Risk

This is a well-structured MCP server for analyzing package dependency upgrades. The code exhibits strong security practices: authentication is optional but properly scoped (GitHub token for API rate limits only), no hardcoded secrets, safe input validation with Zod, and appropriate use of external APIs (npm registry, PyPI, GitHub, OSV.dev). Permissions align well with the server's purpose (network access for APIs, environment variables for optional token). Minor code quality observations around error handling breadth do not materially impact security. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

7 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

dep-diff-mcp

MCP server that translates a lockfile diff into a human-readable upgrade plan.

Point your AI assistant (Cursor, Claude Desktop, Claude Code) at a Dependabot PR, npm outdated output, or any pair of package versions, and get back a ranked upgrade plan: semver class, breaking changes pulled from GitHub release notes, CVEs fixed in the range, migration guide links, and a clear recommendation per package.

What it looks like

Ask your assistant, in plain language:

Is it safe to bump lodash from 4.17.20 to 4.17.21?

It calls analyze_package_change and gets back:

{
  "package": "lodash",
  "ecosystem": "npm",
  "fromVersion": "4.17.20",
  "toVersion": "4.17.21",
  "semverClass": "patch",
  "repoUrl": "https://github.com/lodash/lodash",
  "releaseCount": 0,
  "breakingChanges": [],
  "securityFixes": [
    {
      "id": "GHSA-29mw-wpgm-hmr9",
      "summary": "Regular Expression Denial of Service (ReDoS) in lodash",
      "severity": "MODERATE"
    },
    {
      "id": "GHSA-35jh-r3h4-6jhm",
      "summary": "Command Injection in lodash",
      "severity": "HIGH"
    }
  ],
  "migrationLinks": [],
  "recommendation": "RECOMMENDED: 2 security fix(es) (incl. high/critical).",
  "recommendationLevel": "security"
}

A patch bump you would normally merge without looking. It closes a HIGH-severity command injection. That is the case this server exists for.

A whole Dependabot batch

Here's my Dependabot PR — what's actually risky in it?

analyze_packages_bulk takes up to 50 changes at once and ranks them security > caution > review > likely-safe > safe:

{
  "totalPackages": 5,
  "bySemverClass": { "major": 1, "minor": 3, "patch": 1 },
  "securityFixesTotal": 7,
  "packagesWithBreakingChanges": 1,
  "packages": [ /* one entry per package, same shape as above */ ]
}

Condensing the recommendation field of each entry, that batch comes back in this order:

PackageChangeClassVerdict
lodash4.17.20 → 4.17.21patchRECOMMENDED — 2 security fixes (incl. high/critical)
axios1.6.0 → 1.7.9minorRECOMMENDED — 1 security fix (incl. high/critical)
express4.18.2 → 5.0.0majorRECOMMENDED — 2 security fixes; 3 breaking changes, migration guide
requests (PyPI)2.31.0 → 2.32.0minorRECOMMENDED — 2 security fixes
typescript5.3.3 → 5.4.5minorLIKELY SAFE — minor version, additive changes per semver

Note the ordering: the patch bump outranks the major one. Semver tells you how much changed; it does not tell you what is urgent.

Every response above is real output from the hosted instance, trimmed only where marked.

Install

Claude Code

One command, user scope (available in every project):

claude mcp add -s user dep-diff -- npx -y @digicatalyst/dep-diff-mcp

Project scope (writes .mcp.json at repo root, team-shared):

claude mcp add -s project dep-diff -- npx -y @digicatalyst/dep-diff-mcp

With an explicit token (skip this if you have the gh CLI authenticated — see GitHub token below):

claude mcp add -s user --env GITHUB_TOKEN=ghp_xxx dep-diff -- npx -y @digicatalyst/dep-diff-mcp

Verify:

claude mcp list

Restart the Claude Code session to pick up the server.

Cursor and Claude Desktop

Add to your MCP client config:

  • Cursor: ~/.cursor/mcp.json
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "dep-diff": {
      "command": "npx",
      "args": ["-y", "@digicatalyst/dep-diff-mcp"]
    }
  }
}

Restart your MCP client. Ask something like "what's risky in this Dependabot PR?" and the tools are invoked automatically.

Hosted remote (no install)

A hosted instance runs at https://dep-diff.digicatalyst.ca/mcp over streamable HTTP, so you can skip the npm package entirely:

claude mcp add -s user -t http dep-diff https://dep-diff.digicatalyst.ca/mcp

Or in a client config:

{
  "mcpServers": {
    "dep-diff": {
      "type": "http",
      "url": "https://dep-diff.digicatalyst.ca/mcp"
    }
  }
}

Pass a GitHub token with ?githubToken=ghp_xxx on the URL if you want higher rate limits. The hosted instance is stateless and keeps no logs of your queries — see PRIVACY.md. Run the npm package locally instead if you would rather your token never leave your machine.

GitHub token (optional but recommended)

The server hits the GitHub API to read release notes. Without a token you get 60 requests per hour (GitHub's anonymous limit) — enough for occasional single-package queries, not enough for bulk lockfile analysis.

The server resolves a token in this order:

  1. GITHUB_TOKEN environment variable, if set.
  2. gh auth token — if the GitHub CLI is installed and authenticated, the server uses that token automatically. No config change needed.
  3. Anonymous (60 req/hr).

Recommended: use the gh CLI

If you already have gh installed (brew install gh && gh auth login), stop here — the server picks up your existing auth. No plaintext token anywhere.

Alternative: environment variable

Create a fine-grained token at https://github.com/settings/tokens:

  • Token name: dep-diff-mcp
  • Expiration: 90 days (rotate periodically)
  • Repository access: Public Repositories (read-only) — no private repo access
  • Permissions: none beyond the default public read — do not grant repo, workflow, user, or any write scope

Then reference it in the MCP config:

{
  "mcpServers": {
    "dep-diff": {
      "command": "npx",
      "args": ["-y", "@digicatalyst/dep-diff-mcp"],
      "env": { "GITHUB_TOKEN": "github_pat_xxx" }
    }
  }
}

Security notes

  • This config file lives on your disk in plaintext. Keep perms tight (chmod 600) and do not paste the token into AI chats, issues, or shared screens — transcripts are often retained.
  • The token in this config should be least-privilege (public repo read only). Even leaked, it can only read public data you could already read.
  • Rotate tokens periodically. Revoke any token that may have been exposed at https://github.com/settings/tokens.
  • The server never writes the token to stdout/stderr or the response payload.

Tools

analyze_package_change

Analyze one package upgrade. Inputs: ecosystem (npm or pypi), name, fromVersion, toVersion.

analyze_packages_bulk

Analyze up to 50 package upgrades in parallel. Returns packages ranked by risk (security > caution > review > likely-safe > safe), plus summary counts.

What you get back

  • Semver classification — major / minor / patch / downgrade / unknown
  • Breaking changes — extracted from GitHub release notes headers
  • Security fixes — CVEs present at fromVersion but resolved at toVersion (via OSV.dev)
  • Migration links — upgrade guide URLs found in release notes
  • Recommendation — single-line verdict + level

Supported ecosystems

  • npm
  • PyPI

Development

npm install
npm run build
GITHUB_TOKEN=ghp_xxx npm run inspect   # MCP Inspector

License

MIT

Reviews

No reviews yet

Be the first to review this server!