MCP 协议架构
MCP 的架构让模型与工具像操作系统调用一样安全、可组合、可观测,是智能体生态的底层基石。
模型上下文协议(MCP, Model Context Protocol)定义了一个通用的通信标准,用于连接 大语言模型(LLM, Large Language Model) 与 外部系统能力(工具 / 资源 / 上下文)。它通过统一的协议结构与传输语义,让智能体具备安全、可组合、可观察的执行环境。
本章将从架构角色、交互流程、核心元素到安全机制系统解析 MCP 的设计原理。
整体架构概览
MCP 的核心思想是将模型与外部世界之间的接口抽象为标准化协议栈,使 LLM 可以通过一致方式访问各种资源和工具。下方流程图展示了 MCP 架构的角色分工与连接关系:
下表总结了 MCP 架构的核心角色及其职责:
| 角色 | 职责 | 示例 |
|---|---|---|
| Host(主机) | 运行模型与用户界面,协调上下文与工具访问 | Claude Desktop、VS Code Copilot |
| Client(客户端) | 实现协议通信与消息翻译,将模型指令转为 JSON-RPC 请求 | 内置连接器或插件 |
| Server(服务器) | 提供可调用工具、资源或提示模板 | Git、Filesystem、Playwright、Context7 |
Host 可同时连接多个 Server,使模型能够在同一上下文中调用不同系统资源。这种多连接机制是 MCP 可组合性的关键。
交互流程(消息生命周期)
MCP 的消息交互流程涵盖用户请求、模型决策、工具调用与结果反馈。下方时序图展示了完整的调用过程:
一个完整调用过程包括以下阶段:
- 用户发起请求(IDE 或聊天界面提交指令)
- 主机准备上下文(Host 提供工具列表、环境信息)
- 模型决策与调用(模型选择并调用合适工具)
- 客户端转发执行(Client 以 JSON-RPC 向服务器发送调用请求)
- 服务器执行操作(完成任务并返回结果)
- 结果整合与回答(模型基于结果生成最终输出)
MCP 的设计重点在于每次调用都有结构化输入与确定性输出,便于审计、调试与自动化重放。
核心定义与传输机制
MCP 协议包含一系列核心概念与传输层设计。下表总结了主要定义:
| 名称 | 说明 |
|---|---|
| Model Context Protocol | 允许 LLM 与外部系统标准化共享上下文与操作能力的协议 |
| Host | 模型运行环境与用户界面容器 |
| Client | 协议通信中间层,负责消息封装、转发与协商 |
| Server | 暴露外部功能的接口服务,支持 tools / resources / prompts |
| Transport | JSON-RPC 消息传输通道(支持 stdio 与 HTTP) |
下表总结了 MCP 的传输层设计及适用场景:
| 传输类型 | 说明 | 适用场景 |
|---|---|---|
| STDIO | 通过主机启动子进程,使用标准输入输出传递 JSON-RPC 消息 | 本地插件、离线环境 |
| HTTP + SSE | 客户端以 HTTP POST 发送请求,服务器通过 SSE(Server-Sent Events)流式响应 | 远程 Server、云端 SaaS 服务 |
生命周期与握手过程
MCP 连接生命周期分为初始化、运行中与关闭阶段。下表总结了各阶段关键动作:
| 阶段 | 关键动作 | 描述 |
|---|---|---|
| 初始化(initialize) | 客户端 → 服务器 | 发送协议版本、客户端能力等信息,服务器返回自身能力 |
| 运行中(operational) | 双向通信 | 支持 tools.list、tools.call、notifications 等交互 |
| 关闭阶段 | 双方终止传输通道 | 无专用关闭命令,通过连接关闭完成清理 |
下方时序图展示了 MCP 握手与初始化过程:
MCP 的握手过程保证双方协商协议版本、能力集与通知机制,为后续调用奠定标准语义层。
协议核心元素
MCP 通过工具、资源与提示模板三大元素让模型获得外部操作权。下表总结了各元素功能与示例:
| 元素 | 功能 | 示例 |
|---|---|---|
| Tools | 主动调用的可执行操作 | 搜索文件、提交 PR、发起支付 |
| Resources | 只读数据或订阅源 | 文件内容、数据库查询、文档索引 |
| Prompts | 可复用提示模板或生成脚本 | 编码规范、测试生成器、工作流模版 |
所有工具均以结构化方式定义参数模式与返回类型,保证模型调用的稳定性与可预测性。
客户端特性扩展
MCP 客户端支持多种扩展特性,提升模型与外部系统的协作能力。下表总结了常见扩展特性及使用场景:
| 特性 | 作用 | 使用场景 |
|---|---|---|
| Roots | 查询主机文件系统根路径与访问范围 | 文件浏览、代码编辑 |
| Sampling | 允许服务器反向请求模型生成文本 | 多模态协作、自动摘要 |
| Elicitation | 服务器请求用户输入或确认 | 安全审批、动态补全 |
这些特性在初始化阶段协商启用,由 Host 控制是否允许。
安全与隐私设计
MCP 在设计上引入最小信任原则,保障用户控制与数据安全。下表总结了 MCP 的安全机制:
| 安全维度 | 机制 | 描述 |
|---|---|---|
| 用户控制 | 显式授权 UI | 用户可见哪些工具被启用 |
| 数据隐私 | 主机侧拦截 | 任何敏感数据传输前需用户确认 |
| 工具安全 | 源验证与权限描述 | 防止恶意 Server 伪装成合法服务 |
| 采样安全 | 用户审阅提示内容 | 防止模型生成非预期调用 |
| 传输安全 | OAuth2 / JWT 认证 | 防止令牌泄露与中间人攻击 |
总结
MCP 协议为 AI 工程提供了统一的执行语义层,使模型具备以下特征:
- 标准化调用:统一工具与资源接口
- 可组合能力:任意模型可组合任意 Server
- 跨语言 / 跨平台互操作
- 可观测与安全可控
它让智能体的外部调用方式像操作系统的系统调用(syscall)一样稳定。在未来的 AI 原生体系中,MCP 将成为智能体运行时的 API 协议层,是连接模型推理与真实世界操作的基础标准。