Dep Diff Mcp

io.github.DigiCatalyst-Systems由 GitHub 帳號 DigiCatalyst-Systems 發布v0.3.3更新於 Oct 30, 2026

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

已驗證Streamable HTTP可網頁執行開發者工具安全與監控

概覽

AI 產生的概覽

把 lockfile 差異或 Dependabot PR 轉成易讀的升級計畫,涵蓋 npm、PyPI 與 GitHub Actions,提供語意化版本等級、破壞性變更、已修補的漏洞與建議。

可以做什麼
  • 分析單一套件在兩個版本之間的升級,支援 npm、PyPI 與 GitHub Actions,回傳語意化版本等級、發布說明摘要、破壞性變更、安全修補、遷移連結與建議
  • 平行分析最多 50 項升級,回傳統一風險報告,依 security、caution、review、likely-safe、safe 排序並附上彙總計數
  • 結果同時以 JSON 文字區塊與符合已宣告輸出結構(outputSchema)的結構化內容回傳
適用情境
適合在審查 Dependabot 拉取請求、npm outdated 輸出或 lockfile 差異時使用,用來判斷哪些升級真正急迫,而不只是變更幅度大小,尤其能找出藏在修補版本裡的安全修補。
執行需求
可作為以 streamable HTTP 提供的遠端託管端點使用,也可透過 npx 執行 npm 套件在本機執行(需要 Node.js)。GitHub 權杖為選用但建議設定:GITHUB_TOKEN 環境變數、已登入的 gh CLI,或在託管網址加上 githubToken 查詢參數;未設定時 GitHub API 每小時僅 60 次請求。
安裝前請注意
GitHub 權杖會從 GITHUB_TOKEN、gh CLI 或 githubToken 網址參數讀取;README 提醒設定檔以明文保存權杖,應使用僅能讀取公開儲存庫的最小權限。託管執行個體使用自己的權杖,並稱無狀態、不記錄查詢日誌,但查詢仍會送往第三方伺服器;若希望權杖不離開本機,請在本機執行 npm 套件。套件名稱與版本會傳送給 GitHub 與 OSV.dev。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Dep Diff Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.DigiCatalyst-Systems%2Fdep-diff-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

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:

json
{  "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.

GitHub Actions

Dependabot opens more actions/* pull requests than almost anything else, and its scheduled version updates carry no advisory data. Ask:

Is it safe to bump tj-actions/changed-files from 45.0.7 to 46.0.1?

json
{  "package": "tj-actions/changed-files",  "ecosystem": "github-actions",  "semverClass": "major",  "repoUrl": "https://github.com/tj-actions/changed-files",  "securityFixes": [    {      "id": "GHSA-mrrh-fwg8-r2c3",      "summary": "tj-actions changed-files through 45.0.7 allows remote attackers to discover secrets",      "severity": "HIGH"    }  ],  "recommendation": "RECOMMENDED: 1 security fix(es) (incl. high/critical).",  "recommendationLevel": "security"}

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:

json
{  "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):

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

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

bash
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):

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

Verify:

bash
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)
json
{  "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:

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

Or in a client config:

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

The hosted instance authenticates to GitHub with its own token, so release-note lookups work at full rate limits without you configuring anything. Pass ?githubToken=ghp_xxx on the URL only if you would rather requests counted against your own GitHub quota. It 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.

The same instance is also listed on Smithery, which proxies to it through their gateway.

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:

json
{  "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, pypi, or github-actions), 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

Both tools return this twice: as the JSON text block shown above, and as MCP structured content validated against a declared outputSchema. A client that supports structured output can read recommendationLevel or securityFixes[] straight off the response instead of re-parsing the text. Clients that don't are unaffected — the text block is unchanged.

Supported ecosystems

  • npm
  • PyPI
  • GitHub Actions — pass the action reference as the name (actions/checkout, or a nested github/codeql-action/init). An action reference is already a repository coordinate, so release notes and breaking changes resolve without a registry lookup, and bare major tags such as 4 -> 5 classify correctly.

Development

bash
npm installnpm run buildGITHUB_TOKEN=ghp_xxx npm run inspect   # MCP Inspector

License

MIT

來源:README.md,提交 7925ca1

工具

2

analyze_package_change

Analyze a single dependency version change

Given one package and two versions (from -> to), returns a structured upgrade analysis: semver classification, GitHub release notes summary, detected breaking changes, security advisories fixed in the range, migration guide links, and a clear recommendation. Use when the user asks about a specific package upgrade ('what changed between react 18 and 19', 'is it safe to bump axios from 0.27 to 1.0', 'what does upgrading lodash 4.17.20 to 4.17.21 fix'). Supports npm, pypi, and github-actions (use the action reference as the name, e.g. actions/checkout). For analyzing many packages at once or a Dependabot batch, use analyze_packages_bulk instead.

輸入參數name必填ecosystem必填toVersion必填fromVersion必填

analyze_packages_bulk

Analyze multiple dependency changes in parallel

Analyzes a list of package upgrades in parallel and returns a unified risk report with packages ranked by recommendation level (security > caution > review > likely-safe > safe). Use when the user provides many dependency changes from a Dependabot PR, npm outdated output, lockfile diff, or batch upgrade. Returns: total count, breakdown by semver class, total security fixes found, packages with breaking changes, and per-package details. Limit 50 packages per call (chunk larger lists).

輸入參數changes必填

版本歷史

2
  1. v0.3.3最新Oct 30, 2026
  2. v0.3.2Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分