Elasticsearch/OpenSearch MCP 服务器
概述
一个模型上下文协议(MCP)服务器实现,提供与 Elasticsearch 和 OpenSearch 的交互。该服务器通过一系列工具实现文档搜索、索引分析以及集群管理。
演示
https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15
功能
常规操作
general_api_request: 执行常规 HTTP API 请求。用于任何没有专用工具的 Elasticsearch/OpenSearch API。
索引操作
list_indices: 列出所有索引。get_index: 返回一个或多个索引的信息(映射、设置、别名)。create_index: 创建新索引。delete_index: 删除索引。
文档操作
search_documents: 搜索文档。index_document: 在索引中创建或更新文档。get_document: 通过 ID 获取文档。delete_document: 通过 ID 删除文档。delete_by_query: 删除符合提供的查询条件的文档。
集群操作
get_cluster_health: 返回集群健康状态的基本信息。get_cluster_stats: 返回集群统计的高级概览。
别名操作
list_aliases: 列出所有别名。get_alias: 获取特定索引的别名信息。put_alias: 为特定索引创建或更新别名。delete_alias: 删除特定索引的别名。
配置环境变量
将 .env.example 文件复制到 .env 并相应更新值。
启动 Elasticsearch/OpenSearch 集群
使用 Docker Compose 启动 Elasticsearch/OpenSearch 集群:
# 对于 Elasticsearch
docker-compose -f docker-compose-elasticsearch.yml up -d
# 对于 OpenSearch
docker-compose -f docker-compose-opensearch.yml up -d
默认 Elasticsearch 用户名为 elastic,密码为 test123。默认 OpenSearch 用户名为 admin,密码为 admin。
您可以通过 http://localhost:5601 访问 Kibana/OpenSearch 仪表板。
Stdio
选项 1:使用 uvx
使用 uvx 将自动从 PyPI 安装包,无需本地克隆仓库。将以下配置添加到 's config 文件 claude_desktop_config.json。
// 对于 Elasticsearch
{
"mcpServers": {
"elasticsearch-mcp-server": {
"command": "uvx",
"args": [
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "https://localhost:9200",
"ELASTICSEARCH_USERNAME": "elastic",
"ELASTICSEARCH_PASSWORD": "test123"
}
}
}
}
// 对于 OpenSearch
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uvx",
"args": [
"opensearch-mcp-server"
],
"env": {
"OPENSEARCH_HOSTS": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
}
}
}
选项 2:使用 uv 进行本地开发
使用 uv 需要本地克隆仓库并指定源代码路径。将以下配置添加到 Claude Desktop 的 config 文件 claude_desktop_config.json。
// 对于 Elasticsearch
{
"mcpServers": {
"elasticsearch-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/src/elasticsearch_mcp_server",
"run",
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "https://localhost:9200",
"ELASTICSEARCH_USERNAME": "elastic",
"ELASTICSEARCH_PASSWORD": "test123"
}
}
}
}
// 对于 OpenSearch
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/src/elasticsearch_mcp_server",
"run",
"opensearch-mcp-server"
],
"env": {
"OPENSEARCH_HOSTS": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
}
}
}
SSE
选项 1:使用 uvx
# 导出环境变量
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# 默认情况下,SSE MCP 服务器将在 http://127.0.0.1:8000/sse 上提供服务
uvx elasticsearch-mcp-server --transport sse
# 可以使用 --host、--port 和 --path 选项指定主机、端口和路径
uvx elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
选项 2:使用 uv
# 默认情况下,SSE MCP 服务器将在 http://127.0.0.1:8000/sse 上提供服务
uv run src/server.py elasticsearch-mcp-server --transport sse
# 可以使用 --host、--port 和 --path 选项指定主机、端口和路径
uv run src/server.py elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
Streamable HTTP
选项 1:使用 uvx
# 导出环境变量
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# 默认情况下,Streamable HTTP MCP 服务器将在 http://127.0.0.1:8000/mcp 上提供服务
uvx elasticsearch-mcp-server --transport streamable-http
# 可以使用 --host、--port 和 --path 选项指定主机、端口和路径
uvx elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
选项 2:使用 uv
# 默认情况下,Streamable HTTP MCP 服务器将在 http://127.0.0.1:8000/mcp 上提供服务
uv run src/server.py elasticsearch-mcp-server --transport streamable-http
# 可以使用 --host、--port 和 --path 选项指定主机、端口和路径
uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
许可证
本项目根据 Apache License Version 2.0 授权 - 详细内容请参阅 LICENSE 文件。

