An MCP server for Elasticsearch 7.x, providing compatibility with Elasticsearch 7.x versions.
- Provides an MCP protocol interface for interacting with Elasticsearch 7.x
- Supports basic Elasticsearch operations (ping, info, etc.)
- Supports complete search functionality, including aggregation queries, highlighting, sorting, and other advanced features
- Easily access Elasticsearch functionality through any MCP client
- Python 3.10+
- Elasticsearch 7.x (7.17.x recommended)
To install Elasticsearch 7.x MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @imlewc/elasticsearch7-mcp-server --client claude
pip install -e .
The server requires the following environment variables:
ELASTIC_HOST
: Elasticsearch host address (e.g., http://localhost:9200)ELASTIC_USERNAME
: Elasticsearch usernameELASTIC_PASSWORD
: Elasticsearch passwordMCP_PORT
: (Optional) MCP server listening port, default 9999
- Create a
.env
file and setELASTIC_PASSWORD
:
ELASTIC_PASSWORD=your_secure_password
- Start the services:
docker-compose up -d
This will start a three-node Elasticsearch 7.17.10 cluster, Kibana, and the MCP server.
You can use any MCP client to connect to the MCP server:
from mcp import MCPClient client = MCPClient("localhost:9999") response = client.call("es-ping") print(response) # {"success": true}
Currently supported MCP methods:
es-ping
: Check Elasticsearch connectiones-info
: Get Elasticsearch cluster informationes-search
: Search documents in Elasticsearch index
# Basic search search_response = client.call("es-search", { "index": "my_index", "query": { "match": { "title": "search keywords" } }, "size": 10, "from": 0 })
# Aggregation query agg_response = client.call("es-search", { "index": "my_index", "size": 0, # Only need aggregation results, no documents "aggs": { "categories": { "terms": { "field": "category.keyword", "size": 10 } }, "avg_price": { "avg": { "field": "price" } } } })
# Advanced search with highlighting, sorting, and filtering advanced_response = client.call("es-search", { "index": "my_index", "query": { "bool": { "must": [ {"match": {"content": "search term"}} ], "filter": [ {"range": {"price": {"gte": 100, "lte": 200}}} ] } }, "sort": [ {"date": {"order": "desc"}}, "_score" ], "highlight": { "fields": { "content": {} } }, "_source": ["title", "date", "price"] })
- Clone the repository
- Install development dependencies
- Run the server:
elasticsearch7-mcp-server
[License in LICENSE file]