MCP协议反思

3217 字
16 分钟
MCP协议反思

每日学习笔记 · 2026-08-06#

📅 学习日期:2026-08-06 | 📚 来源:AI Agent 知识库 | 📝 综合文章数:5 篇

📌 今日速览#

MCP 被称为”AI 界的 USB-C”,月下载量 9700 万次,但 2026 年初一线开发者集体质疑:单个 GitHub MCP Server 消耗 55000 tokens,6 个 Server 就烧掉 60K-90K tokens;43% 的 MCP 实现存在命令注入漏洞,1862 个 Server 无认证暴露公网。行业态度从”必须支持”转向”看情况用”。今天从 5 篇文章里梳理出工具调用协议的三代演进(Function Calling → MCP → Skills)、三大通信协议的定位(MCP/A2A/ANP)、MCP 的成本危机与替代方案,以及从协议到 AgentOS 的系统性演进。最核心的反共识观点是:MCP 最大贡献或许不是协议本身,而是引发了行业对”给 Agent 一堆工具定义”范式的反思。

一、为什么今天聊这个?#

过去 30 天我们学完的脉络是:

  • 8-03 Tool Use 工具调用:讲了工具调用的协议层(Function Call / MCP)和形态层(Tool / Skill / Plugin),但没深入 MCP 本身的设计与争议
  • 8-05 Agentic AI 安全:43% 的 MCP 实现存在命令注入漏洞——安全问题的根源之一就是协议设计
  • 7-27 Skill 技能系统:Skills 是 MCP 的上层决策层,但没讲清楚两者的关系

今天把 MCP 协议拿出来单独学,是因为它正处于一个关键转折点:从”AI 界的 USB-C”到”看情况用”,从”必须支持”到反思替代方案。理解这个转折,对理解 Agent 基础设施的走向至关重要。

二、核心要点#

要点 1:三代演进——Function Calling → MCP → Skills 不是替代,是分层#

Function Calling(底层执行):让 LLM 从”缸中之脑”变成”指挥官”——模型输出 JSON 格式调用指令,告诉程序调哪个函数、传什么参数。工作三步走:①契约定义(JSON Schema)→ ②大脑决策(模型输出 tool call)→ ③闭环执行(结果喂回模型)。

局限:工具从 3 个变 300 个时,重复造轮子(不同模型需写不同格式)、紧耦合(工具定义硬编码在代码里)、工具描述占上下文(每个 Schema 塞进窗口,挤压对话空间)。

MCP(标准化连接):Anthropic 2024.11 发布的开放协议,核心理念是”写一次,到处用”。采用 Host/Client/Server 三层架构:Host(如 IDE)运行 AI → Client(内嵌 Host)对接 Server → Server(独立进程)提供工具/资源/提示。通信用 JSON-RPC 2.0 over stdio(本地)或 HTTP+SSE(远程)。

解决的问题:集成点从 N×M 降到 N+M。10 个 Agent 接 20 工具,原 200 集成点;用 MCP 后,工具内部变更只需改 Server,不影响各 Agent 配置。

Skills(上层决策):标准化”程序性知识封装格式”——MCP 给”手”,Skills 给”操作手册”。核心创新是渐进式披露三层加载:①元数据(~100 Token,启动扫描)②完整指令(匹配才加载 1-5K Token)③附加资源(执行才读)。解决 MCP 上下文爆炸和”能连≠会用”的能力鸿沟。

分层架构:三者不是替代关系,而是分别对应底层执行(FC)、标准化连接(MCP)、上层决策(Skills)。场景示例:Skills 层加载 mysql 分析技能定义维度 → MCP 层调数据库 Server 执行 SQL → Function Calling 层底层驱动跑 SQL。

要点 2:MCP 的成本危机——Token 烧钱的真相#

MCP 的 Token 消耗是真实且严重的:

指标数据
单个 GitHub MCP Server~55,000 tokens(93 个工具定义)
单个 Docker MCP Server~125,000 tokens
典型 6 个 Server 环境60,000-90,000 tokens
8 个 Server 每轮对话~51,000 tokens(占 200K 上下文 25%)
企业级 120 工具/25 轮/天每月纯 Schema Token 开销 $81,000+

根本原因:MCP 的设计是”全量加载工具定义”——所有工具的 Schema 必须塞进上下文窗口,Agent 才能知道有哪些工具可用。工具越多,上下文越拥挤,留给真正推理的空间越少。

替代方案及节省比例:

方案核心思路Token 节省
CLIMCP Server 转轻量 CLI,懒加载发现94-99%
Code ModeTypeScript 文件 + 沙箱执行,Agent 自读文档写代码98.7-99.9%
Tool Search工具描述超 10% 时懒加载,仅搜索匹配的工具85-95%

Cloudflare 的 Code Mode 案例:2,500+ API 端点,Token 从 1,170,523 降到约 1,000,节省 99.9%。Anthropic 自家的 Tool Search:Token 从 ~134K 降到 ~5K,Opus 4.5 准确率反而从 79.5% 升至 88.1%。

💡 反共识观点:MCP 的”全量加载工具定义”模式正在被证明是反模式。Agent 不需要知道所有工具的细节,只需要知道在需要时去哪里找——这和人类不需要记住所有 API 文档,只需要知道怎么查文档一样。

要点 3:MCP 的安全黑洞——协议的”暗面”#

MCP 的安全问题是系统性的:

安全问题数据
无认证暴露公网1,862 个 MCP Server
命令注入漏洞43% 的 MCP 实现
无限制 URL 获取30% 的 MCP 实现
暴露预期目录外文件22% 的 MCP 实现
高危 CVE3 个(最高 CVSS 9.6)
装 10 个插件被利用概率92%

根本原因:MCP 的设计哲学是”上下文共享”——让 Agent 能自由访问工具和数据。但”自由访问”恰恰是安全问题的根源。昨天(8-05)学过的 Sandlock 观点在此完美呼应:安全的核心是策略而非隔离,MCP 的安全漏洞本质上是”权限配置过于宽松的策略”。

要点 4:三大通信协议——MCP/A2A/ANP 的分工#

协议解决的问题设计哲学适用场景
MCP如何访问工具上下文共享增强单个智能体的能力
A2A如何与其他智能体对话对等通信小规模团队的紧密协作
ANP如何在大规模网络中发现和连接智能体去中心化服务发现构建大规模、开放的智能体网络

三者不是竞争而是互补:MCP 解决”手”(工具连接),A2A 解决”嘴”(智能体间通信),ANP 解决”地图”(大规模网络中的发现与路由)。在 AgentOS 的分层架构中,MCP 位于 L3(执行与工具层),A2A 位于 L5(编排与治理层),ANP 位于 L6(基础设施层)。

要点 5:从协议到 AgentOS——MCP 的终局不是”更好的协议”#

WebMCP 的通信生命周期:连(Connect)→ 取(Get Endpoint)→ 握(Handshake)→ 用(Usability)→ 断(Terminate)。双通道传输:SSE(Server→Client 推送)+ HTTP POST(Client→Server 请求)。

AgentOS 的范式迁移:从传统 OS(确定性业务、管理应用/进程)到 AgentOS(概率性推理、管理 Agent/AI 资源)。交互从 GUI/CLI”怎么做”变为 LUI”想要什么”,运行从被动响应到主动决策。

AgentOS 六层架构:L1 接口与感知层 → L2 认知与决策层(LLM 内核)→ L3 执行与工具层(MCP) → L4 记忆与状态层 → L5 编排与治理层 → L6 基础设施层。

MCP 的定位跃迁:MCP 是标准化”连接器”(AI 时代 USB-C),解决”能做什么”的接入;AgentOS 是系统级”调度与治理平台”,解决”该如何做、与谁协作、安全可控”。MCP 被内化为 AgentOS 的执行层”系统调用”接口——就像 POSIX 系统调用对应用程序的意义。

“用 Token 换架构”的本质:Agent 是用更多的运行时成本(多轮推理 + 多次工具调用 + 更高延迟/Token),换开发与维护成本的下降(分支更少、扩展更快、长尾更适配)。MCP 在这个框架里是”连接成本”的标准化——用少量 Token 换取 N×M 到 N+M 的架构简化。

三、分歧与讨论#

1. MCP 的”全量加载”vs”按需发现”#

MCP 的核心设计是让 Agent 在调用前就知道所有可用工具(全量加载 Schema),但 Token 成本证明这是不可持续的。替代方案(CLI/Code Mode/Tool Search)走的是”按需发现”路线——Agent 不知道所有工具的细节,但知道怎么去查。

深层矛盾:全量加载让模型有”全局视野”做更好的决策,但 Token 成本太高;按需发现节省成本,但可能遗漏最佳工具选择。这本质上是”信息完备性”和”成本效率”的权衡——Anthropic 的 Tool Search 数据表明,按需发现反而提升了准确率(79.5%→88.1%),暗示”信息过载”比”信息不足”更影响决策质量。

2. MCP 是”USB-C”还是”SOAP”?#

乐观派认为 MCP 是 AI 界的 USB-C——统一标准,一旦普及就不可逆。悲观派认为 MCP 可能重蹈 SOAP 的覆辙——过于复杂,最终被更轻量的 REST 取代(CLI/Code Mode 就是 REST)。

作者的观点:MCP 短期内仍是事实标准,但长期可能退缩为底层传输协议,上层被 Code Mode/SDK 包裹——类比 SOAP 退缩至企业内部,REST 成为互联网主流。关键取决于 Agent 自主能力增长速度:如果 Agent 能自读文档、写代码、处理认证,“工具声明”层就多余了。

3. MCP 的安全问题是”协议问题”还是”实现问题”?#

43% 的命令注入漏洞是”协议设计缺陷”还是”开发者实现不严谨”?答案可能是两者都有:MCP 的”上下文共享”设计哲学天然鼓励宽松权限,而协议本身缺乏强制安全机制(如认证、授权、审计)。昨天学过的 ClawLess 的”形式化验证”思路或许能给 MCP 协议层提供安全补丁。

四、与已学内容的联系#

已学主题关联点
8-03 Tool Use 工具调用今天是 8-03 的”协议层”深化——Function Calling/MCP/Skills 的三代演进是 8-03 “工具描述三要素”的工程化落地
8-05 Agentic AI 安全43% MCP 命令注入、1862 个无认证 Server——正是 8-05 “权限配置过于宽松”的典型案例;Sandlock 的”策略优先”和 ClawLess 的”形式化验证”可应用于 MCP 安全加固
7-27 Skill 技能系统Skills 是 MCP 的上层决策层,渐进式披露解决了 MCP 上下文爆炸问题——7-27 的”可用”到 8-05 的”可信”转化路径中,MCP 是”可控”的连接层
7-28 Context EngineeringMCP 的 Token 消耗问题本质上是上下文管理问题——“全量加载工具定义”挤压推理空间,与 7-28 讨论的上下文窗口稀缺性直接相关
8-04 Planning 任务规划MCP 的”按需发现”替代”全量加载”——Agent 的规划不需要知道所有工具的细节,只需要知道”在需要时去哪里找”,这与 8-04 的”动态重规划”理念一致

💡 思考题#

  1. 如果 Code Mode 能节省 98.7-99.9% 的 Token,为什么不是所有场景都立刻切换到 Code Mode?Code Mode 的代价是什么?(提示:考虑 Agent 自主能力要求、安全边界、可预测性)
  2. 你的 Agent 系统需要同时接入 10 个内部工具和 3 个第三方服务。在 Function Calling、MCP、CLI-first 三种方案中,你会如何组合?画出你的架构图,并说明每一层为什么这样选。

🎯 行动项#

  1. 对比你的 Agent 系统中 MCP Server 的 Token 消耗:统计每个 Server 的工具定义数量和 Token 占比,找出”Token 大户”。如果某个 Server 超过上下文 10%,考虑用 Tool Search 或 CLI 替代。
  2. 阅读 Anthropic 的 MCP Tool Search 文档,了解懒加载机制的具体实现。思考:你的场景中,哪些工具适合”始终加载”(高频核心工具),哪些适合”按需发现”(低频专用工具)?

参考文章#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

MCP协议反思
https://www.zgf.me/posts/每日学习笔记--2026-08-06/
作者
赵某人
发布于
2026-08-06
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
赵某人
俯视泥土,仰望星辰
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
28
分类
1
标签
58
总字数
129,420
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.14.5
文章许可
CC BY-NC-SA 4.0