Maven Repository MCP Server について
Maven Repository MCP Server は、開発者や AI アシスタント向けに Maven アーティファクトの検索、バージョンや POM の取得、ビルドツール用依存関係の生成を行います。stdio と SSE に対応し、リクエストを制限します。
主な機能
- 01Mavenアーティファクトの検索
- 02アーティファクトのバージョン取得
- 03POM.xmlファイルの取得
- 04Maven・Gradle・SBT用スニペットの生成
- 05stdioとSSEのトランスポート
- 06レート制限と再試行処理
活用シーン
- 01キーワードで依存関係を検索
- 02利用可能なアーティファクトのバージョンを確認
- 03アーティファクトのPOMを調査
- 04ビルドファイルに依存関係宣言を追加
MCP 対応
Mavenアーティファクト検索とバージョン照会、POM取得、依存関係スニペット生成のツールを MCP クライアントに公開します。stdio と SSE のトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Maven Repository MCP サーバー
mvnrepository.com と Maven Central の Maven アーティファクトを検索し、操作するための包括的な機能を提供する Model Context Protocol (MCP) サーバーです。
🚀 機能
- Maven アーティファクトの検索:キーワードで Maven アーティファクトを検索し、詳細な結果を表示します
- バージョン管理:任意のアーティファクトで利用可能なすべてのバージョンを取得します
- 依存関係管理:Maven、Gradle、SBT ですぐに使える依存関係の記述を取得します
- POM へのアクセス:Maven Central から完全な POM.xml ファイルを直接取得します
- 複数のトランスポート:stdio と SSE(Server-Sent Events)プロトコルの両方をサポートします
- レート制限:mvnrepository.com に配慮するための、インテリジェントなレート制限機能を内蔵しています
📋 前提条件
- Node.js 18+
- npm または yarn パッケージマネージャー
🛠️ インストールとセットアップ
-
クローンして依存関係をインストールします:
git clone <repository-url> cd mvn-repository-mcp-server npm install -
プロジェクトをビルドします:
npm run build -
サーバーを実行します:
npm start
🚀 使用方法
トランスポートプロトコル
このサーバーは、2 つの通信プロトコルをサポートしています。
stdio トランスポート(デフォルト)
ローカル開発や MCP クライアントとの統合に最適です。
# Using npm scripts
npm run start:stdio
npm run dev:stdio
# Direct execution
node dist/index.js stdio
node dist/index.js # stdio is default
SSE トランスポート
ウェブベースのクライアントや HTTP 統合に最適です。
# Using npm scripts (port 3000)
npm run start:sse
npm run dev:sse
# Direct execution
node dist/index.js sse
node dist/index.js sse --port 8080 # custom port
SSE エンドポイント:
- SSE ストリーム:
http://localhost:<port>/sse - メッセージの投稿:
http://localhost:<port>/message
利用可能なツール
1. search_maven_artifacts
キーワードを使って Maven アーティファクトを検索します。
パラメーター:
query(string、必須):Maven アーティファクトの検索語maxResults(number、任意):返す結果の最大数(デフォルト:10)
例:
{
"name": "search_maven_artifacts",
"arguments": {
"query": "spring-boot-starter",
"maxResults": 5
}
}
2. get_artifact_versions
特定のアーティファクトで利用可能なすべてのバージョンを取得します。
パラメーター:
groupId(string、必須):Maven グループ ID(例:'org.springframework.boot')artifactId(string、必須):Maven アーティファクト ID(例:'spring-boot-starter')
例:
{
"name": "get_artifact_versions",
"arguments": {
"groupId": "junit",
"artifactId": "junit"
}
}
3. get_pom_xml
特定のアーティファクトバージョンの完全な POM.xml ファイルを取得します。
パラメーター:
groupId(string、必須):Maven グループ IDartifactId(string、必須):Maven アーティファクト IDversion(string、必須):特定のバージョン
例:
{
"name": "get_pom_xml",
"arguments": {
"groupId": "org.apache.commons",
"artifactId": "commons-lang3",
"version": "3.12.0"
}
}
4. get_dependency_snippets
Maven、Gradle、SBT 用の依存関係宣言を生成します。
パラメーター:
groupId(string、必須):Maven グループ IDartifactId(string、必須):Maven アーティファクト IDversion(string、必須):特定のバージョン
例:
{
"name": "get_dependency_snippets",
"arguments": {
"groupId": "com.fasterxml.jackson.core",
"artifactId": "jackson-core",
"version": "2.15.2"
}
}
🔧 開発
利用可能なスクリプト
npm run build- TypeScript を JavaScript にコンパイルしますnpm run build:watch- ウォッチモードでコンパイルしますnpm run start- コンパイル済みのサーバーを実行します(stdio トランスポート)npm run start:stdio- stdio トランスポートを明示的に使用しますnpm run start:sse- SSE トランスポートを使用します(ポート 3000)npm run dev:stdio- stdio でビルドして実行しますnpm run dev:sse- SSE でビルドして実行しますnpm run clean- コンパイル済みファイルを削除します
プロジェクト構成
mvn-repository-mcp-server/
├── src/
│ ├── index.ts # Main server entry point & CLI
│ ├── types.ts # TypeScript interfaces
│ └── searcher.ts # Core search & retrieval logic
├── dist/ # Compiled JavaScript output
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
└── README.md # This file
🎯 ユースケース
AI アシスタント向け
- 依存関係の発見:適切な Maven 依存関係をユーザーが見つけられるよう支援します
- バージョン管理:依存関係のバージョン選択や更新を支援します
- ビルドファイルの生成:さまざまなビルドツール向けの依存関係ブロックを生成します
- セキュリティ分析:既知の脆弱性があるアーティファクトを特定します
開発者向け
- クイック検索:ブラウザーを開かずに Maven アーティファクトをすばやく見つけます
- 依存関係の分析:POM ファイルと依存関係の構造を調べます
- 複数のビルドツールに対応:Maven、Gradle、SBT の記述を同時に取得します
- バージョンの比較:同じアーティファクトの異なるバージョンを比較します
統合例
AI コーディングアシスタントとの連携:
User: "Find me the latest Spring Boot starter for web development"
Assistant: Uses search_maven_artifacts → "spring-boot-starter-web"
Assistant: Uses get_dependency_snippets → Provides Maven/Gradle configs
依存関係の更新:
User: "Check if there are newer versions of JUnit available"
Assistant: Uses get_artifact_versions → Lists all JUnit versions with dates
Assistant: Highlights latest stable version and any security considerations
⚙️ 設定
レート制限
サーバーには、mvnrepository.com に配慮するためのインテリジェントなレート制限が組み込まれています。
- リクエスト間に最低 3 秒の間隔を設けます
- さらに 2~6 秒のランダムな遅延を追加します
- 403 エラーが発生した場合、指数バックオフで自動的に再試行します
タイムアウト設定
- デフォルトのリクエストタイムアウト:30 秒
- Maven Central の POM リクエスト:15 秒
- リクエスト失敗時の再試行は最大 3 回です
🔍 トラブルシューティング
よくある問題
403 アクセス拒否エラー:
- サーバーには、これを防ぐためのレート制限が実装されています
- 発生した場合、サーバーはバックオフして自動的に再試行します
- 問題が続く場合は、リクエスト頻度を下げることを検討してください
ネットワークのタイムアウト:
- インターネット接続を確認してください
- mvnrepository.com にアクセスできることを確認してください
- ファイアウォールまたはプロキシの設定を確認してください
SSE 接続の問題:
- 指定したポートが利用可能であることを確認してください
- 選択したポートのファイアウォール設定を確認してください
- 同じポートを使用している他のサービスがないことを確認してください
デバッグモード
詳細なログを出力するには、環境変数を設定します。
DEBUG=mvn-repository-mcp-server npm start
🤝 コントリビューション
コントリビューションを歓迎します。問題の報告、機能リクエスト、プルリクエストをお気軽にお寄せください。
開発環境のセットアップ
- リポジトリをフォークします
- フィーチャーブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
📄 ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。
🔗 関連リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。