mcpField
D
dependency-mcp

dependency-mcp

ローカル
github.com/niradler開発ツール152 週間前に更新

dependency-mcp について

dependency-mcpは、7つのパッケージレジストリを横断してバージョンやメタデータを調べるMCPサーバーです。個別検索と並列バッチ処理に対応し、依存関係の検証や監査に使えます。

主な機能

  1. 017つのレジストリで最新バージョンを検索
  2. 02指定バージョンの存在確認
  3. 03パッケージのメタデータとバージョン一覧を取得
  4. 04複数パッケージの一括チェック
  5. 05バッチ内の個別エラーを分離

活用シーン

  1. 01開発中の依存パッケージ更新確認
  2. 02CI/CDで固定バージョンを検証
  3. 03依存関係監査でパッケージ情報を確認

MCP 対応

stdio経由で、パッケージ検索、バージョン検証、メタデータ取得、一括処理のツールをMCPクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"niradler-dependency": {
"command": "npx",
"args": [
"-y",
"dependency-mcp"
]
}
}
}
起動コマンドnpx -y dependency-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdependency-mcp0.0.5

ツール

6

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
registryenumはい確認するパッケージレジストリ/マネージャーnpm | pypi | maven | nuget | rubygems | crates | go
package_namestringはい確認するパッケージ名

詳細

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。