モデルコンテキストプロトコルを使用してエージェントをElasticsearchに接続する
モデルコンテキストプロトコル サーバーを使用して、Elasticsearch 内のデータとチャットしてみましょう。
同僚とチャットするのと同じくらい簡単にデータとやりとりできたらどうでしょうか?「先月の 500 ドルを超えるすべての注文を表示してください」や「5 つ星のレビューを最も多く獲得した製品はどれですか」と尋ねるだけで、クエリを必要とせずに、即座に正確な回答が得られることを想像してみてください。
モデルコンテキストプロトコル (MCP) によりこれが可能になります。会話型 AI をデータベースや外部 API にシームレスに接続し、複雑なリクエストを自然な会話に変換します。現代の LLM は言語の理解に優れていますが、その真の可能性は現実世界のシステムと統合されたときに発揮されます。MCP は両者の間のギャップを埋め、データのやりとりをより直感的かつ効率的にします。
この投稿では、次の内容について説明します。
MCPアーキテクチャ – 内部の仕組み
Elasticsearchに接続されたMCPサーバーの利点
これからはエキサイティングな時代が来ます!MCP と Elastic スタックの統合により、情報の操作方法が変わり、複雑なクエリが日常会話と同じくらい直感的になります。
モデルコンテキストプロトコル
Anthropic が開発したモデル コンテキスト プロトコル(MCP) は、安全な双方向チャネルを通じて AI モデルを外部データ ソースに接続するオープン スタンダードです。これは、会話のコンテキストを維持しながら外部システムにリアルタイムでアクセスするという、AI の主要な制限を解決します。
MCPアーキテクチャ
モデルコンテキストプロトコルアーキテクチャは、次の 2 つの主要コンポーネントで構成されます。
MCP クライアント– ユーザーに代わって情報を要求したりタスクを実行したりする AI アシスタントとチャットボット。
MCP サーバー– 関連情報を取得したり、要求されたアクション (外部 API の呼び出しなど) を実行したりするデータ リポジトリ、検索エンジン、および API。
MCPサーバーは、クライアントに対して主に4つの機能を提供します。
リソース- LLM インタラクションのコンテキストとして取得および使用できる構造化されたデータ、ドキュメント、およびコンテンツ。これにより、AI アシスタントはデータベース、検索インデックス、その他のソースから関連情報にアクセスできるようになります。
ツール- LLM が外部システムと対話したり、計算を実行したり、実際のアクションを実行できるようにする実行可能関数。これらのツールは、テキスト生成を超えて AI 機能を拡張し、アシスタントがワークフローをトリガーしたり、API を呼び出したり、データを動的に操作したりできるようにします。
プロンプト- 一般的な LLM インタラクションを標準化して共有するための再利用可能なプロンプト テンプレートとワークフロー。
サンプリング- セキュリティとプライバシーを維持しながら、高度なエージェント動作を可能にするために、クライアントを通じて LLM 完了を要求します。

MCPサーバー + Elasticsearch
従来の検索拡張生成 (RAG) システムはユーザーのクエリに基づいてドキュメントを検索しますが、MCP はさらに一歩進んで、AI エージェントがリアルタイムでタスクを動的に構築して実行できるようにします。これにより、ユーザーは次のような自然言語の質問をすることができます。
「先月の 500 ドルを超える注文をすべて表示してください。」
「5 つ星のレビューを最も多く獲得した製品はどれですか?」
クエリを 1 つも書かなくても、即座に正確な回答が得られます。
MCP は以下を通じてこれを実現します。
動的なツール選択 - エージェントは、ユーザーの意図に基づいて、MCP サーバー経由で公開される適切なツールをインテリジェントに選択します。一般的に、「よりスマートな」LLM は、状況に応じて適切な議論に基づいて適切なツールを選択するのが得意です。
双方向通信 – エージェントとデータソースは情報をスムーズに交換し、必要に応じてクエリを絞り込みます(例:最初にインデックス マッピングを検索し、その後で ES クエリを構築します。
マルチツール オーケストレーション - ワークフローは複数の MCP サーバーのツールを同時に活用できます。
永続的なコンテキスト - エージェントは以前のやり取りを記憶し、会話全体の継続性を維持します。
Elasticsearch に接続された MCP サーバーは、強力なリアルタイム検索アーキテクチャを実現します。AI エージェントは、オンデマンドで Elasticsearch データを探索、クエリ、分析できます。シンプルなチャット インターフェースを通じてデータを検索できます。
MCP は、データの取得だけでなく、アクションも可能にします。他のツールと統合してワークフローをトリガーし、プロセスを自動化し、分析システムに洞察を提供します。MCP は、検索と実行を分離することで、AI を活用したアプリケーションの柔軟性と最新性を維持し、エージェント ワークフローにシームレスに統合します。
ハンズオン: Elasticsearch データとチャットできる MCP サーバー
MCP サーバー経由で Elasticsearch と対話するには、少なくとも次の機能が必要です。
インデックスを取得する
マッピングを取得する
Elasticsearch のクエリ DSL を使用して検索を実行する
私たちのサーバーは TypeScript で記述されており、公式のMCP TypeScript SDKを使用します。セットアップには、MCP クライアントが組み込まれているため、Claude デスクトップ アプリ (無料版で十分です) をインストールすることをお勧めします。当社の MCP サーバーは基本的に、MCP ツールを通じて公式のJavaScript Elasticsearch クライアントを公開します。
まず、Elasticsearch クライアントと MCP サーバーを定義します。
const esClient = new Client({
node: url,
auth: {
apiKey: apiKey,
},
});
const server = new McpServer({
name: "elasticsearch-mcp-server",
version: "0.1.0",
});Elasticsearch と対話できる次の MCP サーバー ツールを使用します。
インデックスの一覧表示( list_indices ): このツールは、利用可能なすべての Elasticsearch インデックスを取得し、インデックス名、ヘルス ステータス、ドキュメント数などの詳細を提供します。
マッピングの取得( get_mappings ): このツールは、指定された Elasticsearch インデックスのフィールド マッピングを取得し、ユーザーが保存されているドキュメントの構造とデータ型を理解するのに役立ちます。
検索( search ): このツールは、提供されたクエリ DSL を使用して Elasticsearch 検索を実行します。テキスト フィールドのハイライトが自動的に有効になり、関連する検索結果を簡単に識別できるようになります。
完全な Elasticsearch MCP サーバーの実装は、elastic/mcp-server-elasticsearchリポジトリで入手できます。
インデックスとチャット
Elasticsearch MCP サーバーを設定して、「先月からの 500 ドルを超えるすべての注文を検索する」など、データに関する自然言語の質問をする方法を見てみましょう。
Claudeデスクトップアプリを構成する
Claudeデスクトップアプリを開く
設定 > 開発者 > MCP サーバーに移動します
「設定の編集」をクリックして、この設定を
claude_desktop_config.jsonに追加します。
{
"mcpServers": {
"Elasticsearch MCP Server": {
"command": "npx",
"args": [
"-y",
"@elastic/mcp-server-elasticsearch"
],
"env": {
"ES_URL": "",
"ES_API_KEY": ""
}
}
}
}注: このセットアップでは、Elastic が公開した@elastic/mcp-server-elasticsearch npm パッケージを利用します。ローカルで開発する場合は、Elasticsearch MCP サーバーの起動に関する詳細をこちらで確認できます。
Elasticseachインデックスを作成する
このデモの「注文」インデックスを作成するために、サンプルデータを使用できます。
これにより、「先月からの500ドル以上のすべての注文を検索する」などのクエリを試すことができます。
使い始める
Claudeデスクトップアプリで新しい会話を開く
MCPサーバーは自動的に接続します
Elasticsearch データについて質問してみましょう。
自然言語を使用して Elasticsearch データをクエリすることがいかに簡単かを確認するには、このデモをご覧ください。

これは次のように機能します。
「先月からの 500 ドルを超えるすべての注文を検索する」と要求されると、LLM は指定された制約を使用して Elasticsearch インデックスを検索する意図を認識します。効果的な検索を実行するために、エージェントは次のことを行います。
インデックス名を確認します。
ordersordersインデックスのマッピングを理解するインデックスマッピングと互換性のあるクエリDSLを構築し、最後に検索リクエストを実行します。
この相互作用は次のように表すことができます。

まとめ
モデル コンテキスト プロトコルは、Elasticsearch データとのやり取りを強化し、複雑なクエリの代わりに自然言語による会話を可能にします。MCP は、AI 機能とデータを連携させることで、やり取り全体を通じてコンテキストを維持する、より直感的で効率的なワークフローを作成します。
Elasticsearch MCP サーバーはパブリック npm パッケージ ( @elastic/mcp-server-elasticsearch ) として利用できるため、開発者にとって統合が簡単になります。最小限のセットアップで、チームはデータの探索、ワークフローのトリガー、簡単な会話による分析情報の取得を開始できます。
自分で体験する準備はできましたか?今すぐElasticsearch MCP サーバーを試して、データとのチャットを始めましょう。




