MCP サーバー: Elasticsearch セマンティック検索ツール
デモリポジトリ: https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/
目次
Related MCP server: Elasticsearch 7.x MCP Server
概要
このリポジトリは、 ElasticsearchでインデックスされたSearch Labs ブログ投稿を通じてセマンティック検索を行うための MCP サーバーの Python 実装を提供します。
Elastic Open Crawlerを使用してブログ投稿をクロールし、 search-labs-postsインデックスに保存していることを前提としています。
MCPサーバーの実行
ES_URLとES_AP_KEYを.envファイルに追加します (最小限の権限で API キーを生成する方法については、こちらをご覧ください)
MCP Inspectorでサーバーを起動します。
実行したら、次の MCP インスペクターにアクセスします: http://localhost:5173
Claude Desktopとの統合
MCP サーバーをClaude Desktopに追加するには:
これにより、ホームディレクトリのclaude_desktop_config.jsonが更新されます。次回の再起動時に、Claude アプリはサーバーを検出し、宣言されたツールを読み込みます。
クロール検索ラボのブログ投稿
1. クローラーの設定を確認する
Elastic Open Crawler が動作するかどうかを確認するには、次のコマンドを実行します。
これにより、クロールされたコンテンツが1 ページから印刷されます。
2. Elasticsearchを設定する
Elasticsearch URL と API キーを設定します。
最小限のクローラー権限を持つ API キーを生成します:
応答からencoded値をコピーし、 API_KEYとして設定します。
3. セマンティック検索のインデックスマッピングを更新する
search-labs-postsインデックスが存在することを確認してください。存在しない場合は作成してください。
セマンティック検索を有効にするにはマッピングを更新します。
bodyフィールドは**、Elasticsearch の ELSER モデルを使用してセマンティック テキスト**としてインデックス化されます。
4. 這い始める
クローラーを実行してインデックスを作成します。
新しい Elasticsearch クラスターを使用する場合は、インデックスを作成する前にELSER モデルが開始するまで待機します。
5. インデックスされたドキュメントを検証する
ドキュメントがインデックスされたかどうかを確認します。
インデックス内のドキュメントの総数が返されます。Kibanaでも確認できます。
完了! Search Labsのブログ投稿でセマンティック検索ができるようになりました