OpenRouter 的实测结论很扎眼:同一任务,走 MCP 比走命令行(CLI)多烧 42 倍 token。先说结论:贵的主要原因不是 MCP 协议本身慢,而是工具清单和返回结果把上下文塞满了;查清单、砍返回字段,比换协议更管用。
42 倍是从哪来的
第一笔账是工具清单。MCP 服务器要把全部工具的定义塞进每次请求的上下文里:一个没做过滤的 X 平台 MCP 服务有 227 个工具,光清单就占 68,198 个 token;同一个服务只留 3 个常用工具,清单降到 2,362 个 token。7 个 MCP 服务器同时挂着,什么都没问就先吃掉 67,300 个 token,占 20 万上下文的三分之一。
第二笔账是返回结果。读 20 条帖子,MCP 返回的中位数是 41,250 个 token;同样的数据走 CLI 再用 jq 只取 8 个字段,中位数 4,069 个 token,少了 90.9%。协议本身的开销反而是小头:190 次对照测试里,MCP 只比 CLI 多 1.2 到 2 倍。
三步把消耗打下来
- 只接用得上的服务器:每个 MCP 服务器先问自己“这周真的会用它吗”,不用就先断开;必须接的,用白名单只放行要用的几个工具。
- 返回结果先裁剪:让服务器只返回必要字段,或者在 CLI 一侧用 jq 这类工具先过滤再喂给模型,别把整段 JSON 原样塞进上下文。
- 把常用流程写成技能:固定的操作步骤写成一份技能文档,让模型照着走,别每次都现场发现工具、现场试错。
也有 MCP 更便宜的时候
代码导航这类要连续追踪调用链的任务,实测里 MCP 反而比 CLI 便宜 2.5 倍(中位数 12.7 万对 31.6 万 token),因为一次调用能拿到结构化的关联结果,省掉了反复搜索。所以别一刀切弃用 MCP:读数据、查状态这类活 CLI 更省,连续多步的关联操作可以留给 MCP。另外注意,token 数字因分词器而异,上面用的是 tiktoken 的 o200k_base,Claude 和 Grok 各自计法不同,看相对倍数,别抠绝对值。MCP 本身是什么可以先看MCP 是什么?它和 API、插件调用有什么区别,42 倍这个数字的来源见OpenRouter 实测:同一任务 MCP 比 CLI 多烧 42 倍 token。