Elasticsearch Semantic Search MCP Server

by jedrazb
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • The MCP server provides semantic search functionality through Elasticsearch, enabling users to search through Search Labs blog posts that have been indexed using Elastic Open Crawler.

Servidor MCP: herramienta de búsqueda semántica de Elasticsearch

Repositorio de demostración para: https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/

Tabla de contenido


Descripción general

Este repositorio proporciona una implementación en Python de un servidor MCP para búsqueda semántica a través de publicaciones del blog de Search Labs indexadas en Elasticsearch .

Se supone que ha rastreado las publicaciones del blog y las ha almacenado en el índice search-labs-posts usando Elastic Open Crawler .


Ejecución del servidor MCP

Agregue ES_URL y ES_AP_KEY al archivo .env (consulte aquí para generar una clave API con permisos mínimos)

Inicie el servidor en MCP Inspector :

make dev

Una vez en ejecución, acceda al Inspector MCP en: http://localhost:5173


Integración con Claude Desktop

Para agregar el servidor MCP a Claude Desktop :

make install-claude-config

Esto actualiza claude_desktop_config.json en tu directorio personal. En el siguiente reinicio, la aplicación Claude detectará el servidor y cargará la herramienta declarada.


Publicaciones del blog de Crawling Search Labs

1. Verificar la configuración del rastreador

Para comprobar si Elastic Open Crawler funciona, ejecute:

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"

Esto debería imprimir el contenido rastreado de una sola página .


2. Configurar Elasticsearch

Configurar la URL y la clave API de Elasticsearch .

Genere una clave API con permisos mínimos de rastreador :

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" } }

Copie el valor encoded de la respuesta y configúrelo como API_KEY .


3. Actualizar la asignación de índices para la búsqueda semántica

Asegúrate de que el índice search-labs-posts exista. Si no, créalo:

PUT search-labs-posts

Actualice el mapeo para habilitar la búsqueda semántica :

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

El campo body se indexa como texto semántico utilizando el modelo ELSER de Elasticsearch .


4. Empieza a gatear

Ejecute el rastreador para completar el índice:

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] Si usa un clúster Elasticsearch nuevo , espere a que se inicie el modelo ELSER antes de indexar.


5. Verificar documentos indexados

Compruebe si los documentos fueron indexados:

GET search-labs-posts/_count

Esto devolverá el recuento total de documentos en el índice. También puede verificarlo en Kibana .


¡Listo! Ya puedes realizar búsquedas semánticas en las publicaciones del blog de Search Labs.

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

Un servidor MCP de Python que permite la búsqueda semántica a través de publicaciones del blog de Search Labs indexadas en Elasticsearch, lo que permite a Claude recuperar de forma inteligente información relevante del contenido del blog.

  1. Table of Contents
    1. Overview
      1. Running the MCP Server
        1. Integrating with Claude Desktop
          1. Crawling Search Labs Blog Posts
            1. 1. Verify Crawler Setup
            2. 2. Configure Elasticsearch
            3. 3. Update Index Mapping for Semantic Search
            4. 4. Start Crawling
            5. 5. Verify Indexed Documents
          ID: ovfbwy77z2