简介
腾讯云 ES MCP Server 是基于 MCP 协议开发的提供自动弹性伸缩的托管 Server 服务,用户可自行开发 MCP Client 来调用该 Server,并集成至大模型 AI 应用中,即可通过自然语言对话的方式来查询 ES 集群中存储的索引数据。
ES MCP Server 目前仅支持集群与 Server 一对一连接模式,即一个集群可开启一个 MCP Server,该 Server 仅可查询所属集群的数据。
腾讯云 ES MCP Server 服务目前处于 beta 测试阶段,暂时可免费使用,待正式 GA 后如需付费使用将另行通知。
ES MCP Server 支持的能力
1. ElasticsearchListIndices,查询集群可用的索引。
{"type": "function","function": {"name": "ElasticsearchListIndices","description": "列出所有可用的 Elasticsearch 索引及其详细信息。\\n\\n这通常是查询 Elasticsearch 的第一步,有助于了解:\\n1. 系统中有哪些索引\\n2. 每个索引的健康状态\\n3. 文档数量和存储大小\\n4. 分片分布情况","parameters": {"properties": {"IndexName": {"description": "可选。用于筛选结果的索引名称数组。如果省略或为空,则返回符合其他条件的所有索引。","type": "array","items": {"type": "string"}},"IndexType": {"description": "必填。要列出的索引类型。有效值:'auto'(自治索引)或 'normal'(常规索引)。","type": "string","enum": ["auto", "normal"]},"Limit": {"description": "可选。返回的最大索引数量。默认值为20,最大允许值为100。","type": "number"},"Offset": {"description": "可选。在开始收集结果集之前要跳过的索引数量。默认值为0。","type": "number"}},"required": ["IndexType"],"type": "object"}}}
2. ElasticsearchGetMapping,分析索引结构信息。
{"type": "function","function": {"name": "ElasticsearchGetMapping","description": "获取指定索引的详细映射结构。\\n\\n此工具对于理解以下内容非常重要:\\n1. 字段类型及其属性\\n2. 分词器配置\\n3. 索引设置\\n4. 查询前的数据结构","parameters": {"properties": {"IndexName": {"description": "必填。要获取映射信息的索引名称。","type": "string"}},"required": ["IndexName"],"type": "object"}}}
3. ElasticsearchSearch,执行 DSL 查询语句。
{"type": "function","function": {"name": "ElasticsearchSearch","description": "执行高级 Elasticsearch 搜索查询,支持丰富的功能。\\n\\n这是主要的搜索工具,支持:\\n1. 完整的查询 DSL 能力\\n2. 自动查询优化\\n3. 详细的查询分析\\n4. 匹配词高亮显示\\n5. 聚合与指标统计\\n6. 性能分析","parameters": {"properties": {"IndexName": {"description": "必填。要搜索的索引名称。","type": "string"},"QueryBody": {"description": "可选。Elasticsearch 查询 DSL(JSON 格式)的搜索查询。如果省略,则返回索引中的所有文档(受默认限制影响)。","type": "object"}},"required": ["IndexName"],"type": "object"}}}
启动 Server
启用服务时需输入 ES 集群密码进行授权。
MCP Server 启动后,将会展示 Server 的内网访问地址,即可进行调用。

网络说明
目前仅支持通过 ES 集群所在 VPC 内网环境访问 MCP Server,请提前做好网络打通或将 MCP Client 部署在与 ES 集群相同 VPC 内。
您可以选择以下两种方式访问 Elasticsearch MCP Server。
在 VPC 下启动 Client。
将 Elasticsearch MCP Server 的 SSE url 转发到需要部署 Client 的网络环境。
使用 Elasticsearch MCP Server
用户可以在 Cursor, Cline 等客户端中通过加入配置的方式接入 Elasticsearch MCP Server,也可以自行实现 MCP Client。
1. 在 Cursor 中使用
在 Cursor 项目中的
.cursor/mcp.json
加入如下配置:{"mcpServers": {"tencentcloud-elasticsearch": {"url": "<Your ES MCP Server SSE URL>","disabled": false,"autoApprove": ["ElasticsearchListIndices"],"timeout": 30}}}
主要配置项:
url:远程服务器端点 URL
disabled:当前是否启用(true/false)
autoApprove:无需确认的工具名列表
timeout:等待服务器响应的最大秒数
2. 在 Cline 中使用
在您的 Cline 设置中找到
cline_mcp_settings.json
配置文件,并加入如下配置:{"mcpServers": {"tencentcloud-elasticsearch": {"url": "<Your ES MCP Server SSE URL>","disable": false,"autoApprove": []}}}
主要配置项:
url:远程服务器端点 URL
disabled:当前是否启用(true/false)
autoApprove:无需确认的工具名列表
3. 自定义 Client
依照以下流程,构建一个最简 MCP Client。
3.1 环境准备
1. 安装 uv,用于管理 Python 环境。
curl -LsSf https://astral.sh/uv/install.sh | sh
2. 使用 uv 创建并启动虚拟环境。
在项目目录中,执行以下命令,初始化一个 uv 项目。
uv init
创建 Python 虚拟环境:
uv venv
启动虚拟环境:使用以下命令激活虚拟环境,uv 会配置 Python 的路径和包的路径,之后就可以引用 .venv 中下载的包。
source .venv/bin/acticate
3. 安装依赖。
uv add mcp
3.2 运行 Client
复制以下代码为
client.py
,将 SSE_URL 替换为当前 Client 网络可以访问的 SSE 地址。执行 python client.py
即可启动 Client。 # client.pyimport asynciofrom mcp import ClientSessionfrom mcp.client.sse import sse_client# 填写 Elasticsearch MCP Server 的 SSE 地址SSE_URL = "<Your ES MCP Server SSE URL>"async def main():# 连接到 SSE MCP Server。async with sse_client(SSE_URL) as (read_stream,write_stream,):# 创建 SSE 会话async with ClientSession(read_stream, write_stream) as session:# 初始化连接await session.initialize()# 查看 MCP Server 中可用的工具。tools = await session.list_tools()print(f"Available tools: {[tool.name for tool in tools.tools]}")# 调用 ElasticsearchListIndices 工具。result = await session.call_tool(name="ElasticsearchListIndices", arguments={})print(f"Indices: {result.content}")if __name__ == "__main__":asyncio.run(main())
代码核心流程说明:
使用 SSE URL 初始化一个 MCP 客户端。
创建 MCP 会话。
初始化 MCP 连接。
通过
list_tools
方法查看 MCP Server 中的工具。通过
call_tool
方法调用 MCP Server 中的某个工具。其中,name
为工具名称,arguments
为字典形式的工具输入参数。