MCP 服务是 Claude Code 最热门的新型“管道”。接入一个 GitHub 服务,你的 Agent 就能提交 Pull Request;添加一个文件系统服务,它就能读取你的仓库结构。演示效果看起来很神奇,但没人演示的是背后的账单。

成本并不在于工具发起的 API 调用,而在于工具本身。

每当你注册一个 MCP 服务时,你不仅仅是在增加一项能力。你是在向上下文窗口添加一段文本,而这段文本在每一轮对话中都会被计费。无论 Agent 是否使用了该工具,你都要为它的存在付费。一旦服务器连接,计费就开始了。

为从未使用的工具付租金

这里有一个被人们忽略的机制:每个 MCP 服务中的工具定义都包含名称、描述以及一个告知模型预期参数的 JSON schema。整个负载在每一轮对话开始时都会被注入到系统上下文中。模型需要看到完整的目录才能决定是否调用工具,但你却在为这种“可见性”买单。

每个工具带来的开销并不小。在实践中,单个工具定义会消耗 80 到 150 个 token。这意味着一个提供 10 个工具的普通服务器,在你输入第一个句子之前,就会悄悄消耗 800 到 1,500 个 token。你支付的不是计算费用,而是拥有“选择权”的特权费。

我针对一个标准的 20 轮对话进行了数据测算,看看这种开销是如何累积的。

在没有加载任何 MCP 服务的情况下,开销为零。上下文窗口中仅包含你的对话内容。

加载一个带有三个精简工具的自定义最小化服务器,每轮的税收是 180 个 token。在 20 轮对话中,这将消耗 3,600 个 token。虽然不算灾难,但也是真金白银。

流行的文件系统服务提供了 7 个工具,这会将每轮开销推高至 640 个 token。在同样的对话轮次中,你仅仅为了维持连接就烧掉了 12,800 个 token。此时你甚至还没读过一个文件,还没列出过一个目录,你只是把服务器留在菜单上而已。

接着是 GitHub 服务。注册了 26 个工具后,它会在每一轮对话中塞进 3,100 个 token。在 20 轮往返对话后,总开销达到了 62,000 个 token。按照 Sonnet 4 的定价,这相当于 0.19 美元的纯上下文税。在 Agent 甚至还没考虑创建 Issue 之前,你就已经为这些开销支付了 19 美分。

这个数字单独看似乎很小,但事实并非如此。

彻夜运行的 Agent 问题

真正让人感到肉疼的是长时间运行的自主循环。如果你将 Claude Code 用作可以自主迭代的 Agent,这种每轮的税收会剧烈倍增。一个加载了 GitHub 服务、运行 2,000 轮的 Agent,其开销不是 62,000 个 token,而是 620 万个。

这意味着你花了 18.60 美元在毫无生产力的事情上。Agent 可能整晚都在睡觉,根本没碰过任何 GitHub 工具;或者它可能完全在本地文件内工作。但由于这些工具已在会话中注册,你在每一轮的 2,000 次对话中,依然要为全部 26 个 GitHub 工具定义付费。

需要深刻理解的关键点是:你为“已注册”的工具付费,而不是为“已调用”的工具付费。模型不会检查它实际使用了哪些工具,然后给你打折。只要服务器连接着,它的完整清单就会在每个周期重新引入上下文。这是一种针对“潜力”而非“行动”的每轮税收。

对于运行迭代式编码 Agent、测试套件或批量审查任务的开发者来说,这是一个隐形的预算杀手。20 轮的人类对话很轻量,但 200 轮或 2,000 轮的 Agent 循环会让数学计算的结果变得极其昂贵。

如何控制成本

MCP 确实很有用,你应该使用它。但要把它当作一种“按需开启”的工具,而不是一个永久固定在每个会话上的组件。

将配置限定在项目和任务范围内

不要默认将所有服务器加载到全局 Claude Code 配置中。构建与实际工作匹配的项目级 MCP 配置。如果你正在重构一个本地模块,你可能只需要文件系统服务,其他都不需要。如果你正在处理 Issue,请针对该特定任务加载 GitHub 服务,并在切换回本地开发时将其断开。

这就像手机上的后台应用。运行一两个没问题,但如果有二十个在后台运行,会无谓地消耗电池。

优先选择工具较少的服务器

并非所有的 MCP 服务器都遵循同样的规范设计。有些服务器只提供两三个专注功能的精简接口。而另一些则提供包含 25 或 30 个工具的庞大目录,其中许多你可能永远不会调用。一个拥有 3 个工具的服务器每轮可能耗费 180 个 token。而一个拥有 26 个工具的服务器可能耗费 3,100 个。对于可能对你无关紧要的功能差异,其开销却增加了 17 倍。

在安装服务器之前,请查看其工具清单(tool manifest)。如果它注册了十几项重叠的操作,而你只需要其中一项,请考虑是否可以对其进行精简配置、分叉(fork)或者编写一个更轻量级的包装器(wrapper)。你每剔除一个工具定义,就能在未来的每一轮对话中直接且永久地节省 token。

精简工具描述

每个工具占用 80 到 150 个 token 并不是什么自然法则。这取决于描述和模式(schema)的冗长程度。一个臃肿的 400 token 描述所消耗的上下文是 80 token 描述的五倍,而且这种五倍的惩罚会发生在每一轮对话中。

审计你所依赖的服务器。如果某个工具的描述读起来像营销文案,请重写它。删掉形容词。删掉那些不能说明 schema 的示例。精简 JSON。模型需要理解工具的作用,但不需要一段冗长的开场白。像对待代码一样对待工具定义:越短、越清晰越好。

核心启示

MCP 扩展了 Claude Code 的能力范围,但它并不会免费扩展你的上下文窗口。这种开销是确定性的、循环发生的,并且与工具是否被实际调用完全无关。

只加载当前任务所需的服务器。完成后及时断开连接。像审计其他任何依赖项一样,审计工具数量和描述长度。规则很简单:如果该工具在当前会话中没有提供价值,它就不应该增加你的账单 token 消耗。

数据来源与方法论:我在 Claude Code 中添加了 MCP 服务器 —— 以下是它们的 token 成本

加入 GyaanSetu AI 学习社区,获取更多工程技术解析:t.me/GyaanSetuAi