Elasticsearch 7.x MCP 服务器
Elasticsearch 7.x 的 MCP 服务器,提供与 Elasticsearch 7.x 版本的兼容性。
特征
- 提供与 Elasticsearch 7.x 交互的 MCP 协议接口
- 支持基本的 Elasticsearch 操作(ping、info 等)
- 支持完整的搜索功能,包括聚合查询、突出显示、排序和其他高级功能
- 通过任何 MCP 客户端轻松访问 Elasticsearch 功能
要求
- Python 3.10+
- Elasticsearch 7.x(推荐 7.17.x)
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 Elasticsearch 7.x MCP 服务器:
npx -y @smithery/cli install @imlewc/elasticsearch7-mcp-server --client claude
手动安装
环境变量
服务器需要以下环境变量:
ELASTIC_HOST
:Elasticsearch 主机地址(例如http://localhost:9200 )ELASTIC_USERNAME
:Elasticsearch 用户名ELASTIC_PASSWORD
:Elasticsearch 密码MCP_PORT
:(可选)MCP 服务器监听端口,默认 9999
使用 Docker Compose
- 创建一个
.env
文件并设置ELASTIC_PASSWORD
:
ELASTIC_PASSWORD=your_secure_password
- 启动服务:
这将启动一个三节点 Elasticsearch 7.17.10 集群、Kibana 和 MCP 服务器。
使用 MCP 客户端
您可以使用任何 MCP 客户端连接到 MCP 服务器:
from mcp import MCPClient
client = MCPClient("localhost:9999")
response = client.call("es-ping")
print(response) # {"success": true}
API 文档
目前支持的 MCP 方法:
es-ping
:检查 Elasticsearch 连接es-info
:获取 Elasticsearch 集群信息es-search
:在 Elasticsearch 索引中搜索文档
搜索 API 示例
基本搜索
# 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"]
})
发展
- 克隆存储库
- 安装开发依赖项
- 运行服务器:
elasticsearch7-mcp-server
执照
[LICENSE 文件中的许可证]
中文詳細