使用模型上下文协议将代理连接到 Elasticsearch
让我们使用模型上下文协议服务器与 Elasticsearch 中的数据聊天。
Agent Builder is available now GA. Get started with an Elastic Cloud Trial, and check out the documentation for Agent Builder here.
如果与您的数据交互就像与同事聊天一样轻松,那会怎样?试想一下,只需询问"给我看上个月所有超过 500 美元的订单" 或"哪些产品获得了最多的五星好评?" ,就能得到即时、准确的答案,无需查询。
模型上下文协议 (MCP) 使之成为可能。它能将对话式人工智能与数据库和外部应用程序接口无缝连接,将复杂的请求转化为自然的对话。虽然现代 LLM 在理解语言方面非常出色,但当它们与现实世界的系统集成时,才能释放出真正的潜力。MCP 在两者之间架起了一座桥梁,使数据交互更直观、更高效。
在本篇文章中,我们将探讨
MCP 架构 - 引擎盖下的工作原理
连接到 Elasticsearch 的 MCP 服务器的优势
激动人心的时刻即将到来!MCP 与 Elastic 协议栈的集成改变了您与信息交互的方式,使复杂的查询就像日常对话一样直观。
模型上下文协议
模型上下文协议(MCP)由 Anthropic 开发,是一种开放标准,可通过安全的双向渠道将人工智能模型与外部数据源连接起来。它解决了人工智能的一个主要限制:实时访问外部系统,同时保留对话语境。
MCP 架构
模型上下文协议架构由两个关键部分组成:
MCP 客户端--代表用户请求信息或执行任务的人工智能助理和聊天机器人。
MCP 服务器- 数据存储库、搜索引擎和 API,用于检索相关信息或执行请求的操作(如调用外部 API)。
MCP 服务器向客户端提供四种主要功能:
资源- 结构化数据、文件和内容,可检索并用作 LLM 交互的上下文。这样,人工智能助理就能从数据库、搜索索引或其他来源获取相关信息。
工具- 可执行的功能,使 LLM 能够与外部系统交互、执行计算或采取实际行动。这些工具将人工智能的功能扩展到文本生成之外,使助理能够触发工作流、调用应用程序接口或动态处理数据。
提示- 可重复使用的提示模板和工作流程,用于标准化和共享常见的 LLM 互动。
取样--通过客户端请求完成 LLM,以实现复杂的代理行为,同时维护安全性和隐私性。
MCP 服务器 + Elasticsearch
传统的检索-增强生成(RAG)系统根据用户查询检索文档,而 MCP 则更进一步:它使人工智能代理能够实时动态地构建和执行任务。这样,用户就可以提出自然语言问题,如
"给我看上个月所有超过 500 美元的订单。"
"哪些产品获得的五星好评最多?"
无需编写任何查询,即可获得即时、准确的答案。
MCP 通过以下方式实现这一目标
动态工具选择 - 代理商根据用户意图,通过 MCP 服务器智能选择合适的工具。"更聪明的 "法律硕士通常更善于根据上下文选择合适的工具,并提出适当的论据。
双向通信--代理和数据源可流畅地交换信息,并根据需要改进查询(如先查找索引映射,然后才构建 ES 查询)。
多工具协调--工作流程可同时利用多个 MCP 服务器的工具。
持续的上下文--代理可记住以前的互动,保持对话的连续性。
连接到 Elasticsearch 的 MCP 服务器可释放强大的实时检索架构。人工智能代理可按需探索、查询和分析 Elasticsearch 数据。您的数据可以通过一个简单的聊天界面进行搜索。
除了检索数据外,MCP 还能采取行动。它可与其他工具集成,以触发工作流、实现流程自动化,并将见解反馈到分析系统中。通过将搜索与执行分离,MCP 可使人工智能驱动的应用程序保持灵活、与时俱进,并无缝集成到代理工作流中。
实际操作:与 Elasticsearch 数据聊天的 MCP 服务器
要通过 MCP 服务器与 Elasticsearch 交互,我们至少需要以下功能:
检索指数
获取映射
使用 Elasticsearch 的查询 DSL 执行搜索
我们的服务器是用 TypeScript 编写的,我们将使用官方的MCP TypeScript SDK。安装时,我们建议安装 Claude Desktop App(免费版即可),因为它内置了 MCP 客户端。我们的 MCP 服务器本质上是通过 MCP 工具公开官方JavaScript Elasticsearch 客户端。
让我们从定义 Elasticsearch 客户端和 MCP 服务器开始:
const esClient = new Client({
node: url,
auth: {
apiKey: apiKey,
},
});
const server = new McpServer({
name: "elasticsearch-mcp-server",
version: "0.1.0",
});我们将使用以下可与 Elasticsearch 交互的 MCP 服务器工具:
索引列表(list_indices):该工具可检索所有可用的 Elasticsearch 索引,并提供索引名称、健康状态和文档数量等详细信息。
获取映射(get_mappings):该工具可获取指定 Elasticsearch 索引的字段映射,帮助用户了解存储文档的结构和数据类型。
搜索(search):该工具使用提供的查询 DSL 执行 Elasticsearch 搜索。它可自动启用文本字段的高亮显示,从而更容易识别相关搜索结果。
完整的 Elasticsearch MCP 服务器实现可在elastic/mcp-server-elasticsearchrepo 中找到。
与您的索引聊天
让我们来探讨一下如何设置 Elasticsearch MCP 服务器,以便就数据提出自然语言问题,例如"查找上个月所有超过 500 美元的订单。"
配置您的克劳德桌面应用程序
打开克劳德桌面应用程序
导航至设置> 开发人员> MCP 服务器
单击"Edit Config" ,将此配置添加到
claude_desktop_config.json:
{
"mcpServers": {
"Elasticsearch MCP Server": {
"command": "npx",
"args": [
"-y",
"@elastic/mcp-server-elasticsearch"
],
"env": {
"ES_URL": "",
"ES_API_KEY": ""
}
}
}
}注意:此设置使用 Elastic 发布的@elastic/mcp-server-elasticsearchnpm 软件包。如果您想在本地进行开发,可在此处了解有关安装 Elasticsearch MCP 服务器的更多详情。
填充 Elasticseach 索引
您可以使用我们的示例数据来填充"订单" 索引,用于此演示
这样您就可以尝试查询,如"查找上个月所有超过 500 美元的订单"
开始使用
在克劳德桌面应用程序中打开新对话
MCP 服务器将自动连接
开始询问有关 Elasticsearch 数据的问题!
查看此演示,了解使用自然语言查询 Elasticsearch 数据有多简单:

工作原理是什么?
当被问及 "查找上个月所有超过 500 美元的订单 "时,LLM 会根据指定的约束条件识别搜索 Elasticsearch 索引的意图。要进行有效的搜索,特工需要:
找出索引名称:
orders了解
orders索引的映射关系构建与索引映射兼容的查询 DSL,最后执行搜索请求
这种互动可以表示为
结论
模型上下文协议增强了您与 Elasticsearch 数据的交互方式,实现了自然语言对话,而不是复杂的查询。通过将人工智能功能与您的数据连接起来,MCP 可创建一个更直观、更高效的工作流程,在整个互动过程中保持上下文关联。
Elasticsearch MCP 服务器以公共 npm 包(@elastic/mcp-server-elasticsearch)的形式提供,开发人员可以直接集成。只需极少的设置,您的团队就可以开始探索数据、触发工作流,并通过简单的对话获得洞察力。
准备好亲自体验了吗?现在就试用Elasticsearch MCP 服务器,开始与您的数据聊天吧。




