dep-diff-mcp について
dep-diff-mcpは、npm、PyPI、GitHub Actionsの依存パッケージ更新を確認する開発者向けMCPサーバーです。バージョン差分、リリースノートの変更点、セキュリティ修正、移行リンクをまとめ、リスク順に推奨を示します。
主な機能
- 01単一パッケージの更新分析
- 02最大50件の一括分析
- 03Semver分類と破壊的変更の検出
- 04セキュリティ修正と移行リンク
- 05リスク順の推奨提示
活用シーン
- 01Dependabotプルリクエストの確認
- 02バージョン更新前のリスク評価
- 03依存関係の一括更新の優先順位付け
MCP 対応
MCPクライアントに `analyze_package_change` と `analyze_packages_bulk` を提供します。応答にはJSONと、宣言済みの出力スキーマで検証された構造化コンテンツが含まれます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://dep-diff.digicatalyst.ca/mcpclaude mcp add --transport http digicatalyst-systems-dep-diff https://dep-diff.digicatalyst.ca/mcp{"mcpServers":{"digicatalyst-systems-dep-diff":{"type":"http","url":"https://dep-diff.digicatalyst.ca/mcp"}}}Cursor で開く{"servers":{"digicatalyst-systems-dep-diff":{"type":"http","url":"https://dep-diff.digicatalyst.ca/mcp"}}}VS Code で開く{"mcpServers":{"digicatalyst-systems-dep-diff":{"type":"http","url":"https://dep-diff.digicatalyst.ca/mcp"}}}{"mcpServers":{"digicatalyst-systems-dep-diff":{"serverUrl":"https://dep-diff.digicatalyst.ca/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | パッケージ名(例:'react'、'requests') |
| ecosystem | enum | はい | パッケージのエコシステムnpm | pypi | github-actions |
| toVersion | string | はい | 対象バージョン(例:'19.0.0') |
| fromVersion | string | はい | 現在のバージョン(例:'18.2.0') |
詳細
dep-diff-mcp
ロックファイルの差分を、人が読みやすいアップグレード計画に変換する MCP サーバーです。
AI アシスタント(Cursor、Claude Desktop、Claude Code)に Dependabot の PR、npm outdated の出力、またはパッケージバージョンの任意の組み合わせを渡すと、優先順位付きのアップグレード計画が返されます。semver の区分、GitHub のリリースノートから抽出した破壊的変更、対象範囲で修正される CVE、移行ガイドへのリンク、パッケージごとの明確な推奨事項を確認できます。
出力例
アシスタントに、自然な言葉で質問します。
lodash を 4.17.20 から 4.17.21 に上げても安全ですか?
analyze_package_change を呼び出すと、次の結果が返ります。
{
"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"
}
通常なら確認せずにマージするパッチ更新です。しかし、重大度が高いコマンドインジェクションを解消します。このようなケースに対応するために、このサーバーがあります。
GitHub Actions
Dependabot が作成する PR の多くは actions/* に関するもので、スケジュールされたバージョン更新にはアドバイザリーデータがありません。次のように質問します。
tj-actions/changed-files を 45.0.7 から 46.0.1 に上げても安全ですか?
{
"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"
}
Dependabot の一括更新
Dependabot の PR です。実際にリスクがあるのはどれですか?
analyze_packages_bulk は、最大 50 件の変更を一度に受け取り、次の順にランク付けします。
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 */ ]
}
各項目の recommendation フィールドを要約すると、この一括更新の結果は次の順になります。
| パッケージ | 変更 | 区分 | 判定 |
|---|---|---|---|
lodash | 4.17.20 → 4.17.21 | patch | 推奨 — セキュリティ修正 2 件(高/重大を含む) |
axios | 1.6.0 → 1.7.9 | minor | 推奨 — セキュリティ修正 1 件(高/重大を含む) |
express | 4.18.2 → 5.0.0 | major | 推奨 — セキュリティ修正 2 件、破壊的変更 3 件、移行ガイド |
requests(PyPI) | 2.31.0 → 2.32.0 | minor | 推奨 — セキュリティ修正 2 件 |
typescript | 5.3.3 → 5.4.5 | minor | 安全性が高い可能性あり — semver によると、マイナーバージョンでは追加的な変更 |
順序に注目してください。patch の更新が major の更新より上位になっています。semver から変更の大きさは分かりますが、何が緊急かは分かりません。
上記の結果はすべてホスト型インスタンスからの実際の出力で、明記された箇所のみ短縮しています。
インストール
Claude Code
ユーザースコープで、1 つのコマンドを実行します(すべてのプロジェクトで利用できます)。
claude mcp add -s user dep-diff -- npx -y @digicatalyst/dep-diff-mcp
プロジェクトスコープの場合(リポジトリのルートにチームで共有する .mcp.json を作成します)。
claude mcp add -s project dep-diff -- npx -y @digicatalyst/dep-diff-mcp
明示的にトークンを指定する場合(gh CLI で認証済みなら、この手順は省略できます。下記のGitHub トークン(任意ですが推奨)を参照してください)。
claude mcp add -s user --env GITHUB_TOKEN=ghp_xxx dep-diff -- npx -y @digicatalyst/dep-diff-mcp
動作を確認します。
claude mcp list
サーバーを読み込むには、Claude Code のセッションを再起動してください。
Cursor と Claude Desktop
MCP クライアントの設定に追加します。
- Cursor:
~/.cursor/mcp.json - Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または%APPDATA%\Claude\claude_desktop_config.json(Windows)
{
"mcpServers": {
"dep-diff": {
"command": "npx",
"args": ["-y", "@digicatalyst/dep-diff-mcp"]
}
}
}
MCP クライアントを再起動します。「この Dependabot の PR でリスクがあるのは何ですか?」のように質問すると、ツールが自動的に呼び出されます。
ホスト型リモート(インストール不要)
ホスト型インスタンスがストリーミング可能な HTTP 経由で https://dep-diff.digicatalyst.ca/mcp で稼働しているため、npm パッケージをインストールせずに利用できます。
claude mcp add -s user -t http dep-diff https://dep-diff.digicatalyst.ca/mcp
または、クライアント設定で指定します。
{
"mcpServers": {
"dep-diff": {
"type": "http",
"url": "https://dep-diff.digicatalyst.ca/mcp"
}
}
}
ホスト型インスタンスは独自のトークンで GitHub に認証するため、何も設定しなくても、リリースノートの検索を最大レート制限で利用できます。自分の GitHub 利用枠でリクエストを処理したい場合に限り、URL に ?githubToken=ghp_xxx を指定してください。ステートレスで、クエリのログは保持しません。詳しくは PRIVACY.md を参照してください。トークンを自分のマシンの外に出したくない場合は、代わりに npm パッケージをローカルで実行してください。
同じインスタンスは Smithery にも掲載されており、Smithery のゲートウェイ経由で接続できます。
GitHub トークン(任意ですが、推奨)
このサーバーはリリースノートを読み込むため、GitHub API を呼び出します。トークンがない場合、1 時間あたり 60 リクエスト(GitHub の未認証ユーザー向け上限)となります。単一パッケージをときどき確認するには十分ですが、ロックファイルを一括で分析するには足りません。
サーバーは次の順序でトークンを解決します。
- 設定されている場合は、
GITHUB_TOKEN環境変数。 gh auth token— GitHub CLI がインストールされ、認証済みの場合、サーバーはそのトークンを自動的に使用します。設定を変更する必要はありません。- 匿名(60 リクエスト/時)。
推奨:gh CLI を使用する
すでに gh がインストールされている場合(brew install gh && gh auth login)、ここで終わりです。サーバーが既存の認証情報を使用します。平文のトークンをどこかに保存する必要はありません。
代替方法:環境変数
https://github.com/settings/tokens できめ細かいアクセス許可のトークンを作成します。
- トークン名:
dep-diff-mcp - 有効期限: 90 日(定期的にローテーションしてください)
- リポジトリアクセス:
Public Repositories (read-only)— プライベートリポジトリへのアクセス権はありません - 権限: デフォルトのパブリック読み取り権限のみ —
repo、workflow、user、または書き込みスコープは付与しないでください
MCP の設定でこのトークンを参照します。
{
"mcpServers": {
"dep-diff": {
"command": "npx",
"args": ["-y", "@digicatalyst/dep-diff-mcp"],
"env": { "GITHUB_TOKEN": "github_pat_xxx" }
}
}
}
セキュリティに関する注意事項
- この設定ファイルはディスク上に平文で保存されます。アクセス権を適切に制限し(
chmod 600)、トークンを AI チャット、課題、共有画面に貼り付けないでください — 会話の記録は保存されることがよくあります。 - この設定に記載するトークンには、最小限の権限(パブリックリポジトリの読み取りのみ)を付与してください。漏えいしても、すでに読み取り可能なパブリックデータを読み取れるだけです。
- トークンは定期的にローテーションしてください。漏えいした可能性のあるトークンは、https://github.com/settings/tokens で取り消してください。
- サーバーがトークンを stdout/stderr やレスポンスのペイロードに書き込むことはありません。
ツール
analyze_package_change
1 つのパッケージのアップグレードを分析します。入力:ecosystem(npm、pypi、または github-actions)、name、fromVersion、toVersion。
analyze_packages_bulk
最大 50 個のパッケージのアップグレードを並列で分析します。リスク順(security > caution > review > likely-safe > safe)に並べたパッケージと、概要の件数を返します。
取得できる情報
- Semver 分類 — major/minor/patch/downgrade/unknown
- 破壊的変更 — GitHub リリースノートの見出しから抽出
- セキュリティ修正 —
fromVersion時点で存在し、toVersion時点で解消されている CVE(OSV.dev 経由) - 移行リンク — リリースノートで見つかったアップグレードガイドの URL
- 推奨事項 — 1 行の判定とレベル
どちらのツールも、上記の JSON テキストブロックと、宣言された outputSchema に対して検証される MCP の
構造化コンテンツ
の 2 つの形式でこれらを返します。構造化出力に対応するクライアントは、テキストを再解析せずに、レスポンスから recommendationLevel や securityFixes[] を直接読み取れます。対応していないクライアントにも影響はありません — テキストブロックは変更されません。
対応エコシステム
- npm
- PyPI
- GitHub Actions — アクションの参照名を名前として渡します(
actions/checkout、またはネストされたgithub/codeql-action/init)。アクションの参照名はすでにリポジトリの識別子であるため、レジストリを検索せずにリリースノートと破壊的変更を解決でき、4 -> 5のようなメジャータグのみの指定も正しく分類されます。
開発
npm install
npm run build
GITHUB_TOKEN=ghp_xxx npm run inspect # MCP Inspector
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。