MCP 协议更新详解(2025-06-18)

前言

MCPModel Context Protocol)协议于 2025-06-18 发布了最新版本,这是一次涵盖安全性增强、功能补完与规范简化的重大更新。本次更新不仅改进了工具调用与资源交互的灵活性,还引入了结构化数据验证、elicitation 机制和更严格的版本协商策略,进一步提升了协议在实现中的可扩展性、安全性与开发者体验。

准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

📌 重大变化

1. 移除对 JSON‑RPC 批处理的支持。

在实现 Streamable HTTP 传输时,未发现批处理的实际需求;JSON‑RPC 的通知/响应模型也难以满足实时性和并发调用需求,故为简化规范、避免歧义而移除此功能。

2. 增强工具调用结果,新增结构化输出功能。

引入 outputSchemastructuredContent 字段,目标是在不破坏现有 content 结构的前提下,为简单 JSON 输出场景提供轻量、可验证的格式化通道,尤其有助于提升与不受信任服务器交互时的数据安全性与可靠性。

3. 将 MCP 服务器归类为 OAuth 资源服务器,并添加受保护资源元数据以便发现对应的授权服务器。

MCP 服务器明确定位为 OAuth 资源服务器,并通过公开 Protected Resource MetadataRFC 9728)指向其授权服务器,方便客户端自动发现、避免滥用访问令牌,并提升整体安全性与部署一致性。

4. 强制要求 MCP 客户端实现遵循 RFC 8707 的 Resource Indicators,以防止恶意服务器获取访问令牌。

5. 增加了对授权规范中的安全注意事项及最佳实践的说明,并新增了"安全最佳实践"页面。

6. 支持 "elicitation" 功能,使服务器在交互中可向用户额外请求信息。

MCP 此前缺乏标准方式让服务器在交互过程中动态请求用户补充信息,导致开发者需依赖多步骤工具调用或自定义协议。该引入 "elicitation" 能力,为工作流中的确认、澄清、登录跳转等情境提供结构化输入机制,完善模型、用户与服务器三者之间的双向交互闭环。

示例:

为了向用户请求信息,服务器发送 elicitation/create 请求:

Request: 要求:

json 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "elicitation/create",
  "params": {
    "message": "Please provide your GitHub username"
  }
}

Response: 回复:

css 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "chenmingyong0423"
      }
    ]
  }
}

7. 工具调用结果中新增资源链接(resource links)类型。

为支持工具返回外部或大型资源但避免直接嵌入其内容,引入新的 ResourceLink 类型,允许工具调用返回可供客户端后续访问的资源引用,解决嵌入式内容在交互流中不可行或不高效的场景需求,如延迟加载、大文件、临时资源等。

8. 要求在使用 HTTP 传输时,通过 MCP-Protocol-Version 请求头协商指定后续请求的协议版本。

当前协议中,客户端在初始化阶段协商协议版本后,若未启用 session 模式,后续请求将无法携带该版本信息,导致服务端无法正确识别其行为标准。为支持无状态 HTTP 请求场景,要求客户端在每个请求中通过 MCP-Protocol-Version 请求头明确声明所使用的协议版本,从而确保多版本环境下的兼容性与正确解析。

9. 将 Lifecycle Operation 描述中的(SHOULD)改成(MUST)。

旧内容:

markdown 复制代码
During the operation phase, the client and server exchange messages according to the negotiated capabilities.

Both parties **SHOULD**:

-   Respect the negotiated protocol version
-   Only use capabilities that were successfully negotiated

更新后:

markdown 复制代码
During the operation phase, the client and server exchange messages according to the negotiated capabilities.

Both parties **MUST**:

-   Respect the negotiated protocol version
-   Only use capabilities that were successfully negotiated

🛠️ 其它 Schema 更改

1. 为附加接口类型增加 _meta 字段,并指定 正确的用法

2. 在 CompletionRequest 中添加 context 字段,使其能包含先前解析的变量。

为支持上下文相关的参数补全场景(如根据已选 GitHub 用户名补全仓库名),在 CompletionRequest 中新增 context 字段,使客户端可将此前解析的变量一并传递给服务器,从而提供更准确、相关性更高的建议。

3. 新增 title 字段用于人类友好的展示名称,从而可以将 name 专用于程序化标识。

为提升终端用户体验,为协议中的对象(如资源、工具、提示等)统一引入可选字段 title,用于展示更友好的人类可读名称,而将 name 保留为程序化标识。


你好,我是陈明勇,一名热爱技术、乐于分享的开发者,同时也是开源爱好者。

我专注于分享 Go 语言相关的技术知识,同时也会深入探讨 AI 领域的前沿技术。

成功的路上并不拥挤,有没有兴趣结个伴?

Go 开源库代表作go-mongoxgo-optioner

相关推荐
大然Ryan4 小时前
MCP实战:从零开始写基于 Python 的 MCP 服务(附源码)
python·llm·mcp
程序员老刘5 小时前
智能体三阶:LLM→Function Call→MCP
flutter·ai编程·mcp
curdcv_po6 小时前
人人都是 AI 编程家竞赛——交给Trae🫡
ai编程·mcp·trae
IVAN不想说话9 小时前
GPT-4o 中构建高精度的 MCP 工具与调用匹配策略指南
llm·mcp
Elastic 中国社区官方博客10 小时前
使用 Elasticsearch 提升 Copilot 能力
大数据·数据库·elasticsearch·搜索引擎·全文检索·copilot·mcp
迢迢星万里灬10 小时前
Java求职者面试:Spring AI、MCP、RAG、向量数据库与Embedding模型技术解析
java·面试·向量数据库·rag·spring ai·embedding模型·mcp
echojay12 小时前
手把手教你开发一个MCP服务器:将Claude、Cherry Studio 接入天气预报
后端·python·mcp
大模型真好玩13 小时前
准确率飙升!Graph RAG如何利用知识图谱提升RAG答案质量(一)——GraphRAG是什么?
人工智能·python·mcp
llwszx1 天前
Spring Boot 整合 Spring AI 与 MCP 开发智能体工具指南
人工智能·spring boot·spring·智能体·spring ai·mcp