跳到主要内容
返回时间线
OpenRouter Blog来源发表:

同一个GitHub任务三种接法都答对,MCP服务器却花59,417个输入token,CLI只要1,421个

核心概要

OpenRouter在同一个GitHub任务上比较了MCP服务器、gh命令行工具和gh技能三种给智能体接工具的方式,并统计整轮对话的输入token。在Claude Sonnet 5.5上,三者都答对,但默认加载46个工具的GitHub MCP服务器用了59,417个输入token,CLI只用1,421个,技能用3,315个。把MCP限定到任务所需的2个工具可降到23,228个,再把工具结果截到4,000字符可降到5,357个。

Source-provided article image: MCP vs CLI vs Skills: What Each Costs in Context
OpenRouter

深度剖析

给智能体接同一项GitHub能力,三种方式的上下文开销相差一个数量级以上,而正确率没有差别。 MCP服务器在每次请求里都带上每个工具的名称、描述和JSON schema,CLI只给模型一个shell工具和一句“gh已安装并已认证”,技能则先给一行索引、等任务需要时再读入完整的SKILL.md。 在Claude Sonnet 5.5上跑同一个GitHub任务,CLI用1,421个输入token、技能用3,315个、默认46个工具的MCP服务器用59,417个,表中每一行都答对;按Sonnet 5.5计价,默认MCP每千次任务127美元,CLI为7.50美元。

MCP的开销不只来自工具定义,工具返回的原始结果同样占大头,而且会随之后每次请求重复发送。 get_latest_release返回GitHub完整的release对象,共42,182个字符,其中87%在描述22个下载文件,而任务只需要tag和日期,gh release view用--json只取这两个字段。 这个release对象在Sonnet 5.5上约合20,400个token,比全部46个工具定义还多;把服务器限定到2个工具后首个请求从19,487个token降到1,406个,但整轮任务仍需23,228个,把结果截到4,000字符后降到5,357个且每次运行都答对。

Tool Search把工具定义改为按需检索,能压掉大部分前置开销,但整轮成本是否下降取决于模型。 把46个工具标记为defer_loading并加入openrouter:tool_search后,模型先用正则搜索工具名和描述,再在下一轮调用匹配到的工具,搜索前的前置开销在Claude模型上为578个token、GPT-6 Luna为144个、Gemini 3.8 Flash为130个。 整轮任务中,Sonnet 5.5从59,417降到30,334个token,GPT-6 Luna从116,282降到25,544个,Gemini 3.8 Flash从35,409升到37,568个,Claude Haiku 5.5从99,319升到154,623个,因为它在三次运行中都向list_issues请求了工具不提供的字段并反复重试。

启示与展望

结论来自一个GitHub任务、一个GitHub MCP服务器,以及Claude Haiku 5.5、Claude Sonnet 5.5、GPT-6 Luna和Gemini 3.8 Flash四个模型,每种组合跑三次取中位数;作者建议在自己的服务器上先跑mcp_cost.py再决定。

Tool Search仍处于beta,且与强制tool_choice冲突,Chat Completions接口也不接受它;4,000字符截断只在字段恰好靠前时有效,与Tool Search合用后Gemini 3.8 Flash和Haiku 5.5各三次运行只有一次答对;Haiku 5.5的Tool Search开销在五次运行中从2,134到13,225个token不等。