Skip to main content
Glama

Elasticsearch Semantic Search MCP Server

MCP サーバー: Elasticsearch セマンティック検索ツール

デモリポジトリ: https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/

目次


概要

このリポジトリは、 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

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Elasticsearch でインデックスされた Search Labs ブログ投稿を通じてセマンティック検索を可能にする Python MCP サーバー。これにより、Claude はブログ コンテンツから関連情報をインテリジェントに取得できます。

  1. 目次
    1. 概要
      1. MCPサーバーの実行
        1. Claude Desktopとの統合
          1. クロール検索ラボのブログ投稿
            1. 1. クローラーの設定を確認する
            2. 2. Elasticsearchを設定する
            3. 3. セマンティック検索のインデックスマッピングを更新する
            4. 4. 這い始める
            5. 5. インデックスされたドキュメントを検証する

          Related MCP Servers

          • A
            security
            A
            license
            A
            quality
            An MCP server that enables Claude to perform web searches using Perplexity's API with intelligent model selection based on query intent and support for domain and recency filtering.
            Last updated -
            6
            JavaScript
            MIT License
            • Apple
          • A
            security
            A
            license
            A
            quality
            Provides an MCP protocol interface for interacting with Elasticsearch 7.x databases, supporting comprehensive search functionality including aggregations, highlighting, and sorting.
            Last updated -
            3
            2
            Python
            Apache 2.0
          • -
            security
            F
            license
            -
            quality
            An MCP server that integrates with Claude to provide smart documentation search capabilities across multiple AI/ML libraries, allowing users to retrieve and process technical information through natural language queries.
            Last updated -
            Python
          • A
            security
            A
            license
            A
            quality
            Connects Claude and other MCP clients to Elasticsearch data, allowing users to interact with their Elasticsearch indices through natural language conversations.
            Last updated -
            3
            2,300
            358
            Rust
            Apache 2.0

          View all related MCP servers

          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