使用模型上下文协议将代理连接到 Elasticsearch

让我们使用模型上下文协议服务器与 Elasticsearch 中的数据聊天。

Agent Builder 现已正式发布。开始 Elastic Cloud 试用,并在此处查看 Agent Builder 的文档。

如果与您的数据交互就像与同事聊天一样轻松,那会怎样?试想一下,只需询问"给我看上个月所有超过 500 美元的订单" 或"哪些产品获得了最多的五星好评?" ,就能得到即时、准确的答案,无需查询。

模型上下文协议 (MCP) 使之成为可能。它能将对话式人工智能与数据库和外部应用程序接口无缝连接,将复杂的请求转化为自然的对话。虽然现代 LLM 在理解语言方面非常出色,但当它们与现实世界的系统集成时,才能释放出真正的潜力。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 服务器,开始与您的数据聊天吧。

这些内容对您有多大帮助?

没有帮助

有点帮助

非常有帮助

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用