Skip to main content
Glama
jedrazb

Elasticsearch Semantic Search MCP Server

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


Related MCP server: Elasticsearch 7.x MCP Server

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

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