MCP的接班人不是A2A,是Skills

MCPAI AgentSkillsOpenClawContext WindowA2A

上周我在调试一个自动化工作流,连上了4个MCP服务器——GitHub、Brave Search、Filesystem、Puppeteer。配置完毕,打开Claude,输入"你好"。

就这两个字。

Token计数器显示:67,000 tokens。

我还没开始干活,context window已经用掉三分之一了。


一、67,000 tokens买了什么?

不是我一个人遇到这个问题。Medium上的Joe Njenga写过一篇文章,标题直接叫《MCP正在悄悄吃掉你的context》:"4个MCP服务器连接后,我连一个字都还没输入,67,000 tokens就没了。"

这不是个例。DEV.to上的piotr_hajdas给过一个简单公式:

10台MCP服务器 × 15个工具/服务器 × 500 tokens/工具 = 75,000 tokens

Reddit社区r/ClaudeCode的一位用户测得更极端:6个MCP服务器连接时,预加载了83,300 tokens,占200K上下文窗口的41.6%

对于Claude Sonnet,按官方pricing算,每百万token输入约$3。如果你每天对话20轮,光是MCP的"开场费"就是:

83,300 × 20 × $3 / 1,000,000 ≈ $5/天

这还是保守估算。有人在Twitter上晒账单:接了一堆MCP服务,两天烧了$300。一个月下来轻松$375+,全给了"工具描述"。


二、MCP的原罪:这是设计,不是Bug

很多人第一反应是:那找写得更精简的MCP服务器不就行了?

我也这么想过。直到看到2025年9月华为研究员提交的SEP-1576提案——他们分析了官方GitHub MCP中的工具定义,发现60%的字段是冗余的。换句话说,即使是官方维护的、质量最高的MCP实现,也有大量无效token。

这不是"某个MCP写得烂"的问题。这是JSON Schema协议的必然代价。

MCP的工具描述长这样:

{
  "name": "search_web",
  "description": "Search the web for information",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "The search query"
      },
      "num_results": {
        "type": "integer",
        "description": "Number of results to return",
        "default": 10,
        "minimum": 1,
        "maximum": 100
      }
    },
    "required": ["query"]
  }
}

这段JSON对机器来说很友好——类型严格、可验证、可程序化解析。但对LLM来说,它是一堆重复的结构噪音。"type": "object""type": "string""required"数组……每一行都在消耗token,却几乎不增加LLM真正需要的语义信息。

MCP协议设计的初衷是让工具调用标准化、可互操作。这个目标没错。但副作用是:你为机器可读性付出了LLM理解成本。这是协议层的权衡,无法通过"优化某个MCP"来根治。


三、A2A:一个跑题的答案

2025年4月,Google发布了Agent-to-Agent(A2A)协议,社区里炸开了锅。"MCP的替代者来了!"

等我真正看完A2A规范,发现它解决的根本不是同一个问题。

A2A要解决的是:已经存在的多个AI代理之间,如何通信和协作。它定义了代理发现、任务委派、状态同步的标准协议——这是一个非常有价值的问题,但前提是你已经有一群跑得很稳的AI代理在生产环境里运行。

现实是什么?大多数开发者还在为MCP token付钱,还在调试单个代理为什么突然忘了上下文,还在想办法让Claude别把工具描述当成任务描述来回答。

用A2A解决MCP的token问题,像是在一条土路上造了一条六车道高速公路——路修好了,但你的车还没发动。

A2A是2027年的答案。MCP的token问题是今天每个连了三个以上服务器的人都在面对的问题。


四、Skills:被所有人忽视的第三条路

Skills不是什么新技术。它的核心极其简单:

用自然语言把工具的使用方法注入System Prompt,而不是用JSON Schema定义工具接口。

一个等价的"网络搜索"工具,用Skills描述是这样的:

使用 firecrawl 工具可以搜索网页。调用方式:exec firecrawl search "查询词"。
适用场景:需要获取实时网络信息、查找文档、研究某个主题时使用。

token数:大约30-40个。

对比JSON Schema方式的300-600 tokens,差距是5-10倍

更关键的是:自然语言对LLM来说本来就更"可读"。LLM是在自然语言语料上训练的,理解"查找网络信息时用firecrawl"比解析一大段JSON Schema更直接、更准确。BAML(BoundaryML)的研究发现,在某些场景下,纯提示词技术的准确性甚至高于传统函数调用方式(来源:boundaryml.com/blog/schema-aligned-parsing)。

Skills的另一个优势是灵活性。你可以用自然语言描述"什么时候用这个工具"、"这个工具的注意事项"、"和其他工具的区别"——这些元信息在JSON Schema里几乎无法表达,或者要用大量冗余字段才能勉强描述。


五、我的实战:13个Skills,0个MCP

说够了理论。来看实际效果。

过去三个月,我把工作流从"MCP为主"切换到"Skills为主"。目前我在OpenClaw里运行13个Skills:

Skill替代的MCP功能
agent-browserPuppeteer MCP / Playwright MCP
firecrawlBrave Search MCP / Fetch MCP
githubGitHub MCP
weather天气API MCP
obsidianObsidian MCP
himalaya邮件MCP
apple-reminders提醒事项MCP
apple-notesNotes MCP
pdfPDF处理MCP
docxWord文档MCP
coding-agent
nano-pdf
summarize

覆盖范围:浏览器控制、网页抓取、代码管理、文件处理、邮件、天气、笔记……我原来需要7-8个MCP服务器才能实现的功能,13个Skills全部覆盖,且上下文开销大幅减少。

实际感受:

上下文更干净。 每个会话开始时,Skills注入的内容大约是1,500-2,000 tokens(13个Skills,每个约100-150 tokens的描述)。等价的MCP配置会是什么?参考前面的公式,至少50,000 tokens起步。

模型表现更稳定。 这是我没预期到的副作用。当context不被工具描述占满时,模型在推理任务上的表现明显提升。它不需要"穿越"大量结构化噪音才能到达真正的任务描述。

不再有"今天context够不够用"的焦虑。 以前做长文档处理或者复杂代码重构时,我总要提前规划token预算。现在这个问题基本消失了。


六、三者的正确位置

写到这里,我要说一句公道话:MCP没有错,A2A也没有错。

MCP的价值在于标准化和精确性。如果你在构建一个对外提供的AI工具服务,或者需要严格的类型校验和错误处理,MCP是正确选择。它的问题不是设计错了,而是在token成本没有解决之前,不应该被当作"默认选项"滥用。

A2A的价值在于未来的多代理系统。当你真的有多个专业化AI代理在生产环境协作时,A2A会是它们之间的通信标准。但那是2026-2027年的事。

Skills今天就能用,而且效果可验证。它不是一个新协议,不需要等生态成熟,不需要服务商支持——你只需要能修改System Prompt。


结语:接班人不是推翻,是先把活干了

MCP还没解决自己的token问题,A2A已经在讨论多代理通信标准,而Skills悄悄把这两件事都绕过去,把活干完了。

这就是我说"MCP的接班人是Skills"的意思。不是推翻,不是替代——是在生态还没成熟、token还很贵的今天,找到了一条更务实的路。

等MCP解决了token bloat(也许会有SEP-1576的压缩方案,也许会有新协议),等A2A等来了真正的多代理时代,我们再重新评估。

但现在,2026年的今天——13个Skills,0个MCP,我的context window终于不再消失。


数据来源:Medium Joe Njenga《MCP正在悄悄吃掉你的context》;DEV.to @piotr_hajdas;Reddit r/ClaudeCode;华为SEP-1576提案(2025-09-30);BoundaryML BAML研究(boundaryml.com/blog/schema-aligned-parsing)

Interested in AI governance for your firm?

Let's have a practical conversation about where you stand.

Get in Touch →