MCP协议重大更新:八大特性全面升级

Model Context Protocol (MCP) 作为连接大语言模型与外部数据源和工具的开放协议,在2025年6月18日发布了重要的版本更新。

本次更新的核心特性包括:移除JSON-RPC批处理支持、新增结构化工具输出、引入OAuth授权机制、推出征求(elicitation)功能、支持资源链接、强化HTTP协议版本头、扩展元数据字段以及强化生命周期操作要求等。

移除JSON-RPC批处理支持

PR: #416(github.com/modelcontex...)

MCP协议在新版本中做出了一个重要的简化决定:完全移除对JSON-RPC 2.0批处理功能的支持。

在之前的版本中,开发者可以通过批量请求一次性发送多个操作:

json 复制代码
[
  {"jsonrpc": "2.0", "method": "tools/list", "id": 1},
  {"jsonrpc": "2.0", "method": "resources/list", "id": 2}
]

但是在新版本,要求每个操作必须单独发送:

json 复制代码
// 更新后:单独请求
{"jsonrpc": "2.0", "method": "tools/list", "id": 1}
{"jsonrpc": "2.0", "method": "resources/list", "id": 2}

虽然这可能会略微增加网络往返次数,但显著降低了MCP Client端和Server端的实现复杂度。对于大多数MCP应用场景,这种简化带来的开发效率提升远超过性能上的微小损失。

结构化工具输出

PR: #371(github.com/modelcontex...)

新版本引入了结构化工具输出功能,这是本次更新中最具影响力的特性之一。

在上一个版本中,工具只能返回非结构化的文本内容,LLM模型需要解析字符串来理解返回的数据,如下所示:

json 复制代码
{
  "content": [
    {
      "type": "text",
      "text": "Temperature: 22.5°C, Conditions: Partly cloudy"
    }
  ]
}

现在,工具可以同时提供结构化和非结构化的输出,确保向后兼容的同时提供更强的类型安全:

json 复制代码
{
  "content": [
    {
      "type": "text", 
      "text": "{\"temperature\": 22.5, \"conditions\": \"Partly cloudy\"}"
    }
  ],
  "structuredContent": {
    "temperature": 22.5,
    "conditions": "Partly cloudy", 
    "humidity": 65
  }
}

输出模式定义: 是这个特性的重要组成部分,开发者可以为工具定义期望的输出结构:

json 复制代码
{
  "name": "get_weather_data",
  "outputSchema": {
    "type": "object",
    "properties": {
      "temperature": {"type": "number", "description": "温度(摄氏度)"},
      "conditions": {"type": "string", "description": "天气状况"},
      "humidity": {"type": "number", "description": "湿度百分比"}
    },
    "required": ["temperature", "conditions", "humidity"]
  }
}

这个改进为LLM提供了更准确、更可靠的数据处理能力,同时为开发者提供了严格的类型验证和更好的开发体验。

安全性升级:OAuth 2.0标准支持

PR: #338 (github.com/modelcontex...)
#734(github.com/modelcontex...)

MCP协议引入了完整的OAuth 2.0支持,将MCP服务器定义为OAuth资源服务器,并要求客户端实现RFC 8707资源指示器规范。

OAuth资源服务器分类 为MCP服务器提供了标准化的身份认证和授权机制:

json 复制代码
{
  "authorization_server": "https://auth.example.com",
  "resource_server": "https://mcp.example.com",
  "scopes_supported": ["read", "write", "admin"]
}

资源指示器实现 是另一个重要的安全增强。客户端必须实现RFC 8707中描述的资源指示器,有效防止恶意服务器获取不当的访问令牌。这个机制确保了:

  • 标准化的授权流程
  • 企业级的令牌安全性
  • 跨域攻击防护
  • 符合行业安全标准的实现

这些安全性改进使MCP协议从"概念验证"跃升为"企业级生产"的协议标准,为在生产环境中大规模部署奠定了坚实基础。

征求(Elicitation)功能的支持

相关PR: #382(github.com/modelcontex...)

征求(Elicitation)功能是本次更新中最具创新性的特性之一。它彻底改变了MCP的交互模式,从单向的客户端主导变为双向的服务器-客户端协作。

传统的MCP交互模式中,信息流向是单向的:客户端向服务器发送请求,服务器被动响应。征求功能让服务器能够主动向用户请求额外信息:

json 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "elicitation/create",
  "params": {
    "message": "请提供您的GitHub用户名以继续操作",
    "requestedSchema": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9-]+$",
          "description": "您的GitHub用户名"
        }
      },
      "required": ["username"]
    }
  }
}

用户可以通过三种方式响应征求请求:

  • 接受 (accept) :提供所请求的信息
  • 拒绝 (reject) :明确拒绝提供信息
  • 取消 (cancel) :取消当前操作
json 复制代码
{
  "action": "accept",
  "content": {
    "username": "octocat"
  }
}

征求功能支持多种数据类型的验证,包括字符串(支持格式验证、正则表达式)、数字(支持范围限制)、布尔值和枚举类型。这个特性为构建复杂的交互式AI工作流开辟了全新的可能性。

上下文增强:资源链接与动态引用

相关PR: #603(github.com/modelcontex...)

资源链接功能为MCP带来了动态上下文管理能力。工具现在可以返回对资源的引用,而不仅仅是静态内容。

资源链接 允许工具返回可以被客户端进一步处理的资源引用:

json 复制代码
{
  "type": "resource_link",
  "uri": "file:///project/src/main.rs",
  "name": "main.rs",
  "description": "项目主入口文件",
  "mimeType": "text/x-rust"
}

嵌入式资源 则直接在工具结果中包含完整的资源内容:

json 复制代码
{
  "type": "resource",
  "resource": {
    "uri": "file:///project/src/main.rs",
    "title": "Rust项目主文件",
    "mimeType": "text/x-rust",
    "text": "fn main() {\n    println!(\"Hello, world!\");\n}"
  }
}

这个功能特别适用于需要实时协作、动态内容更新或复杂上下文管理的AI应用场景。工具可以返回会随时间变化的资源引用,客户端可以根据需要获取最新内容。

协议标准化:HTTP版本头与元数据扩展

HTTP协议版本头 #548 (github.com/modelcontex...%25E7%259A%2584%25E5%25BC%2595%25E5%2585%25A5%25E8%25A7%25A3%25E5%2586%25B3%25E4%25BA%2586%25E7%2589%2588%25E6%259C%25AC%25E5%2585%25BC%25E5%25AE%25B9%25E6%2580%25A7%25E9%2597%25AE%25E9%25A2%2598%25E3%2580%2582%25E6%2589%2580%25E6%259C%2589%25E4%25BD%25BF%25E7%2594%25A8HTTP%25E4%25BC%25A0%25E8%25BE%2593%25E7%259A%2584MCP%25E9%2580%259A%25E4%25BF%25A1%25E9%2583%25BD%25E5%25BF%2585%25E9%25A1%25BB%25E5%258C%2585%25E5%2590%25AB%25E5%258D%258F%25E8%25AE%25AE%25E7%2589%2588%25E6%259C%25AC%25E6%25A0%2587%25E8%25AF%2586%25EF%25BC%259A "https://github.com/modelcontextprotocol/modelcontextprotocol/pull/548)%E7%9A%84%E5%BC%95%E5%85%A5%E8%A7%A3%E5%86%B3%E4%BA%86%E7%89%88%E6%9C%AC%E5%85%BC%E5%AE%B9%E6%80%A7%E9%97%AE%E9%A2%98%E3%80%82%E6%89%80%E6%9C%89%E4%BD%BF%E7%94%A8HTTP%E4%BC%A0%E8%BE%93%E7%9A%84MCP%E9%80%9A%E4%BF%A1%E9%83%BD%E5%BF%85%E9%A1%BB%E5%8C%85%E5%90%AB%E5%8D%8F%E8%AE%AE%E7%89%88%E6%9C%AC%E6%A0%87%E8%AF%86%EF%BC%9A")

http 复制代码
POST /mcp HTTP/1.1
Host: example.com
MCP-Protocol-Version: 2025-06-18
Content-Type: application/json

这个简单但重要的改进为协议的长期演进和多版本兼容性奠定了基础。

元数据字段扩展 通过三个相关PR #710 | #598 | #663 带来了更丰富的描述能力:

title字段 的引入让程序化标识和人性化显示得以分离:

json 复制代码
{
  "name": "get_weather",                    // 程序化标识
  "title": "天气信息查询工具",               // 用户友好的标题
  "description": "获取指定位置的实时天气信息"
}

context字段 为完成请求提供了上下文支持:

json 复制代码
{
  "method": "completion/complete",
  "params": {
    "ref": "weather-query",
    "context": {
      "previousVariables": {
        "location": "北京",
        "userPreference": "摄氏度"
      }
    }
  }
}

_meta字段 提供了通用的元数据容器:

json 复制代码
{
  "_meta": {
    "version": "1.2.0",
    "author": "weather-team",
    "tags": ["weather", "location", "realtime"],
    "lastUpdated": "2025-06-18T10:30:00Z"
  }
}

合规性强化:生命周期操作标准化

最后一个重要变化是将某些关键生命周期操作的要求级别从"SHOULD"(建议)提升为"MUST"(强制)。这个看似细微的调整实际上对协议的标准化具有重要意义。

强化的操作包括:

  • 初始化流程:必须正确实现能力协商机制
  • 资源管理:必须正确处理资源的生命周期
  • 错误处理:必须按照规范返回标准化的错误信息
  • 连接管理:必须正确处理连接的建立和断开

这个变化确保了不同MCP实现之间的高度一致性,减少了因实现差异导致的集成问题,为构建可靠的MCP生态系统提供了保障。

迁移策略与未来展望

对于现有的MCP实现,建议采用分阶段的升级策略:

安全性优先:首先实现OAuth 2.0支持和资源指示器,确保系统安全性达到生产级标准。

功能增强:逐步添加征求功能、结构化工具输出和资源链接支持,提升应用的交互能力和数据处理精度。

标准化完善:最后处理HTTP版本头、元数据扩展和生命周期操作强化,确保完全符合新版本规范。

结语

MCP协议2025-06-18版本的更新标志着协议发展的重要里程碑。这次更新将MCP从一个"有前景的协议"转变为"生产就绪的企业级标准"。随着OAuth安全机制的引入、征求功能的支持以及结构化输出的类型安全保障,MCP协议的演进将推动AI应用开发领域向更加标准化、安全化和实用化的方向发展。

参考链接

相关推荐
武子康17 分钟前
AI炼丹日志-30-新发布【1T 万亿】参数量大模型!Kimi‑K2开源大模型解读与实践
人工智能·gpt·ai·语言模型·chatgpt·架构·开源
Codebee1 小时前
OneCode 3.0 VFS客户端驱动(SDK)技术解析:从架构到实战
java·后端·架构
Kookoos1 小时前
ABP VNext + 多级缓存架构:本地 + Redis + CDN
redis·缓存·微服务·架构·abp vnext
tianchang2 小时前
create-vue-ssr - 现代化Vue SSR开发的一站式解决方案
前端·vue.js·架构
张先shen4 小时前
Redis的高可用性与集群架构
java·redis·面试·架构
brzhang4 小时前
看到 Claude Code 和 Cursor 的真面目后,我再也回不去单纯的 IDE 时代了
前端·后端·架构
Hilaku4 小时前
SSR, SSG, ISR, DPR:一篇文章讲清楚这些眼花缭乱的前端渲染模式
前端·javascript·架构
程序员JerrySUN5 小时前
一文理解缓存的本质:分层架构、原理对比与实战精粹
java·linux·开发语言·数据库·redis·缓存·架构
DemonAvenger6 小时前
Go语言实现DNS解析与域名服务的实践与优化
网络协议·架构·go
代码改变世界ctw6 小时前
ARM汇编编程(AArch64架构)课程 - 第9章:原子操作与同步
汇编·arm开发·架构