Skip to main content
Glama
jedrazb

Elasticsearch Semantic Search MCP Server

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_URLES_AP_KEY.envファイルに追加します (最小限の権限で API キーを生成する方法については、こちらをご覧ください)

MCP Inspectorでサーバーを起動します。

make dev

実行したら、次の MCP インスペクターにアクセスします: http://localhost:5173


Claude Desktopとの統合

MCP サーバーをClaude Desktopに追加するには:

make install-claude-config

これにより、ホームディレクトリのclaude_desktop_config.jsonが更新されます。次回の再起動時に、Claude アプリはサーバーを検出し、宣言されたツールを読み込みます。


クロール検索ラボのブログ投稿

1. クローラーの設定を確認する

Elastic Open Crawler が動作するかどうかを確認するには、次のコマンドを実行します。

docker run --rm \ --entrypoint /bin/bash \ -v "$(pwd)/crawler-config:/app/config" \ --network host \ docker.elastic.co/integrations/crawler:latest \ -c "bin/crawler crawl config/test-crawler.yml"

これにより、クロールされたコンテンツが1 ページから印刷されます。


2. Elasticsearchを設定する

Elasticsearch URL と API キーを設定します。

最小限のクローラー権限を持つ API キーを生成します:

POST /_security/api_key { "name": "crawler-search-labs", "role_descriptors": { "crawler-search-labs-role": { "cluster": ["monitor"], "indices": [ { "names": ["search-labs-posts"], "privileges": ["all"] } ] } }, "metadata": { "application": "crawler" } }

応答からencoded値をコピーし、 API_KEYとして設定します。


3. セマンティック検索のインデックスマッピングを更新する

search-labs-postsインデックスが存在することを確認してください。存在しない場合は作成してください。

PUT search-labs-posts

セマンティック検索を有効にするにはマッピングを更新します。

PUT search-labs-posts/_mappings { "properties": { "body": { "type": "text", "copy_to": "semantic_body" }, "semantic_body": { "type": "semantic_text", "inference_id": ".elser-2-elasticsearch" } } }

bodyフィールドは**、Elasticsearch の ELSER モデルを使用してセマンティック テキスト**としてインデックス化されます。


4. 這い始める

クローラーを実行してインデックスを作成します。

docker run --rm \ --entrypoint /bin/bash \ -v "$(pwd)/crawler-config:/app/config" \ --network host \ docker.elastic.co/integrations/crawler:latest \ -c "bin/crawler crawl config/elastic-search-labs-crawler.yml"
TIP

新しい Elasticsearch クラスターを使用する場合は、インデックスを作成する前にELSER モデルが開始するまで待機します。


5. インデックスされたドキュメントを検証する

ドキュメントがインデックスされたかどうかを確認します。

GET search-labs-posts/_count

インデックス内のドキュメントの総数が返されます。Kibanaでも確認できます。


完了! Search Labsのブログ投稿セマンティック検索ができるようになりました

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jedrazb/elastic-semantic-search-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server