使用说明
Elasticsearch MCP服务器
[!小心] 此MCP服务器已弃用,今后只会接收关键的安全更新。 它已被取代 弹性体生成器 MCP端点,可在Elastic 9.2.0+和Elasticsearch无服务器项目中使用。
使用Elasticsearch MCP服务器进行AI代理
Elasticsearch MCP服务器使用 模型上下文协议 (MCP)。 它支持与Elasticsearch索引的自然语言交互,允许代理在没有自定义API的情况下查询、分析和检索数据。
按照以下步骤从AWS Marketplace部署和配置Elasticsearch MCP Server容器映像。
开始之前
在开始之前,请确保您已经:
- 可从AWS环境访问的Elasticsearch集群(版本8.x或9.x)
- Elasticsearch身份验证凭据:
- Docker已在AWS环境中安装并运行(例如,在EC2实例或容器服务中)
- 配置的MCP客户端(如Claude Desktop、Cursor、VS Code或其他MCP兼容工具)
- 部署环境和Elasticsearch集群之间的网络连接
[!注意]
这些说明适用于Elasticsearch MCP Server 0.4.0及更高版本。 对于0.3.1及更早版本,请参阅 v0.3.1的自述文件.
部署Elasticsearch MCP服务器
Elasticsearch MCP服务器作为Docker容器映像提供,可从AWS Marketplace获得。您可以使用stdio协议(用于直接客户端连接)或流式HTTP协议(用于基于web的集成)运行它。
选择协议
服务器支持两种协议:
注: 服务器发送事件(SSE)已弃用。请改用可流式传输的HTTP。
配置stdio协议
当您的MCP客户端直接连接到服务器进程时,请使用stdio协议。
为stdio模式设置环境变量
设置以下环境变量:
ES_URL:Elasticsearch集群的URL(例如,https://your-cluster.es.amazonaws.com:9200)- 对于身份验证,请使用以下选项之一:
- API密钥:设置
ES_API_KEY到您的Elasticsearch API密钥 - 基本身份验证:设置
ES_USERNAME和ES_PASSWORD到您的Elasticsearch凭据
- API密钥:设置
- (可选)
ES_SSL_SKIP_VERIFY:设置为true连接到Elasticsearch时跳过SSL/TLS证书验证。仅将其用于开发或测试环境。
在stdio模式下运行容器
在stdio模式下启动MCP服务器:
docker run -i --rm \
-e ES_URL \
-e ES_API_KEY \
docker.elastic.co/mcp/elasticsearch \
stdio
配置Claude桌面
将此配置添加到您的Claude Desktop配置文件中:
{
"mcpServers": {
"elasticsearch-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "ES_URL",
"-e", "ES_API_KEY",
"docker.elastic.co/mcp/elasticsearch",
"stdio"
],
"env": {
"ES_URL": "<elasticsearch-cluster-url>",
"ES_API_KEY": "<elasticsearch-API-key>"
}
}
}
}
替换 <elasticsearch-cluster-url> 使用您的Elasticsearch集群URL和 <elasticsearch-API-key> 使用API密钥。
配置可流式传输的HTTP协议
对于基于web的集成或需要支持多个并发客户端时,请使用可流式传输的HTTP协议。
为HTTP模式设置环境变量
设置与stdio协议相同的环境变量:
ES_URL:Elasticsearch集群的URL- 对于身份验证,请使用以下选项之一:
- API密钥:设置
ES_API_KEY到您的Elasticsearch API密钥 - 基本身份验证:设置
ES_USERNAME和ES_PASSWORD到您的Elasticsearch凭据
- API密钥:设置
- (可选)
ES_SSL_SKIP_VERIFY:设置为true跳过SSL/TLS证书验证
以HTTP模式运行容器
以HTTP模式启动MCP服务器:
docker run --rm \
-e ES_URL \
-e ES_API_KEY \
-p 8080:8080 \
docker.elastic.co/mcp/elasticsearch \
http
可流式传输的HTTP端点位于 http://<host>:8080/mcp。健康检查端点位于 http://<host>:8080/ping.
使用HTTP代理配置Claude Desktop
如果您使用的是仅支持stdio协议的Claude Desktop(免费版),请使用 mcp-proxy 将stdio桥接到可流式传输的HTTP:
-
安装
mcp-proxy:uv tool install mcp-proxy有关替代安装选项,请参阅 mcp代理/README.md.
-
将此配置添加到Claude Desktop:
{ "mcpServers": { "elasticsearch-mcp-server": { "command": "/<home-directory>/.local/bin/mcp-proxy", "args": [ "--transport=streamablehttp", "--header", "Authorization", "ApiKey <elasticsearch-API-key>", "http://<mcp-server-host>:<mcp-server-port>/mcp" ] } } }替换
<home-directory>,<elasticsearch-API-key>,<mcp-server-host>,以及<mcp-server-port>与你的价值观。
验证连接
配置MCP客户端后,验证连接是否正常工作:
- 启动您的MCP客户端(例如,Claude Desktop或Cursor)。
- 检查Elasticsearch MCP服务器是否出现在可用的MCP服务器中。
- 通过您的代理接口测试一个简单的查询,以确认它可以访问您的Elasticsearch索引。
如果连接失败,请验证:
- 您的Elasticsearch集群URL正确,可以从您的AWS环境访问
- 您的身份验证凭据有效,并且具有必要的权限
- 容器和Elasticsearch集群之间存在网络连接(检查安全组和网络ACL)
- Docker正在运行,容器已成功启动(使用以下命令检查容器日志
docker logs <container-id>)
监控健康状况和状态
使用以下方法监控Elasticsearch MCP服务器的健康状况和正常功能:
检查集装箱状态
验证容器是否正在运行:
docker ps | grep elasticsearch-mcp-server
容器应出现在列表中,状态为 Up.
测试健康端点(HTTP模式)
如果您使用的是可流式传输的HTTP协议,请测试健康检查端点:
curl http://<host>:8080/ping
返回成功响应 pong,表示服务器正在运行且健康。
检查容器日志
查看容器日志以识别任何问题:
docker logs <container-id>
查找与以下内容相关的错误消息:
- Elasticsearch连接失败
- 身份验证错误
- 网络连接问题
验证Elasticsearch连接
测试从容器到Elasticsearch集群的连接:
docker exec <container-id> curl -k -u <username>:<password> <ES_URL>
或者使用API密钥:
docker exec <container-id> curl -k -H "Authorization: ApiKey <api-key>" <ES_URL>
成功的响应表示容器可以访问您的Elasticsearch集群。
安全和敏感信息
Elasticsearch MCP服务器安全地处理身份验证凭据:
凭证存储
- API密钥和密码:仅存储在传递给容器的环境变量中。它们不会持久化到磁盘或记录。
- 环境变量:运行容器时设置。使用AWS Secrets Manager或AWS Systems Manager参数存储在生产环境中安全地管理凭据。
数据加密
- 运输中:MCP服务器通过HTTPS与Elasticsearch通信
ES_URL使用https://协议。确保您的Elasticsearch集群已启用SSL/TLS。 - 休息时:容器不在本地存储数据。所有数据都保留在Elasticsearch集群中,该集群使用集群的加密设置。
最佳实践
- 定期轮换API密钥(对于生产环境,每30-90天轮换一次)
- 使用具有最低所需权限的API密钥(尽可能以只读方式访问特定索引)
- 切勿将凭据提交到版本控制或在日志中共享
- 使用AWS Secrets Manager或Parameter Store在运行时注入凭据,而不是对其进行硬编码
AWS服务配额
Elasticsearch MCP服务器在AWS环境中作为容器运行。考虑以下AWS服务配额:
- EC2实例限制:如果在EC2上运行,请确保您的实例类型支持预期的工作负载
- 弹性容器服务(ECS):如果使用ECS,请查看 ECS服务配额
- 弹性Kubernetes服务(EKS):如果使用EKS,请查看 EKS服务配额
- 网络带宽:确保容器和Elasticsearch集群之间有足够的网络带宽
要请求增加配额,请使用 AWS服务配额控制台 或参考 AWS通用参考指南.
可用工具
连接后,MCP服务器向您的代理提供以下工具:
list_indices:列出所有可用的Elasticsearch索引get_mappings:获取特定Elasticsearch索引的字段映射search:使用查询DSL执行Elasticsearch搜索esql:执行ES|QL查询get_shards:获取所有或特定索引的分片信息
您的代理可以使用这些工具通过自然语言对话与Elasticsearch数据进行交互。
下一步
- 了解Elastic平台中可用的AI功能
- 探索Agent Builder,使用Elasticsearch构建自定义AI代理
