5月28日 06:51

MCP 协议的核心架构包含哪些关键组件?

MCP 协议的三层架构

MCP(Model Context Protocol)采用传输层、会话层、能力层三层解耦设计,各层职责独立、协同工作,保障协议的兼容性与扩展性。

传输层负责底层通信,支持 Stdio、HTTP Streamable、WebSocket 等多种传输方式。Stdio 适用于本地进程间通信,HTTP Streamable 是 2026 年规范升级后的推荐方式,解决了早期长连接不稳定的问题。

会话层负责连接鉴权与心跳维护。2026 年 3 月规范更新后,Auth 认证机制从草案进入正式版,支持 OAuth 2.0 标准流程,取代了此前被广泛诟病的明文密码方案。

能力层负责工具声明、调用和事件通知,是协议的核心业务层。

三大核心角色:Host、Client、Server

MCP 的运行时架构由三个角色组成:

  • Host(主机):发起连接的 LLM 应用程序,如 Claude Desktop、VS Code 中的 AI 扩展。一个 Host 可以管理多个 Client。
  • Client(客户端):在 Host 内部运行,与 Server 保持 1:1 连接,负责将请求转换为结构化的 JSON-RPC 2.0 消息,管理会话生命周期(超时、重连、中断)。
  • Server(服务器):向外暴露能力,提供工具、资源和提示。Server 可以连接数据库、文件系统、API 等外部服务。

三者关系:Host 包含多个 Client,每个 Client 连接一个 Server,形成星形拓扑。

核心原语:Tools、Resources、Prompts

能力层定义了三种原语,是 Server 向 Client 暴露能力的唯一方式:

Tools(工具)——可执行的操作,类似定义明确的函数。每个工具包含名称、描述和 JSON Schema 定义的参数。LLM 根据工具描述自主决定何时调用。

json
{ "name": "query_database", "description": "执行 SQL 查询并返回结果", "inputSchema": { "type": "object", "properties": { "sql": { "type": "string", "description": "SQL 查询语句" } }, "required": ["sql"] } }

Resources(资源)——可读取的上下文对象,如文件内容、数据库记录、日志条目。Client 主动拉取,Server 不主动推送。

Prompts(提示模板)——结构化的工作流模板,预设工具调用序列和参数,引导 LLM 按特定步骤完成任务。

核心工作流程

完整的 MCP 交互分为四步:

  1. 工具注册:Server 启动后声明自身提供的工具、资源和提示,包含参数定义与权限信息。
  2. 连接鉴权:Client 与 Server 建立连接,完成身份校验(OAuth 2.0 流程)。
  3. 能力发现:Client 获取 Server 支持的工具清单与调用规则,LLM 据此决定可调用哪些工具。
  4. 工具调用与结果返回:LLM 发出工具调用指令,Server 执行后将结果通过 JSON-RPC 响应返回 Client。

MCP 协议的核心优势

MCP 相比自定义工具接口的差异化价值在于:

  • 标准化交互:统一的 JSON-RPC 2.0 消息格式,无需为每个工具单独开发适配逻辑。
  • 跨框架兼容:支持 LangChain、CrewAI 等主流 Agent 框架互通,一套 Server 实现多框架接入。
  • 动态能力发现:工具即插即用,Server 上线后 Client 自动感知新增能力。
  • 内置安全机制:OAuth 2.0 鉴权 + 加密传输 + 权限粒度控制。

2026 年 4 月,Meta、Docker 相继宣布支持 MCP,Linux Foundation 成立 AAIF(AI Agent Interoperability Foundation)接管协议规范,MCP 正在成为 AI Agent 互联互通的事实标准。

追问:MCP 与 Function Calling 有什么区别?

Function Calling 是单模型厂商的私有能力,调用格式和参数定义因模型而异,无法跨模型复用。MCP 是开放协议,定义了标准化的能力声明、发现和调用机制,Server 实现一次即可被任何支持 MCP 的 Client 接入。类比来说,Function Calling 像"专车接口",MCP 像"USB 接口"——前者绑定特定实现,后者面向通用适配。

标签:MCP