Elasticsearch 7.x MCP Server
[](https://mseep.ai/app/imlewc-elasticsearch7-mcp-server)
# Elasticsearch 7.x MCP Server
[](https://smithery.ai/server/@imlewc/elasticsearch7-mcp-server)
An MCP server for Elasticsearch 7.x, providing compatibility with Elasticsearch 7.x versions.
<a href="https://glama.ai/mcp/servers/zxwxozvlme">
<img width="380" height="200" src="https://glama.ai/mcp/servers/zxwxozvlme/badge" alt="Elasticsearch 7.x Server MCP server" />
</a>
## Features
- 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
## Requirements
- Python 3.10+
- Elasticsearch 7.x (7.17.x recommended)
## Installation
### Installing via Smithery
To install Elasticsearch 7.x MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@imlewc/elasticsearch7-mcp-server):
```bash
npx -y @smithery/cli install @imlewc/elasticsearch7-mcp-server --client claude
```
### Manual Installation
```bash
pip install -e .
```
## Environment Variables
The server requires the following environment variables:
- `ELASTIC_HOST`: Elasticsearch host address (e.g., http://localhost:9200)
- `ELASTIC_USERNAME`: Elasticsearch username
- `ELASTIC_PASSWORD`: Elasticsearch password
- `MCP_PORT`: (Optional) MCP server listening port, default 9999
## Using Docker Compose
1. Create a `.env` file and set `ELASTIC_PASSWORD`:
```
ELASTIC_PASSWORD=your_secure_password
```
2. Start the services:
```bash
docker-compose up -d
```
This will start a three-node Elasticsearch 7.17.10 cluster, Kibana, and the MCP server.
## Using an MCP Client
You can use any MCP client to connect to the MCP server:
```python
from mcp import MCPClient
client = MCPClient("localhost:9999")
response = client.call("es-ping")
print(response) # {"success": true}
```
## API Documentation
Currently supported MCP methods:
- `es-ping`: Check Elasticsearch connection
- `es-info`: Get Elasticsearch cluster information
- `es-search`: Search documents in Elasticsearch index
### Search API Examples
#### Basic Search
```python
# Basic search
search_response = client.call("es-search", {
"index": "my_index",
"query": {
"match": {
"title": "search keywords"
}
},
"size": 10,
"from": 0
})
```
#### Aggregation Query
```python
# 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
```python
# 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"]
})
```
## Development
1. Clone the repository
2. Install development dependencies
3. Run the server: `elasticsearch7-mcp-server`
## License
[License in LICENSE file]
*[中文文档](README-cn.md)*TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: es-info retrieves server information, es-ping checks connectivity, and es-search performs document searches. There is no overlap or ambiguity between these functions, making tool selection straightforward for an agent.
All tool names follow a consistent 'es-' prefix and underscore-separated verb pattern (es-info, es-ping, es-search). This predictable naming convention enhances readability and usability across the tool set.
With only 3 tools, the server feels thin for an Elasticsearch domain, which typically involves operations like indexing, updating, deleting, and aggregating documents. The count is too low to cover the expected scope of a database/search engine server.
The tool set is severely incomplete for Elasticsearch functionality. It lacks essential CRUD operations (e.g., create, update, delete documents), index management, and query features beyond basic search, which will likely cause agent failures in handling typical database tasks.