- Explore MCP Servers
- elastic-semantic-search-mcp-server
Elastic Semantic Search Mcp Server
What is Elastic Semantic Search Mcp Server
The elastic-semantic-search-mcp-server is a Python-based MCP server designed for semantic search through indexed blog posts in Elasticsearch.
Use cases
Use cases include searching through large volumes of blog posts, enhancing user experience in content discovery, and providing intelligent search results based on semantic understanding.
How to use
To use the server, set up your Elasticsearch URL and API key in the .env file, then start the server using the command ‘make dev’. Access the MCP Inspector at http://localhost:5173.
Key features
Key features include semantic search capabilities using Elasticsearch’s ELSER model, integration with Claude Desktop, and the ability to crawl and index blog posts for enhanced search functionality.
Where to use
This server is ideal for applications requiring advanced search functionalities, particularly in content management systems, knowledge bases, and any platform that utilizes Elasticsearch for document storage.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Overview
What is Elastic Semantic Search Mcp Server
The elastic-semantic-search-mcp-server is a Python-based MCP server designed for semantic search through indexed blog posts in Elasticsearch.
Use cases
Use cases include searching through large volumes of blog posts, enhancing user experience in content discovery, and providing intelligent search results based on semantic understanding.
How to use
To use the server, set up your Elasticsearch URL and API key in the .env file, then start the server using the command ‘make dev’. Access the MCP Inspector at http://localhost:5173.
Key features
Key features include semantic search capabilities using Elasticsearch’s ELSER model, integration with Claude Desktop, and the ability to crawl and index blog posts for enhanced search functionality.
Where to use
This server is ideal for applications requiring advanced search functionalities, particularly in content management systems, knowledge bases, and any platform that utilizes Elasticsearch for document storage.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Content
MCP Server: Elasticsearch semantic search tool
Demo repo for: https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/
Table of Contents
Overview
This repository provides a Python implementation of an MCP server for semantic search through Search Labs blog posts indexed in Elasticsearch.
It assumes you’ve crawled the blog posts and stored them in the search-labs-posts index using Elastic Open Crawler.
Running the MCP Server
Add ES_URL and ES_AP_KEY into .env file, (take a look here for generating api key with minimum permissions)
Start the server in MCP Inspector:
make dev
Once running, access the MCP Inspector at: http://localhost:5173
Integrating with Claude Desktop
To add the MCP server to Claude Desktop:
make install-claude-config
This updates claude_desktop_config.json in your home directory. On the next restart, the Claude app will detect the server and load the declared tool.
Crawling Search Labs Blog Posts
1. Verify Crawler Setup
To check if the Elastic Open Crawler works, run:
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"
This should print crawled content from a single page.
2. Configure Elasticsearch
Set up Elasticsearch URL and API Key.
Generate an API key with minimum crawler permissions:
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"
}
}
Copy the encoded value from the response and set it as API_KEY.
3. Update Index Mapping for Semantic Search
Ensure the search-labs-posts index exists. If not, create it:
PUT search-labs-posts
Update the mapping to enable semantic search:
PUT search-labs-posts/_mappings
{
"properties": {
"body": {
"type": "text",
"copy_to": "semantic_body"
},
"semantic_body": {
"type": "semantic_text",
"inference_id": ".elser-2-elasticsearch"
}
}
}
The body field is indexed as semantic text using Elasticsearch’s ELSER model.
4. Start Crawling
Run the crawler to populate the index:
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]
If using a fresh Elasticsearch cluster, wait for the ELSER model to start before indexing.
5. Verify Indexed Documents
Check if the documents were indexed:
GET search-labs-posts/_count
This will return the total document count in the index. You can also verify in Kibana.
Done! You can now perform semantic searches on Search Labs blog posts
Dev Tools Supporting MCP
The following are the main code editors that support the Model Context Protocol. Click the link to visit the official website for more information.










