使用说明
Elasticsearch MCP服务器
此存储库包含用于研究和评估的实验功能,尚未投入生产。
使用模型上下文协议(MCP)直接从任何MCP客户端(如Claude Desktop)连接到Elasticsearch数据。
此服务器使用模型上下文协议将代理连接到您的Elasticsearch数据。它允许您通过自然语言对话与Elasticsearch索引进行交互。
可用工具
list_indices:列出所有可用的Elasticsearch索引get_mappings:获取特定Elasticsearch索引的字段映射search:使用提供的查询DSL执行Elasticsearch搜索。支持突出显示、查询分析和查询解释。get_shards:获取所有或特定索引的分片信息
先决条件
- Elasticsearch实例
- Elasticsearch身份验证凭据(API密钥或用户名/密码)
- Docker(或OCI运行时)
- MCP客户端(如克劳德桌面)
演示
https://github.com/user-attachments/assets/5dd292e1-a728-4ca7-8f01-1380d1bebe0c
安装和设置
使用Docker
-
配置MCP客户端
- 打开您的MCP客户端。请参阅 MCP客户端列表,这里我们正在配置Claude Desktop。
- 首选 设置>开发人员>MCP服务器
- 点击
Edit Config并添加具有以下配置的新MCP服务器:
{ "mcpServers": { "elasticsearch-mcp-server": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "ES_URL", "-e", "ES_API_KEY", "docker.elastic.co/mcp/elasticsearch", "stdio" ], "env": { "ES_URL": "<your-elasticsearch-url>", "ES_API_KEY": "<your-api-key>" } } } } -
开始对话
- 在MCP客户端中打开新对话
- MCP服务器应自动连接
- 现在,您可以询问有关Elasticsearch数据的问题
使用已发布的NPM包
-
配置MCP客户端
- 打开您的MCP客户端。请参阅 MCP客户端列表,这里我们正在配置Claude Desktop。
- 首选 设置>开发人员>MCP服务器
- 点击
Edit Config并添加具有以下配置的新MCP服务器:
{ "mcpServers": { "elasticsearch-mcp-server": { "command": "npx", "args": [ "-y", "@elastic/mcp-server-elasticsearch" ], "env": { "ES_URL": "<your-elasticsearch-url>", "ES_API_KEY": "<your-api-key>", "OTEL_LOG_LEVEL": "none" } } } } -
开始对话
- 在MCP客户端中打开新对话
- MCP服务器应自动连接
- 现在,您可以询问有关Elasticsearch数据的问题
配置选项
Elasticsearch MCP服务器支持配置选项以连接到您的Elasticsearch:
[!注意] 您必须提供API密钥或用户名和密码进行身份验证。
| 环境变量 | 描述 | 必填 |
|---|---|---|
ES_URL |
您的Elasticsearch实例URL | 是 |
ES_API_KEY |
用于身份验证的Elasticsearch API密钥 | 否 |
ES_USERNAME |
用于基本身份验证的Elasticsearch用户名 | 否 |
ES_PASSWORD |
用于基本身份验证的Elasticsearch密码 | 否 |
ES_CA_CERT |
Elasticsearch SSL/TLS的自定义CA证书路径 | 否 |
ES_SSL_SKIP_VERIFY |
设置为“1”或“true”以跳过SSL证书验证 | 否 |
ES_PATH_PREFIX |
Elasticsearch实例的路径前缀在非根路径上公开 | 否 |
ES_VERSION |
服务器假定Elasticsearch 9.x。设置为 8 目标Elasticsearch 8.x |
否 |
在当地发展
[!注意] 如果要修改或扩展MCP服务器,请按照以下本地开发步骤进行操作。
-
使用正确的Node.js版本
nvm use -
再进行
npm install -
构建项目
npm run build -
在Claude桌面应用程序中本地运行
- 打开 克劳德桌面应用程序
- 首选 设置>开发人员>MCP服务器
- 点击
Edit Config并添加具有以下配置的新MCP服务器:
{ "mcpServers": { "elasticsearch-mcp-server-local": { "command": "node", "args": [ "/path/to/your/project/dist/index.js" ], "env": { "ES_URL": "your-elasticsearch-url", "ES_API_KEY": "your-api-key", "OTEL_LOG_LEVEL": "none" } } } } -
使用MCP检查器进行调试
ES_URL=your-elasticsearch-url ES_API_KEY=your-api-key npm run inspector这将启动MCP检查器,允许您调试和分析请求。您应该看到:
Starting MCP inspector... Proxy server listening on port 3000 🔍 MCP Inspector is up and running at http://localhost:5173 🚀
贡献
我们欢迎社区的贡献!有关如何捐款的详细信息,请参阅 贡献指南.
示例问题
[!提示] 以下是您可以使用MCP客户端尝试的一些自然语言查询。
- “我的Elasticsearch集群中有哪些索引?”
- “显示‘products’索引的字段映射。”
- “查找上个月所有超过500美元的订单。”
- “哪些产品获得了最多的五星评价?”
运作原理
- MCP客户端分析您的请求,并确定需要哪些Elasticsearch操作。
- MCP服务器执行这些操作(列出索引、获取映射、执行搜索)。
- MCP客户端处理结果,并以用户友好的格式呈现。
安全最佳实践
[!警告] 避免使用集群管理员权限。创建范围有限的API专用密钥,并在索引级别应用细粒度访问控制,以防止未经授权的数据访问。
您可以创建一个具有最低权限的Elasticsearch API专用密钥来控制对数据的访问:
POST /_security/api_key
{
"name": "es-mcp-server-access",
"role_descriptors": {
"mcp_server_role": {
"cluster": [
"monitor"
],
"indices": [
{
"names": [
"index-1",
"index-2",
"index-pattern-*"
],
"privileges": [
"read",
"view_index_metadata"
]
}
]
}
}
}
许可证
此项目根据Apache许可证2.0获得许可。
故障排除
- 确保您的MCP配置正确。
- 验证您的Elasticsearch URL是否可以从您的计算机访问。
- 请检查您的身份验证凭据(API密钥或用户名/密码)是否具有必要的权限。
- 如果将SSL/TLS与自定义CA一起使用,请验证证书路径是否正确以及文件是否可读。
- 查看终端输出中的错误消息。
如果您遇到问题,请随时在GitHub存储库上打开问题。