从云原生走向 AI 原生:一套面向未来的架构方法论 → 阅读《AI 原生基础设施》

MCP 协议架构

已完成

MCP 的架构让模型与工具像操作系统调用一样安全、可组合、可观测,是智能体生态的底层基石。

模型上下文协议(MCP, Model Context Protocol)定义了一个通用的通信标准,用于连接 大语言模型(LLM)外部系统能力(工具 / 资源 / 上下文)。它通过统一的协议结构与传输语义,让智能体具备安全、可组合、可观察的执行环境。

本章将从架构角色、交互流程、核心元素到安全机制系统解析 MCP 的设计原理。

整体架构概览

MCP 的核心思想是将模型与外部世界之间的接口抽象为标准化协议栈,使 LLM 可以通过一致方式访问各种资源和工具。下方流程图展示了 MCP 架构的角色分工与连接关系:

图 1: MCP 架构角色分工与连接关系
图 1: MCP 架构角色分工与连接关系

下表总结了 MCP 架构的核心角色及其职责:

角色职责示例
Host(主机)运行模型与用户界面,协调上下文与工具访问Claude Desktop、VS Code Copilot
Client(客户端)实现协议通信与消息翻译,将模型指令转为 JSON-RPC 请求内置连接器或插件
Server(服务器)提供可调用工具、资源或提示模板Git、Filesystem、Playwright、Context7
表 1: MCP 架构核心角色与职责

Host 可同时连接多个 Server,使模型能够在同一上下文中调用不同系统资源。这种多连接机制是 MCP 可组合性的关键。

交互流程(消息生命周期)

MCP 的消息交互流程涵盖用户请求、模型决策、工具调用与结果反馈。下方时序图展示了完整的调用过程:

图 2: MCP 消息交互流程
图 2: MCP 消息交互流程

一个完整调用过程包括以下阶段:

  1. 用户发起请求(IDE 或聊天界面提交指令)
  2. 主机准备上下文(Host 提供工具列表、环境信息)
  3. 模型决策与调用(模型选择并调用合适工具)
  4. 客户端转发执行(Client 以 JSON-RPC 向服务器发送调用请求)
  5. 服务器执行操作(完成任务并返回结果)
  6. 结果整合与回答(模型基于结果生成最终输出)

MCP 的设计重点在于每次调用都有结构化输入与确定性输出,便于审计、调试与自动化重放。

核心定义与传输机制

MCP 协议包含一系列核心概念与传输层设计。下表总结了主要定义:

名称说明
Model Context Protocol允许 LLM 与外部系统标准化共享上下文与操作能力的协议
Host模型运行环境与用户界面容器
Client协议通信中间层,负责消息封装、转发与协商
Server暴露外部功能的接口服务,支持 tools / resources / prompts
TransportJSON-RPC 消息传输通道(支持 stdio 与 HTTP)
表 2: MCP 协议核心定义

下表总结了 MCP 的传输层设计及适用场景:

传输类型说明适用场景
STDIO通过主机启动子进程,使用标准输入输出传递 JSON-RPC 消息本地插件、离线环境
HTTP + SSE客户端以 HTTP POST 发送请求,服务器通过 SSE(Server-Sent Events)流式响应远程 Server、云端 SaaS 服务
表 3: MCP 传输层设计与适用场景
安全建议
HTTP 模式应启用 Origin 校验与认证机制,仅允许 localhost 或受信源访问。另请注意:2026-07-28 规范已正式废弃遗留 HTTP+SSE 传输,新部署应使用纯流式 HTTP 传输。

生命周期与握手过程

MCP 连接生命周期分为初始化、运行中与关闭阶段。下表总结了各阶段关键动作(注意:这描述的是 2026-07-28 规范之前的会话式模型,新规范已转向无状态架构,详见下文):

阶段关键动作描述
初始化(initialize)客户端 → 服务器发送协议版本、客户端能力等信息,服务器返回自身能力
运行中(operational)双向通信支持 tools.list、tools.call、notifications 等交互
关闭阶段双方终止传输通道无专用关闭命令,通过连接关闭完成清理
表 4: MCP 连接生命周期与关键动作

下方时序图展示了 MCP 握手与初始化过程:

图 3: MCP 握手与初始化过程
图 3: MCP 握手与初始化过程

MCP 的握手过程保证双方协商协议版本、能力集与通知机制,为后续调用奠定标准语义层。

2026-07-28 规范:无状态化重构

2026 年 7 月 28 日定稿的 2026-07-28 规范是协议诞生以来最大的一次修订:从有状态双向会话转向无状态请求/响应模型,官方定位是让智能体基础设施像 Web 的其余部分一样工作——无状态、可缓存、可路由、全球可达。

为什么要重构?旧规范中,客户端必须先完成 initialize / initialized 握手并绑定 Mcp-Session-Id 会话,服务器端请求(sampling、elicitation)还要求连接保持打开。这在生产环境意味着:负载均衡必须做会话黏连、水平扩展需要共享会话存储、网关无法仅凭请求本身完成路由与鉴权、CDN 难以介入。随着 MCP 成为事实标准,这些约束必须被移除。

核心变化

无会话、无握手。 新规范移除了 initialize / initialized 交换与 Mcp-Session-Id 标头,每个请求都在 _meta 中自带协议版本、客户端身份与能力,服务器发现改为可选的 server/discover RPC:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "deploy",
    "arguments": {},
    "_meta": {
      "protocolVersion": "2026-07-28",
      "clientInfo": { "name": "my-agent", "version": "1.4.0" },
      "capabilities": { "tasks": {} }
    }
  }
}

标头路由。 请求必须在 HTTP 标头中携带 Mcp-MethodMcp-Name,网关可以直接基于标头做路由与鉴权,无需解析消息体——与 REST 的 X-Forwarded-*、gRPC 的 grpc-method 一脉相承:

POST /mcp HTTP/1.1
Host: mcp.example.com
Mcp-Method: tools/call
Mcp-Name: deploy
Authorization: Bearer <token>

多往返请求(MRTR)。 服务器端长连接请求被 MRTR 取代:服务器返回 resultType: "input_required" 与待回答问题,客户端收集响应后带着附加信息重试同一请求。交互语义保留,连接模型变成纯请求/响应。

可缓存的列表结果。 tools/list 等列表响应新增 ttlMscacheScope 字段,客户端、网关与 CDN 可以据此做层级缓存,显著降低高频低变请求的服务器负载。

Tasks 转正。 长时任务从实验特性转为正式扩展,提供基于轮询的 tasks/gettasks/update,以及单一的 subscriptions/listen 流,为耗时数分钟的工具调用标准化了异步生命周期。

授权强化与废弃清单

授权层面有三项硬化:RFC 9207 发行者验证(授权服务器必须返回 iss 参数且客户端兑换前必须验证)、弃用动态客户端注册 DCR 转向客户端 ID 元数据文档 CIMD、客户端凭证绑定到特定发行者。规范同时引入了十二个月最短期限的正式废弃政策,本次废弃的能力如下:

被废弃能力替代方案
initialize 握手与 Mcp-Session-Id请求自带 _meta(协议版本、身份、能力)
roots 能力客户端在 _meta 中直接声明作用域
sampling 能力MRTR(客户端重试附带采样结果)
logging 能力Tasks 扩展的结构化状态上报
遗留 HTTP+SSE 传输纯流式 HTTP 传输
表 5: 2026-07-28 规范废弃清单

Tier 1 SDK(TypeScript、Python、Go、C#)已完全支持新规范,Rust SDK 处于 beta 阶段;依赖旧会话标识符的实现可按废弃窗口逐步迁移。

新旧架构对比与基础设施影响

下图对比了旧有状态会话模型与新无状态请求模型:

图 4: MCP 新旧规范架构对比
图 4: MCP 新旧规范架构对比

从云原生视角,这次修订把 MCP 接入变成了标准的 HTTP 基础设施问题:

  • 负载均衡:任意轮询 LB,无需黏连与共享会话存储;
  • 网关:基于 Mcp-Method / Mcp-Name 标头做路由、限流与鉴权,Envoy/Kong 原生可用;
  • 缓存tools/list 等列表结果按 ttlMs 分层缓存,CDN 可直接命中;
  • 可观测性:标头即 span 属性,链路追踪无需解析消息体;
  • 多租户:请求自描述,租户路由不再依赖会话查找。
场景建议
自研 MCP 服务器优先实现无会话模式,保留旧握手仅作兼容
使用 Tier 1 SDK升级到支持新规范的版本,按废弃窗口清理 roots/sampling/logging
网关 / ingress增加对 Mcp-Method、Mcp-Name 标头的路由与限流规则
高频 tools/list按 ttlMs 配置网关或客户端缓存
长时任务迁移到 Tasks 扩展的 tasks/get + tasks/update 模式
OAuth 集成验证 iss 参数,规划 DCR 到 CIMD 的迁移
表 6: 从旧规范迁移到 2026-07-28 的检查清单

协议核心元素

MCP 通过工具、资源与提示模板三大元素让模型获得外部操作权。下表总结了各元素功能与示例:

元素功能示例
Tools主动调用的可执行操作搜索文件、提交 PR、发起支付
Resources只读数据或订阅源文件内容、数据库查询、文档索引
Prompts可复用提示模板或生成脚本编码规范、测试生成器、工作流模版
表 7: MCP 协议核心元素与示例

所有工具均以结构化方式定义参数模式与返回类型,保证模型调用的稳定性与可预测性。

客户端特性扩展

MCP 客户端支持多种扩展特性,提升模型与外部系统的协作能力。下表总结了常见扩展特性及使用场景:

特性作用使用场景
Roots查询主机文件系统根路径与访问范围文件浏览、代码编辑
Sampling允许服务器反向请求模型生成文本多模态协作、自动摘要
Elicitation服务器请求用户输入或确认安全审批、动态补全
表 8: MCP 客户端扩展特性与使用场景

这些特性在初始化阶段协商启用,由 Host 控制是否允许。

安全与隐私设计

MCP 在设计上引入最小信任原则,保障用户控制与数据安全。下表总结了 MCP 的安全机制:

安全维度机制描述
用户控制显式授权 UI用户可见哪些工具被启用
数据隐私主机侧拦截任何敏感数据传输前需用户确认
工具安全源验证与权限描述防止恶意 Server 伪装成合法服务
采样安全用户审阅提示内容防止模型生成非预期调用
传输安全OAuth2 / JWT 认证防止令牌泄露与中间人攻击
表 9: MCP 安全与隐私机制
实践建议
企业环境建议部署 MCP Gateway,将认证、授权、审计三层逻辑统一托管,提升安全与合规性。

总结

MCP 协议为 AI 工程提供了统一的执行语义层,使模型具备以下特征:

  • 标准化调用:统一工具与资源接口
  • 可组合能力:任意模型可组合任意 Server
  • 跨语言 / 跨平台互操作
  • 可观测与安全可控

它让智能体的外部调用方式像操作系统的系统调用(syscall)一样稳定。在未来的 AI 原生体系中,MCP 将成为智能体运行时的 API 协议层,是连接模型推理与真实世界操作的基础标准。

参考文献

创建于 2025/08/19 更新于 2026/08/14 3571 字 阅读约 8 分钟