Agent Builder 现已正式发布。开始 Elastic Cloud 试用,并在此处查看 Agent Builder 的文档。
如果与您的数据交互就像与同事聊天一样轻松,那会怎样?试想一下,只需询问"给我看上个月所有超过 500 美元的订单" 或"哪些产品获得了最多的五星好评?" ,就能得到即时、准确的答案,无需查询。
模型上下文协议 (MCP) 使之成为可能。它能将对话式人工智能与数据库和外部应用程序接口无缝连接,将复杂的请求转化为自然的对话。虽然现代 LLM 在理解语言方面非常出色,但当它们与现实世界的系统集成时,才能释放出真正的潜力。MCP 在两者之间架起了一座桥梁,使数据交互更直观、更高效。
在本篇文章中,我们将探讨
- MCP 架构 - 引擎盖下的工作原理
- 连接到 Elasticsearch 的 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 服务器开始:
我们将使用以下可与 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:
注意:此设置使用 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 服务器,开始与您的数据聊天吧。




