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

相关推荐
神秘的猪头1 天前
🔌 给 AI 装上“三头六臂”!实战大模型接入第三方 MCP 全攻略
langchain·llm·mcp
神秘的猪头2 天前
🔌 把 MCP 装进大脑!手把手带你构建能“热插拔”工具的 AI Agent
langchain·llm·mcp
小兵张健2 天前
AI 页面与交互迁移流程参考
前端·ai编程·mcp
小兵张健2 天前
掘金发布 SOP(Codex + Playwright MCP + Edge)
前端·mcp
Qinana2 天前
从代码到智能体:MCP 协议如何重塑 AI Agent 的边界
前端·javascript·mcp
神秘的猪头2 天前
🚀 拒绝“手搓”工具!带你硬核手写 MCP Server,解锁 Agent 的无限潜能
agent·mcp·trae
warm3snow3 天前
Claude Code 黑客马拉松:5 个获奖项目,没有一个是"纯码农"做的
ai·大模型·llm·agent·skill·mcp
warm3snow4 天前
AI 核心技能系列:12 篇文章带你系统掌握大模型岗位必备技能
ai·transformer·agent·skill·mcp·fine-tunning
3秒一个大4 天前
深入理解 MCP 协议:从本质解析到实战构建
mcp
牧马人win4 天前
Chrome DevTools MCP:让 AI 编码助手拥有“浏览器之眼“
mcp