dependency-mcp について
dependency-mcpは、7つのパッケージレジストリを横断してバージョンやメタデータを調べるMCPサーバーです。個別検索と並列バッチ処理に対応し、依存関係の検証や監査に使えます。
主な機能
- 017つのレジストリで最新バージョンを検索
- 02指定バージョンの存在確認
- 03パッケージのメタデータとバージョン一覧を取得
- 04複数パッケージの一括チェック
- 05バッチ内の個別エラーを分離
活用シーン
- 01開発中の依存パッケージ更新確認
- 02CI/CDで固定バージョンを検証
- 03依存関係監査でパッケージ情報を確認
MCP 対応
stdio経由で、パッケージ検索、バージョン検証、メタデータ取得、一括処理のツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| registry | enum | はい | 確認するパッケージレジストリ/マネージャーnpm | pypi | maven | nuget | rubygems | crates | go |
| package_name | string | はい | 確認するパッケージ名 |
詳細
Dependency MCP サーバー
複数のパッケージマネージャーとレジストリにわたってパッケージのバージョンを確認するための、Model Context Protocol(MCP)サーバーです。
特長
- マルチ言語対応:NPM、PyPI、Maven、NuGet、RubyGems、Crates.io、Go モジュールのパッケージを確認できます
- 最新バージョンの検索:任意のパッケージの最新バージョンを取得できます
- バージョンの存在確認:特定のバージョンが存在するか確認できます
- パッケージ情報:すべてのバージョンを含む詳細なパッケージメタデータを取得できます
- バッチ処理:複数のパッケージを同時に確認し、効率を高めます
- 簡単なインストール:npx でインストールして実行できます
対応パッケージマネージャー
- npm - Node.js パッケージ
- pypi - Python パッケージ
- maven - Java パッケージ(形式:
groupId:artifactId) - nuget - .NET パッケージ
- rubygems - Ruby gems
- crates - Rust crates
- go - Go モジュール
インストール
グローバルインストール
npm install -g dependency-mcp
npx で実行(インストール不要)
npx dependency-mcp
ローカル開発
git clone <repository>
cd dependency-mcp
npm install
npm start
使用方法
サーバーは stdio トランスポートを使用する MCP サーバーとして動作します。MCP 対応クライアントでの使用を想定しています。
利用可能なツール
単一パッケージ用ツール
1~2 個のパッケージを確認する場合や、詳細な情報が必要な場合にこれらのツールを使用します。
1. get_latest_version
パッケージの最新バージョンを取得します。依存関係の更新、バージョン確認、最新の安定版リリースが必要な場合に使用します。
パラメーター:
package_name(string):パッケージ名registry(string):パッケージレジストリ(npm、pypi、maven、nuget、rubygems、crates、go)
例:
{
"package_name": "express",
"registry": "npm"
}
2. check_version_exists
特定のバージョンが存在するか確認します。依存関係の検証、CI/CD チェック、バージョンの互換性確認に使用します。
パラメーター:
package_name(string):パッケージ名version(string):確認するバージョンregistry(string):パッケージレジストリ
例:
{
"package_name": "flask",
"version": "2.3.0",
"registry": "pypi"
}
3. get_package_info
すべてのバージョンを含む詳細なパッケージ情報を取得します。依存関係の監査、セキュリティレビュー、包括的なパッケージメタデータが必要な場合に使用します。
パラメーター:
package_name(string):パッケージ名registry(string):パッケージレジストリ
例:
{
"package_name": "lodash",
"registry": "npm"
}
複数パッケージ用ツール
3 個以上のパッケージを確認する場合や、一括処理を行う場合にこれらのツールを使用します。
4. get_latest_versions
複数のパッケージの最新バージョンを同時に取得します。依存関係を 3 個以上確認する場合に使用します。最大 100 個のパッケージを並行処理します。
パラメーター:
packages(array):パッケージ名の配列registry(string):パッケージレジストリ
例:
{
"packages": ["react", "lodash", "axios"],
"registry": "npm"
}
5. check_versions_exist
複数のパッケージについて、特定のバージョンが存在するか確認します。一括での依存関係検証、CI/CD パイプラインのチェック、複数パッケージのバージョン互換性の確認に使用します。
パラメーター:
packages(array):package_nameとversionを含むパッケージオブジェクトの配列registry(string):パッケージレジストリ
例:
{
"packages": [
{ "package_name": "react", "version": "18.2.0" },
{ "package_name": "lodash", "version": "4.17.21" },
{ "package_name": "axios", "version": "1.6.0" }
],
"registry": "npm"
}
6. get_packages_info
複数のパッケージについて、包括的な詳細情報を取得します。依存関係の監査、セキュリティレビュー、一括でのパッケージ分析に使用します。
パラメーター:
packages(array):パッケージ名の配列registry(string):パッケージレジストリ
例:
{
"packages": ["react", "lodash", "axios"],
"registry": "npm"
}
ツール選択ガイド
単一パッケージ用ツールを使用する場合:
- 確認するパッケージが 1~2 個
- 詳細な情報(バージョン、ホームページ、リポジトリ)が必要
- 1 つのパッケージについて特定のバージョンを検証
- 開発中に手早く確認
複数パッケージ用ツールを使用する場合:
- 確認するパッケージが 3 個以上
- 依存関係の一括検証
- CI/CD パイプラインのチェック
- 依存関係の監査やセキュリティレビュー
- 複数のパッケージを扱う、パフォーマンスが重要なシナリオ
パフォーマンスに関する注意点:
- 単一パッケージツール:1~2 個のパッケージには高速です
- 複数パッケージツール:並列処理により、5 個以上のパッケージでは 3~5 倍高速です
- エラーの分離:失敗したパッケージがバッチ全体に影響することはありません
- バッチの上限:1 リクエストあたり最大 100 個のパッケージです
バッチ処理
複数のパッケージをチェックする際、複数パッケージツールを使うとパフォーマンスが大幅に向上します。
メリット
- 往復遅延を解消:1 回のリクエストで最大 100 個のパッケージをチェックできます
- 一貫したエラー処理:個々のパッケージの失敗がバッチ全体に影響することはありません
- 並列処理:効率を最大化するため、すべてのパッケージを同時にチェックします
- API のオーバーヘッドを削減:外部レジストリへの HTTP リクエスト数が減ります
制限事項
- 最大バッチサイズ:1 リクエストあたり 100 個のパッケージです
- レート制限:外部 API への過剰なリクエストを防ぐため、組み込みの遅延を設けています
- タイムアウト処理:リクエストごとに 10 秒でタイムアウトし、適切にフォールバックします
- メモリ使用量:大きなバッチでは、より多くのメモリを消費する可能性があります
バッチツールを使用する場面
- 依存関係の監査:プロジェクト内の複数のパッケージをチェックします
- バージョンの比較:複数のパッケージ間でバージョンを比較します
- 一括更新:新しいバージョンが利用可能なパッケージを特定します
- CI/CD パイプライン:複数のパッケージのバージョンを同時に検証します
本番環境での考慮事項
パフォーマンス
- 並行処理:複数パッケージツールは
Promise.allを使って並列実行します - レート制限:外部 API へのリクエスト間に、組み込みの 100ms の遅延を設けています
- タイムアウト処理:10 秒でタイムアウトし、適切にエラーを処理します
- メモリ管理:大きなバッチを効率的に処理します
信頼性
- エラーの分離:個々のパッケージの失敗が、バッチ内のほかのパッケージに影響することはありません
- ネットワークの耐障害性:一時的なネットワークの問題を適切に処理します
- API のフォールバック:外部 API を利用できない場合も、適切に機能を縮退します
- 検証:包括的な入力検証により、無効なリクエストを防ぎます
- レジストリ固有の処理:一部のネットワーク環境では、Maven レジストリの応答が遅くなる場合があります
セキュリティ
- 入力のサニタイズ:すべての入力を検証し、サニタイズします
- レート制限:外部 API の不正使用を防ぎます
- エラーメッセージ:内部の詳細を公開しない、安全なエラーメッセージを返します
- タイムアウト保護:リクエストがハングするのを防ぎます
モニタリング
- タイムスタンプ:すべてのレスポンスに、追跡用の ISO タイムスタンプが含まれます
- エラー追跡:デバッグ用の詳細なエラー情報を提供します
- パフォーマンス指標:タイムアウトとレート制限の追跡機能が組み込まれています
Claude Desktop の設定
以下を Claude Desktop の設定ファイルに追加してください。
Windows
%APPDATA%\Claude\claude_desktop_config.json
macOS
~/Library/Application Support/Claude/claude_desktop_config.json
Linux
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"dependency-checker": {
"command": "npx",
"args": ["dependency-mcp"]
}
}
}
レスポンスの例
最新バージョンのレスポンス
{
"package": "express",
"registry": "npm",
"found": true,
"latest_version": "4.18.2",
"description": "Fast, unopinionated, minimalist web framework"
}
バージョンチェックのレスポンス
{
"package": "flask",
"version": "2.3.0",
"registry": "pypi",
"exists": true
}
パッケージ情報のレスポンス
{
"package": "lodash",
"registry": "npm",
"found": true,
"latest_version": "4.17.21",
"description": "Lodash modular utilities.",
"versions": ["4.17.21", "4.17.20", "..."],
"homepage": "https://lodash.com/",
"repository": "git+https://github.com/lodash/lodash.git"
}
特殊な形式に関する注意点
Maven
Maven パッケージは、groupId:artifactId 形式で指定してください。
{
"package_name": "org.springframework:spring-core",
"registry": "maven"
}
Go Modules
Go モジュールには、モジュールの完全なパスを使用してください。
{
"package_name": "github.com/gorilla/mux",
"registry": "go"
}
エラー処理
サーバーは、よくある状況に対して詳細なエラーメッセージを返します。
- パッケージが見つからない
- ネットワーク接続の問題
- 無効なパッケージ名の形式
- レジストリ API のエラー
- レート制限の超過
- サーバーエラー(5xx レスポンス)
- リクエストのタイムアウト
- 入力検証エラー
エラーレスポンスの形式
すべてのエラーレスポンスには、以下が含まれます。
error:人が読めるエラーメッセージtimestamp:エラー発生時の ISO タイムスタンプpackage:エラーの原因となったパッケージ名registry:エラーが発生したレジストリ
入力の検証
サーバーはすべての入力を検証します。
- パッケージ名:空でない文字列で、500 文字未満である必要があります
- バージョン:空でない文字列で、100 文字未満である必要があります
- レジストリ:サポート対象のレジストリのいずれかである必要があります
- バッチサイズ:1 リクエストあたり最大 100 パッケージです
- 必須パラメーター:すべての必須フィールドが指定されている必要があります
レスポンスの想定
単一パッケージ用ツール:
- 成功:
found: trueを含む、パッケージの完全な情報を返します - 見つからない場合:
found: falseとエラーメッセージを返します - ネットワークの問題:説明的なメッセージを含むエラーを返します
- 常に含まれるフィールド:
timestamp、package、registry
複数パッケージ用ツール:
- 成功:それぞれに個別のステータスが付いた結果の配列を返します
- 一部成功:成功するパッケージと失敗するパッケージが混在する場合、それぞれの結果を返します
- エラーの分離:失敗したパッケージが成功したパッケージに影響することはありません
- バッチ処理:効率化のため、すべてのパッケージを並行して処理します
- 一貫した形式:各結果は単一パッケージ用ツールと同じ構造に従います
開発
プロジェクト構成
dependency-mcp/
├── src/
│ ├── index.js # Main MCP server
│ └── packageChecker.js # Package registry handlers
├── test/
│ └── test.js # Basic tests
├── package.json
└── README.md
テストの実行
npm test
デバッグモード
npm run dev
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。