mcpField
M
Maven Repository MCP Server

Maven Repository MCP Server

ローカル
github.com/Yanick-Salzmannバージョン管理274 週間前に更新

Maven Repository MCP Server について

Maven Repository MCP Server は、開発者や AI アシスタント向けに Maven アーティファクトの検索、バージョンや POM の取得、ビルドツール用依存関係の生成を行います。stdio と SSE に対応し、リクエストを制限します。

主な機能

  1. 01Mavenアーティファクトの検索
  2. 02アーティファクトのバージョン取得
  3. 03POM.xmlファイルの取得
  4. 04Maven・Gradle・SBT用スニペットの生成
  5. 05stdioとSSEのトランスポート
  6. 06レート制限と再試行処理

活用シーン

  1. 01キーワードで依存関係を検索
  2. 02利用可能なアーティファクトのバージョンを確認
  3. 03アーティファクトのPOMを調査
  4. 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 パッケージマネージャー

🛠️ インストールとセットアップ

  1. クローンして依存関係をインストールします:

    git clone <repository-url>
    cd mvn-repository-mcp-server
    npm install
    
  2. プロジェクトをビルドします:

    npm run build
    
  3. サーバーを実行します:

    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 グループ ID
  • artifactId(string、必須):Maven アーティファクト ID
  • version(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 グループ ID
  • artifactId(string、必須):Maven アーティファクト ID
  • version(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

🤝 コントリビューション

コントリビューションを歓迎します。問題の報告、機能リクエスト、プルリクエストをお気軽にお寄せください。

開発環境のセットアップ
  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します
  3. 変更を加えます
  4. 該当する場合はテストを追加します
  5. プルリクエストを送信します

📄 ライセンス

このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。

🔗 関連リンク

コメント

MCP は初めてですか?

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

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