本文翻译自 I Made MCP 94% Cheaper (And It Only Took One Command),原载于 Hacker News。
每个使用 MCP(Model Context Protocol)的 AI Agent 都在默默地”多付钱”。
这不是说 API 调用本身有什么问题——那部分是正常的。问题出在”说明书”上。
在你的 Agent 能做任何有用的事情之前,它需要知道有哪些工具可用。MCP 的做法是把整个工具目录以 JSON Schema 的形式一股脑儿塞进对话里。每个工具、每个参数、每个选项,全部列出来。
CLI 做的是同样的工作,但更省钱。
同样的工具,不同的包装
作者做了一个实验:用 CLIHub 从一个 MCP Server 生成对应的 CLI。同样的工具、同样的 OAuth、同样的底层 API。只有两件事会变:会话开始时加载什么,以及 Agent 如何调用工具。
下面的数据基于一个典型配置:6 个 MCP Server,每个 14 个工具,总共 84 个工具。
1. 会话启动
MCP 在启动时就把所有工具的 Schema 塞进对话里。而 CLI 只加载一个轻量级的技能列表——只有名字和位置。Agent 需要时再去发现详细信息。
MCP 加载的内容(约 185 tokens × 84 = 15,540 tokens):
{
"name": "notion-search",
"description": "Search for pages and databases",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query text"
},
"filter": {
"type": "object",
"properties": {
"property": { "type": "string", "enum": ["object"] },
"value": { "type": "string", "enum": ["page", "database"] }
}
}
}
}
},
{
"name": "notion-fetch",
...
}
... (共 84 个工具)
CLI 加载的内容(约 50 tokens × 6 = 300 tokens):
notion
CLI for Notion
~/bin/notion
linear
...
... (共 6 个工具)
2. 工具调用
当 Agent 知道有什么可用之后,还需要实际调用工具。
MCP 工具调用(约 30 tokens):
{
"tool_call": {
"name": "notion-search",
"arguments": {
"query": "my search"
}
}
}
CLI 工具调用(约 610 tokens):
# 步骤 1: 发现工具(约 4 + 600 tokens)
$ notion --help
notion search [--filter-property ...]
Search for pages and databases
notion create-page [--parent-id ID]
Create a new page
... 还有 12 个工具
------------------------------------------------
# 步骤 2: 执行(约 6 tokens)
$ notion search "my search"
MCP 的调用更便宜,因为定义已经预加载了。CLI 在发现阶段要”付费”——--help 返回完整的命令参考(14 个工具约 600 tokens),然后 Agent 才知道该怎么执行。
Token 使用对比
| 使用的工具数 | MCP | CLI | 节省比例 |
|---|---|---|---|
| 会话启动 | ~15,540 | ~300 | 98% |
| 1 个工具 | ~15,570 | ~910 | 94% |
| 10 个工具 | ~15,840 | ~964 | 94% |
| 100 个工具 | ~18,540 | ~1,504 | 92% |
CLI 总体节省约 94% 的 tokens。
Anthropic 的 Tool Search 方案
Anthropic 推出了 Tool Search 功能,它加载搜索索引而不是所有 Schema,然后按需获取工具。通常可以减少 85% 的 token 使用量。
这和 CLI 的懒加载思路一样。但当 Tool Search 获取工具时,它仍然要拉取完整的 JSON Schema。
| 使用的工具数 | MCP | Tool Search | CLI | 比 TS 节省 |
|---|---|---|---|---|
| 会话启动 | ~15,540 | ~500 | ~300 | 40% |
| 1 个工具 | ~15,570 | ~3,530 | ~910 | 74% |
| 10 个工具 | ~15,840 | ~3,800 | ~964 | 75% |
| 100 个工具 | ~18,540 | ~12,500 | ~1,504 | 88% |
Tool Search 更贵,而且只支持 Anthropic。CLI 更便宜,而且可以在任何模型上使用。
CLIHub
作者因为很难找到各种工具的 CLI,所以构建了 CLIHub——一个面向 Agent 使用的 CLI 目录。
转换器已经开源——一条命令就能从 MCP 生成 CLI。
要点总结
-
MCP 的隐形税:MCP 在会话开始时就加载所有工具的完整 Schema,这会消耗大量 tokens。对于有 84 个工具的典型配置,光是启动就要 15,000+ tokens。
-
懒加载的优势:CLI 采用懒加载策略,只在需要时才获取工具详情。虽然单次工具调用稍贵(需要先
--help),但整体节省 94%。 -
通用性:CLI 方案不依赖特定模型,而 Anthropic 的 Tool Search 只能用于 Claude。
-
实用建议:如果你的 Agent 需要连接大量工具,考虑用 CLI 替代 MCP,或者至少评估一下 token 成本的差异。
这个问题在实际生产环境中可能更加明显——工具越多、调用越少,MCP 的开销占比就越高。