模型上下文协议(MCP)的现状

了解 MCP、项目更新、功能、安全挑战、新兴用例以及如何使用 Elastic 的 Elasticsearch MCP 服务器。

Elasticsearch 与行业领先的生成式 AI 工具和提供商实现了原生集成。请观看我们的网络研讨会,了解如何超越 RAG 基础功能,或使用 Elastic 向量数据库构建生产就绪型应用

要为您的用例构建最佳搜索解决方案,请开始免费云试用,或立即在本地计算机上试用 Elastic。

我最近参加了在旧金山举行的MCP 开发者峰会,很明显,模型上下文协议(MCP)正在迅速成为人工智能代理和上下文丰富的人工智能应用的基础构件。在这篇文章中,我将介绍此次活动的主要更新、新出现的用例、MCP 的发展前景,以及如何使用 Elastic 的Elasticsearch MCP 服务器

什么是模型上下文协议(MCP)?

对于不熟悉的人来说,模型上下文协议是一种开放标准,它提供了一种结构化的双向方式,将人工智能模型连接到各种数据源和工具中,使其能够生成更相关、更明智的响应。它通常被称为 "用于人工智能应用的 USB-C 端口"。

下面的结构图突出了它的双向性:

这对人工智能从业人员来说是一个重大转变,因为扩展人工智能应用的主要挑战之一就是必须为每个新数据源建立自定义集成。MCP 提供了一个可持续、可重复使用的架构,用于管理和提供模型的上下文。它与模型无关,与服务器无关,并且完全开源。

MCP 是一系列 API 规范的最新版本,旨在实现应用程序之间集成的标准化。过去,我们有用于 RESTful 服务的 OpenAPI、用于数据查询的 GraphQL 和用于微服务通信的 gRPC。MCP 不仅在结构上与这些旧规范一样严谨,而且还将其带入了生成式人工智能环境,使其更容易将代理插入不同的系统,而无需定制连接器。在许多方面,MCP 的目标都是为人工智能代理做 HTTP 为网络所做的事情。正如 HTTP 标准化了浏览器和网站之间的通信一样,MCP 试图标准化人工智能代理与周围数据世界的交互方式。

MCP 与其他代理协议的比较

代理协议的范围正在迅速扩大,有十多种新兴标准竞相定义代理的交互方式。来自 LlamaIndex 的Laurie Voss介绍说,大多数协议可分为两类:侧重于代理相互对话的代理间协议和侧重于向 LLM 提供结构化上下文的面向上下文的协议(如 MCP)。

其他流行的协议,如谷歌的A2A(代理对代理)、思科和 IBM 的ACP(代理通信协议)以及Agora,都旨在实现代理对代理的协商、联盟建设甚至分散式身份系统。在这方面,MCP 采取了更加务实的方法,因为它关注的是代理如何访问工具和数据,而不一定是代理之间如何对话(尽管 MCP 在未来也可以通过不同的方式实现这一点)。

目前,MCP 的与众不同之处在于其牵引力和动力。与前端框架早期的 React 一样,MCP 也是从一个利基问题开始的,现在已成为实践中最常用、最具扩展性的代理协议之一。

峰会回顾:MCP 不断变化的优先事项

此次峰会的演讲者来自 Anthropic、Okta、OpenAI、AWS、GitHub 等公司。会谈内容从核心协议的改进到现实世界的实施,并概述了当前和长期的优先事项。这些会谈反映了从早期实验和简单的工具调用到以 MCP 为基础构建可信、可扩展和模块化的人工智能系统的转变。

几位发言人预言,在未来,MCP 不仅仅是协议管道,它还能成为人工智能原生网络的基础。就像 JavaScript 能让用户点击网页并与之互动一样,MCP 也能让代理代表我们执行同样的操作。例如,在电子商务中,用户无需手动导航到网站购物,只需告诉代理登录、找到特定产品、将其添加到购物车并结账即可。

这也不是纯粹的猜测和炒作;PayPal 在峰会上展示了他们新的代理工具包和 MCP 服务器,可以实现这种确切的代理商务体验。有了 MCP 提供的对工具和数据源的安全可靠访问,代理商将不仅仅是阅读网络,他们还将能够对其采取行动。如今,MCP 已经成为一个强大的标准,发展势头迅猛,未来可能成为全网人工智能增强型用户交互的标准。

MCP 项目更新:运输、征询和结构化工具

MCP 的核心贡献者杰罗姆-斯旺纳克(Jerome Swannack)分享了过去 6 个月中协议规范的一些更新。这些变化的主要目标是

  1. 添加可流 HTTP 后启用远程 MCP
  2. 通过增加诱导和工具输出模式,建立更丰富的代理交互模型

由于 MCP 是开放源代码,开发人员已经可以实现流式 HTTP 等更改。激发和工具输出示意图目前尚未发布;它们正处于草案阶段,可能会有所变化。

可流 HTTP (发布于 03-26-2025一个有影响的技术更新是引入了可流 HTTP 作为新的传输机制。它以一种更具可扩展性的双向模式取代了服务器发送事件(SSE),该模式支持分块传输编码和通过单个 HTTP 连接渐进式信息传输。这使您能够在 AWS Lambda 等云基础设施上部署 MCP 服务器,并支持企业网络限制,而无需长期连接或轮询。

诱导 ( Elicitation ) (发布于 06-18-2025 ) 诱导允许服务器定义一个模式,说明他们希望如何从客户端获得上下文结构。从根本上说,服务器可以描述它需要什么以及它期望的输入类型。这将产生一些影响:对于服务器构建者来说,他们可以构建更复杂的代理交互。对于客户端构建者来说,他们可以实现适应这些模式的动态用户界面。不过,不应利用诱导来获取用户的敏感信息或个人身份信息。开发人员应遵循最佳实践,确保诱导提示安全、适当,尤其是随着 MCP 的成熟。这与我们稍后将讨论的更广泛的安全问题有关。

工具输出示意图 (发布于 06-18-2025这一概念允许客户和 LLM 提前了解工具输出形状。工具输出模式可让开发人员描述工具预期返回的内容。这些模式解决了直接调用工具的一个主要局限性,即上下文窗口的使用效率低下。上下文窗口被认为是使用 LLM 时最重要的资源之一,当你直接调用一个工具时,它返回的原始内容会全部推送到 LLM 的上下文中。工具输出模式可让 MCP 服务器提供结构化数据,从而帮助您更好地利用标记和上下文窗口。以下是一些有关工具的一般最佳实践

这些新的更新和未来的新增功能将共同帮助 MCP 成为一个更加模块化、类型化和生产就绪的代理协议。

未充分利用的动力特性:采样和根

虽然 MCP 规范并不新鲜,但在主题演讲中,采样和根都得到了强调。这两个基本原理目前被忽视,也未得到充分探索,但却能极大地促进代理之间更丰富、更安全的交互。

取样 - 服务器可从客户端请求完成: 取样允许 MCP 服务器向客户端 LLM 请求完成。这就增加了协议的双向性,即服务器不只是响应请求,还可以提示并要求客户端的模型生成响应。这样,客户就可以完全控制成本、安全性以及 MCP 服务器使用的模型。因此,在使用带有预配置模型的外部 MCP 服务器的情况下,您无需提供自己的 API 密钥或配置自己对该模型的订阅,因为服务器可以直接提示已连接到客户端的模型。这使得代理行为更加复杂,互动性更强。

根 - 资源的范围访问: 的设计目的是为客户端提供一种方法,让服务器了解相关的资源和工作区。这对于设定服务器的运行范围非常有效。值得注意的是,根是 "信息性的,而不是严格执行的",这意味着它们并不定义 MCP 服务器或代理的权利或权限。换句话说,不能仅靠根来阻止服务器或代理执行某些工具或执行写入操作。有了根,权限仍应通过用户批准机制在客户端处理。此外,开发人员仍应注意使用在设计上尊重根设置的界限并采用最佳实践的服务器。

代理身份验证:OAuth 2.1 和受保护的元数据

本节重点介绍 OAuth 2.1,它是 OAuth 2.0 的最新迭代版本,删除了不安全流程并整合了最佳实践。

OAuth 支持是一个备受期待的话题,尤其是因为安全性和可扩展性被视为阻碍 MCP 成为将代理连接到工具的标准的主要障碍。Aaron Parecki(Okta 的 OAuth 2.1 编辑和身份标准专家)讨论了 MCP 如何采用简洁、可扩展的 OAuth 流程,从服务器开发人员那里卸载大部分复杂性。官方 OAuth 2.1 授权规范最近于2025 年 6 月 18 日发布了最新的协议修订版。

在这种实现方式中,OAuth 的责任可由 MCP 客户端和服务器分担。大部分身份验证流程都由 MCP 客户端启动和处理,只有服务器在最后才参与接收和验证安全令牌。这种拆分有助于解决一个关键的扩展问题,即如何在不要求开发人员配置每个连接的情况下跨多个工具进行身份验证,并确保 MCP 服务器开发人员不必成为 OAuth 专家。

讲座的两大亮点

  1. 受保护资源元数据:MCP 服务器可发布一个 JSON 文件,描述其目的、端点和验证方法。这样,客户端只需输入服务器 URL 就能启动 OAuth 流程,从而简化了连接过程。了解更多信息:让我们修复 MCP 中的 OAuth
  2. 支持 IDP 和 SSO:企业可以整合身份提供商,集中管理访问。这对用户体验和安全性来说都是双赢。用户无需点击 10 个不同的同意屏幕,安全团队也可以观察到每个连接。

通过将 OAuth 逻辑推送到客户端并依赖服务器的元数据,MCP 生态系统避免了一个主要瓶颈。这使 MCP 与当今生产环境中现代应用程序接口的安全保护方式更加一致。

补充阅读:OAuth 2 简化版

可组合生态系统中的安全挑战

新的发展也带来了新的攻击面。思科公司的 Arjun Sambamoorthy 列出了 MCP 环境中的几个主要威胁,包括

威胁描述补救& 最佳做法
及时注射& 工具中毒在 LLM 系统上下文或工具描述中注入恶意提示的方法,导致 LLM 执行读取文件或泄漏数据等意外操作。使用 MCP 扫描等工具对工具元数据进行检查。在提示中包含说明和参数前对其进行验证。最后,考虑对高风险工具实施用户审批。有关详细信息,请参阅表格下方附加阅读列表中的 OWASP 提示注入指南。
采样攻击就 MCP 而言,采样为 MCP 服务器对 LLM 进行提示注入攻击打开了大门。对不信任的服务器禁用取样功能,并考虑对取样请求增加人工在环审批。
恶意 MCP 服务器在目前收集的 MCP 服务器中,很难逐一审查以确保安全。流氓服务器会悄悄收集你的数据,并将其暴露给恶意行为者。仅从受信任的注册表或内部列表中连接到 MCP 服务器。在具有沙箱功能的容器中运行第三方服务器。
恶意 MCP 安装工具命令行安装程序和脚本可方便地快速实施 MCP 服务器或工具,但最终可能会安装未经验证的加密代码。在沙箱环境中安装并验证软件包签名。切勿从未经验证的来源自动更新。

为了进一步解决这个问题,Arjun 建议使用可信的 MCP 注册表来处理所有验证(这是一个前沿和中心话题--更多详情,请参阅下面阅读清单中的前两项),以及使用这份安全检查清单

补充阅读:

下一步:注册、管理和生态系统

一个集中的 MCP 注册中心正在开发中,这也是峰会上讨论最多的话题之一。当前的服务器生态系统存在分散、信任度低和可发现性差等问题。开发人员很难找到 MCP 服务器、验证它们的功能并安全安装,尤其是在元数据可能不完整或被欺骗的分散生态系统中。

集中式注册表可作为可信的真相来源,提高可发现性,确保服务器元数据的完整性,降低安装恶意工具的风险,从而直接解决这些痛点。

登记册的目标是

  • 为服务器元数据(服务器的功能、如何验证、安装和调用)提供单一真实来源
  • 消除不完整的第三方注册表和碎片,这样当服务器想要注册时,就不必更新互联网上的所有其他注册表。
  • 提供服务器注册流程,其中包括 CLI 工具和包含上述元数据的 server.json 文件。

更广泛的希望是,可信的注册表将有助于安全地扩展生态系统,使开发人员能够放心地构建和共享新工具。

对 Anthropic 来说,治理是另一个首要问题。他们明确表示,MCP 应保持开放和社区驱动,但这种管理模式的推广仍在进行中。他们目前正在寻求这方面的帮助,并希望任何有开源协议管理经验的人伸出援手。这就引出了我想说的另一个话题。在整个活动中,发言人都强调,只有内部开发人员做出贡献,生态系统才能发展壮大。为了使 MCP 成为新的网络标准,并从其他流行的代理协议中脱颖而出,我们需要集中精力。

现实世界中的 MCP:案例研究和演示

一些组织分享了如何在实际应用中使用 MCP:

  • PayPal - 用于代理商务的 MCP 服务器: PayPal 展示了其新的代理工具包和 MCP 服务器,它们可以从根本上改变用户的购物体验。用户无需在社交媒体上搜索商品、比较价格和结账,而是可以与连接到 PayPal MCP 服务器的代理聊天,处理所有这些操作。
  • EpicAI.pro - 贾维斯:MCP 的发展让我们越来越接近拥有一个现实生活中的 Jarvis 型助手。对于那些不熟悉《钢铁侠》电影的人来说,Jarvis 是一个人工智能助手,它使用自然语言,能对多模式输入做出响应,响应零延迟,能主动预测用户需求,自动管理集成,并能在设备和位置之间进行上下文切换。如果我们把贾维斯想象成一个物理机器人助手,那么 MCP 就赋予了贾维斯 "双手 "或处理复杂任务的能力。
  • Postman - MCP 服务器生成器为 API 请求提供购物车体验,您可以挑选不同的 API 请求,将其放入购物篮,然后将整个购物篮下载为 MCP 服务器。
  • 彭博社 - 彭博社 解决了企业 GenAI 开发中的一个关键瓶颈。他们拥有近 10,000 名工程师,需要一种标准化的方法来跨团队集成工具和代理。通过 MCP,他们将内部工具转变为模块化、远程优先的组件,代理可以在统一界面上轻松调用。这使他们的工程师能够在整个组织内贡献工具,而人工智能团队则专注于构建代理,而不是定制集成。Bloomberg 现在支持可扩展的安全代理工作流,可实现与 MCP 生态系统的完全互操作性。彭博社没有链接任何公共资源,但这是他们在峰会上公开展示的内容。
  • Block- -Block使用MCP为内部人工智能代理Goose提供支持,使员工能够自动执行工程、销售、营销等方面的任务。他们为 Git、Snowflake、Jira 和 Google Workspace 等工具构建了 60 多个 MCP 服务器,以实现与日常使用的系统进行自然语言交互。现在,Block 公司的员工可以使用 Goose 查询数据、检测欺诈、管理事件、浏览内部流程等,而无需编写代码。MCP 在短短 2 个月内就帮助 Block 在许多工作职能中推广了人工智能。
  • AWS - AWS MCP 服务器AWS 推出了一款以《龙与地下城》为主题的有趣 MCP 服务器,该服务器可模拟掷骰子,跟踪过去的掷骰子情况,并使用可流式 HTTP 返回结果。这个轻量级示例强调了使用 Lambda 和 Fargate 等 AWS 工具和基础设施构建和部署 MCP 服务器是多么容易。他们还介绍了Strands SDK,这是一个用于构建与 MCP 服务器交互的多模式代理的开源工具包。

Elastic 的 MCP 服务器

您现在就可以尝试使用Elastic 的 MCP 服务器。请注意,目前还在预览阶段。MCP 服务器提供的可用工具包括

  • list_indices:列出所有可用的 Elasticsearch 索引
  • get_mappings:获取特定 Elasticsearch 索引的字段映射
  • search:使用提供的查询 DSL 执行 Elasticsearch 搜索
  • get_shards:获取所有或特定索引的分片信息

上述工具已经为您提供了一些强大的功能和 Elasticsearch 的核心优势,即大规模搜索。list_indices 可让代理发现您所拥有的数据,get_mappings 可让代理了解数据结构和字段类型,search 可让代理利用 Elasticsearch DSL 的全部功能发送查询。这种简单的模式已经释放了企业级搜索功能, 很快将支持复杂聚合等功能。

我们将继续探索更高级的使用案例,欢迎在我们的讨论论坛上或通过GitHub 软件仓库上的问题提出任何反馈、意见和建议。我们有一个非常棒的贡献者社区,其中一位贡献者已经 为 Kibana 创建了一个非官方 的 MCP 服务器 ,可以公开所有 Kibana 端点。这样,您就可以利用 Kibana 提供的强大功能,例如通过类似 Claude 桌面的聊天界面创建仪表盘。点击这里查看完整的资料库。(请注意,这是一个由社区维护的项目,并非 Elastic 的官方产品)。

结论

MCP Dev 峰会清楚地表明,MCP 正在塑造这些人工智能代理彼此互动以及与周围数据世界互动的方式。无论您是将代理连接到企业数据,还是设计完全自主的代理,MCP 都能提供一种标准化、可组合的集成方式,并迅速在大规模应用中发挥作用。从传输协议和安全模式到注册和管理,MCP 生态系统正在迅速成熟。MCP 将继续保持开放性和社区驱动,因此现在的开发人员有机会塑造其发展。

常见问题

1.什么是模型上下文协议(MCP)?

模型上下文协议是一种开放标准,它提供了一种结构化的双向方式,将人工智能模型与各种数据源和工具连接起来,使它们能够生成更相关、更明智的响应。

2.MCP 与其他代理协议相比如何?

大多数代理协议可分为两类:侧重于代理相互对话的代理间协议和侧重于向 LLM 提供结构化上下文的面向上下文的协议(如 MCP)。

3.Elastic 的 MCP 服务器可以公开哪些类型的工具?

Elastic 的 MCP 服务器可以公开以下工具: list_indices:列出所有可用的 Elasticsearch 索引 get_mappings:获取特定 Elasticsearch 索引的字段映射 搜索:使用提供的查询 DSL 执行 Elasticsearch 搜索 get_shards:获取所有或特定索引的分区信息。

相关内容

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

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

亲自试用