Elasticsearch MCP サーバー
導入
Elasticsearch Model Context Protocol(MCP)サーバーは、Spring AI MCPをベースに開発されたサーバーアプリケーションです。MCPを通じて様々なデータ処理ワークフローを容易に定義し、Elasticsearchクラスター内で結果を効率的にインデックス化および検索できるように設計されています。
主な特徴
- MCPツールの自動登録と実行:Spring Boot環境で
@Tool
アノテーションを使用して定義された機能は、MCPサーバーに自動的に登録されます。これにより、外部クライアント(例:Claude、FastMCP CLI)は、標準のJSON-RPCベースの通信を介してこれらの関数を呼び出すことができます。 - Elasticsearch クラスター統合: 公式の Elasticsearch Java クライアントを使用して、クラスターのヘルスチェック、インデックス マッピングのルックアップ、ドキュメントのインデックス作成と検索などの主要な Elasticsearch API を簡単に呼び出し、結果を MCP ツールの形式で提供します。
- スケーラブルなアーキテクチャ:モジュール型のパッケージ構造により、異なるElasticsearchバージョン間でクライアント設定を柔軟に分離・管理できます。また、新しいツールや外部連携機能も簡単に追加できるように設計されています。
利用可能なMCPツール
get_cluster_health
: Elasticsearch クラスターのステータスに関する基本情報を返します。get_cluster_statistics
: クラスター名、UUID、ステータス、ノード ロール、OS および JVM リソースの使用状況、インデックス数、シャード メトリックなどの包括的なクラスター統計を取得します。get_cat_mappings
: 特定の Elasticsearch インデックスのフィールド マッピング情報を取得します。get_cat_indices
: Elasticsearch 内のすべてのインデックスのリストを取得します。get_cat_indices_by_name
: 指定されたインデックス名またはワイルドカードパターンに一致するインデックスのリストを取得します。get_cat_aliases
: Elasticsearch 内のすべてのエイリアスのリストを取得します。get_cat_aliases_by_name
: 指定されたエイリアス名またはワイルドカードパターンに一致するエイリアスのリストを取得します。get_document_search_by_index
: AI 生成の queryDSL を使用して、Elasticsearch インデックス内のドキュメントを検索します。get_shard_allocation
: Elasticsearch クラスター内のシャード割り当てに関する情報を返します。get_shard_allocation_for_node
: Elasticsearch クラスター内の特定のノードのシャード割り当てに関する情報を返します。
テクノロジースタック
- 言語: Java 17
- フレームワーク: Spring Boot 3.4.5、Spring AI MCP
- 検索エンジン: Elasticsearch 7.16以降
- ビルドツール: Gradle 8.12
前提条件
このプロジェクトをビルドして実行するには、次のソフトウェアが必要です。
- JDK: バージョン17以降
- 実行中のElasticsearchインスタンス: バージョン7.16以降
- MCP クライアント (例: Claude Desktop)
インストールと実行
ローカル環境でプロジェクトをセットアップして実行する方法は次のとおりです。
1. ソースコードのクローンを作成する
git clone https://github.com/silbaram/elasticsearch-mcp-server.git
cd elasticsearch-mcp-server
2. mcp-server
モジュールのapplication.yml
を設定する
mcp-server/src/main/resources/application.yml
にあるapplication.yml
ファイルを開き、Elasticsearch クラスター情報を設定します。
elasticsearch:
version: "8.6.1" # Specifies the version of the Elasticsearch cluster to connect to.
search:
hosts:
- http://localhost:9200 # Specifies the access address of the Elasticsearch cluster.
3. 構築する
プロジェクトをビルドするには、次のコマンドを使用します。
- ビルドされた JAR ファイルは
mcp-server/build/libs/
ディレクトリにあります。
4. MCPクライアントを構成する
- MCP クライアントを起動します。(MCP クライアントの一覧は、MCP クライアント リストで確認できます。このガイドでは、Claude Desktop を例として使用します。)
- MCP クライアントの設定メニューで、「開発者」>「MCP サーバー」に移動します。
- 「設定の編集」ボタンをクリックし、次の内容で新しい MCP サーバー設定を追加します。(先ほど作成した JAR ファイルへの実際のパスを使用する必要があります。)
{
"mcpServers": {
"elasticsearch-server": {
"command": "java",
"args": [
"-Dusername=YOUR_USERNAME",
"-Dpassword=YOUR_PASSWORD",
"-jar",
"/path/to/your/mcp-server.jar"
]
}
}
}
-Dusername
(オプション): Elasticsearch クラスターにアクセスするために必要なユーザー ID を指定します。(例: -Dusername=elastic
)-Dpassword
(オプション): Elasticsearch クラスターにアクセスするために必要なパスワードを指定します。(例: -Dpassword=yoursecurepassword
)/path/to/your/mcp-server.jar
: これは、ビルドされたmcp-server.jar
ファイルへの実際のフル パスに置き換える必要があります。