2026-07-24 · 11 min read

MCP 协议 —— Agent 工具生态的通用插座标准

MCP 让工具开发者只需实现一次就能对接所有 Agent 框架。从客户端-服务器架构到工具/资源/提示三类原语,从 5 个服务器 = 55K token 的上下文开销问题到层次化组织与动态发现,再到信任模型的四类安全风险——理解 MCP 的价值和边界。

上一节讨论了工具设计原则。这些原则要落地,需要一个统一的生态标准。这就是 MCP 要解决的问题。

每个 Agent 框架定义工具的方式都不一样——OpenAI 的 function calling 格式、Anthropic 的 tool use 格式、LangChain 的 Tool 抽象。工具开发者不得不为不同框架重复适配,就像每个国家的电源插座标准都不同。

MCP(Model Context Protocol) 是 Anthropic 于 2024 年底发布的开放标准,相当于为 AI 工具生态制定一个通用的插座标准。


MCP 的核心架构

三个关键设计决策

1. 标准化的工具描述格式。 每个工具通过 JSON Schema 定义输入参数的类型、约束和描述,确保不同客户端都能正确理解工具的使用方式。

2. 传输层的灵活性。 同一 MCP 服务器既能作为本地进程运行(stdio),也能部署为远程服务(Streamable HTTP)。早期的 SSE 方案已弃用。

3. 三类原语的分离。 MCP 不仅定义了可执行的工具,还区分了三种不同性质的原语:

原语类型性质示例
工具(Tools)模型可执行的操作搜索、读取、写入、执行命令
资源(Resources)应用可读取的数据文件内容、数据库记录——只读,无需调用工具
提示模板(Prompts)用户可选用的模板服务器提供的可复用提示词

这种分离让 Agent 能区分"获取信息"和"执行操作"——前者轻量安全,后者需要谨慎。

生态价值:一次开发,处处可用

一个 MCP 服务器可以同时被 Cursor、Claude Desktop、OpenClaw 等任何兼容客户端使用,工具开发者无需关心上游 Agent 框架的差异。MCP 已被多个主流 Agent 框架和 IDE 采纳。


MCP 的局限性

MCP 的工具调用主体上仍是请求-响应式——客户端发起调用,等待服务器返回结果。

协议已提供若干扩展原语:资源更新通知(notifications)、执行进度(progress)、采样(sampling)、征询(elicitation)。但这些原语都作用于保持连接的单个会话之内——通知能告诉客户端"资源变了",却没有标准方式触发 Agent 的思考循环,更无法唤醒一个当下没有运行的 Agent。

跨会话、多事件源、离线唤醒的事件驱动 Agent 架构——新邮件随时可能到达、外部系统随时可能回调、Agent 需要在没有任何会话保持时被唤醒——仍需在 MCP 之上另行构建。

构建方式是分层的:MCP 负责单次工具调用的标准化交互,Agent 框架在其上通过事件队列管理多个调用的调度、并发与外部事件源的接入。


上下文开销:5 个服务器 = 55K token

MCP 生态的快速扩张带来了一个工程问题:仅仅 5 个 MCP 服务器就可能引入数万 token 量级的工具定义开销(约 55,000 token,视具体服务器而定)。在 200K 的上下文窗口里,还没开始对话就用掉了近三成。

Cursor 在实践中验证了一种缓解方案:将工具描述同步到文件夹,Agent 默认只看到工具名称的索引,需要时再查询具体定义。A/B 测试显示,这种方式使 MCP 工具相关任务的总 token 消耗减少 46.9%。

这与第二章的 KV Cache 友好原则和 Skills 渐进式披露一脉相承:默认少给,按需加载。


从平铺到层次化:工具的组织方式

当工具数量增长到上百个时,层次化组织比扁平列表有效得多。一种按信息源性质的分类:

分类作用示例
搜索工具主动查找信息网络搜索、知识库搜索、文件搜索
读取工具从已知位置提取内容网页阅读、文档读取、数据库查询
解析工具处理非结构化数据图片 OCR、视频分析、音频转录
查询工具访问结构化数据源天气 API、股票 API、公开数据库

在系统提示词中显式说明分类结构,帮 LLM 快速定位相关工具组。更进一步是动态工具发现——不把全部工具定义一次性注入上下文,而是让 Agent 通过搜索按需发现工具定义。Anthropic 实验显示,按需检索使 Opus 4 在工具使用基准上的准确率从 49% 提升到 74%。


MCP 到 Skills:工具多了怎么办

MCP 解决的是互操作(一次开发,处处可用),Skills 解决的是选择过载。

当可用工具从十几个增长到数百个时,模型面对平铺的工具列表越来越难做出正确选择。第二章的 Skills 用少量通用工具加可按需加载的知识文档替代大量专用工具,在根本上把"工具选择"问题转化为"知识检索"问题——后者正是 LLM 擅长的。


MCP 的信任模型与四类安全风险

MCP 让接入第三方工具变得前所未有的容易,但每接入一个 MCP 服务器就等于把一段不受控制的文本注入了 Agent 的上下文,往往还把凭证交到了别人手里。

缓解思路

与传统的软件供应链安全一脉相承:

措施做法
接入前审查把 description 当作不可信输入来审计,而不是当作无害元数据
锁定版本拒绝静默更新,升级时重新审查
最小权限凭证每个服务器只授予完成任务所需的最小范围,设有效期,不复用高权限个人凭证
运行时 Sidecar独立安全审查模型只看结构化工具调用数据,不被藏在描述里的话术操纵(本章后文详述)

第五章将系统介绍 Simon Willison 提出的致命三要素——访问私有数据、暴露于不可信内容、对外通信能力——三者齐备即构成一条完整的攻击闭环。接入的 MCP 服务器越多,同时集齐三要素的概率越高;持久记忆会让攻击影响跨会话持续。


总结

#要点
1MCP = 工具生态的通用插座标准,一次开发处处可用,已被主流框架和 IDE 采纳
2MCP 仍是请求-响应式,跨会话事件驱动需在协议之上另行构建
3上下文开销:5 个服务器 ≈ 55K token。缓解:渐进式披露 + 层次化组织 + 动态发现
4MCP 接入 = 信任一个外部实体。四类安全风险需从审查、锁版本、最小权限三方向缓解