MCP成本:Model Context Protocol服务器在Token中增加了什么
MCP本身是免费的,但每个连接的服务器都会将其工具模式注入到每个请求中。本文衡量了这种开销,展示了十个服务器在四个模型上对12步运行的影响,并给出了四种减少开销的方法。
文章文本包含审核日期。下方的费率表在每次部署时从实时目录重新构建。
最快获胜
单个MCP服务器暴露约25个工具,会在模型读取任务之前向每个请求中注入估计3,000到8,000个token的JSON模式。连接十个服务器,你会在每一步重新发送约50,000个token。在Claude Sonnet 5上,这将一个$0.39的12步运行变成约$1.53。在连接任何服务器之前,使用供应商的token计数器统计工具列表。
关于MCP成本的简短回答
MCP本身不花钱。模型上下文协议(Model Context Protocol)、其SDK及大多数社区服务器都是免费的。你需要支付的是token费用:每个连接服务器的工具定义都会被注入到每次请求中,一个大约有25个工具的服务器会额外增加约3000到8000个token的模式描述。十台服务器大约就是每步50,000个token。在参考的12步运行中,这使Claude Sonnet 5从$0.39升到约$1.53,GPT-5.4从$0.50升到约$1.93,Gemini 3.8 Flash从$0.15升到约$0.58,DeepSeek V4.1 Flash从约$0.06升到约$0.23。
以上数据未考虑提示缓存。启用缓存后,Sonnet 5的运行成本回落到约$0.36。本文其余部分将说明这些数字的来源以及影响它们的因素。
Token的来源
MCP客户端在启动时调用每个服务器的tools/list,并将结果转换为模型供应商的工具格式。每个工具变成一个名称、一个描述及其参数的JSON模式。该数据块随着每个模型调用发送,无论模型是否使用该工具,因为模型无法调用它看不到的内容。
两点使得这种开销昂贵而不仅仅是杂乱。首先,模式很冗长:一个记录每一列的数据库服务器,或一个具有二十个导航动作的浏览器服务器,本身就可能达到几千个token。其次,代理循环在每一步重新发送整个上下文,因此模式成本每步支付一次,而非每次运行支付一次。这种重新发送的机制在[运行AI代理的成本](/guides/how-much-does-an-ai-agent-cost-to-run)中有详细介绍。
在连接服务器之前先测量
不要估算。请供应商的token计数器统计带有和不带工具列表的请求;差值就是该服务器的模式开销。这个TypeScript代码片段通过MCP获取服务器的工具,转换为Anthropic的工具格式,并计算在Claude Sonnet 5上每步的开销费用:
import Anthropic from "@anthropic-ai/sdk";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
const anthropic = new Anthropic();
export async function toolListCost(mcp: Client, system: string) {
const { tools } = await mcp.listTools();
const anthropicTools: Anthropic.Tool[] = tools.map((t) => ({
name: t.name,
description: t.description ?? "",
input_schema: t.inputSchema as Anthropic.Tool["input_schema"],
}));
const probe = [{ role: "user" as const, content: "ping" }];
const withTools = await anthropic.messages.countTokens({
model: "claude-sonnet-5", system, tools: anthropicTools, messages: probe,
});
const noTools = await anthropic.messages.countTokens({
model: "claude-sonnet-5", system, messages: probe,
});
const schemaTokens = withTools.input_tokens - noTools.input_tokens;
// Sonnet 5: $2 per 1M uncached, roughly $0.20 per 1M as a cache read
const perStepUSD = (schemaTokens * 2) / 1_000_000;
return { schemaTokens, perStepUSD, perStepCachedUSD: perStepUSD / 10 };
}每个服务器运行一次,并将数字保存在代理的配置中。一个每步成本6,000个token且仅2%运行中被调用的服务器,是强烈需要精简的对象。
工具结果是第二项开销
模式是固定成本。工具结果是可变成本,而且通常更大。文件读取、网页或 SQL 结果可能占用 5,000 到 20,000 个令牌。一旦结果进入对话,后续每一步都会重新发送它。
以参考追踪记录(1,500 令牌的结果)为例,将十二个结果中的四个替换为第 2、4、6、8 步中的 15,000 令牌 SQL 转储。每个转储比基准增加 13,500 个令牌,并在后续每一步重新发送:10 + 8 + 6 + 4 = 28 次重新发送,加上最初的四个发送,共 32 次。即 13,500 × 32 = 432,000 个额外的输入令牌,在 Sonnet 5 上以 $2 每百万计约为 $0.86,而四个查询本可以只返回行数和前二十行。
它如何在整个运行过程中放大
参考运行包括一个4,000 token的前缀(1,500系统指令,2,500手写工具),一个500 token的任务,以及十二步,每步增加一个300 token的工具调用和一个1,500 token的结果。整个运行过程中未缓存的输入是172,800 token,输出是4,800 token。
将2,500 token的手写工具替换为十台MCP服务器,每台约5,000 token。前缀变为52,000 token,仅第12步就发送52,000 + 11 × 1,800 = 71,800 token。整个运行过程的输入为12 × 52,000 + 118,800 = 742,800 token,是基准工作量的4.3倍,而完成的工作完全相同。
| 模型($/百万输入/输出) | 手写工具,12步 | 10台MCP服务器,12步 | 10台服务器,已缓存(读取约10%) |
|---|---|---|---|
| Claude Sonnet 5 ($2 / $10) | 172,800 × $2 + 4,800 × $10 = $0.39 | 742,800 × $2 + $0.048 = $1.53 | 71,800 × $2.50 + 671,000 × $0.20 + $0.048 = $0.36 |
| GPT-5.4 ($2.50 / $15) | 172,800 × $2.50 + 4,800 × $15 = $0.50 | 742,800 × $2.50 + $0.072 = $1.93 | 71,800 × $2.50 + 671,000 × $0.25 + $0.072 = $0.42 |
| Gemini 3.8 Flash ($0.75 / $3.75) | $0.15 | 742,800 × $0.75 + $0.018 = $0.58 | 71,800 × $0.75 + 671,000 × $0.19 + $0.018 = $0.20 外加缓存存储费 |
| DeepSeek V4.1 Flash ($0.30 / $1.20) | 172,800 × $0.30 + 4,800 × $1.20 = $0.058 | 742,800 × $0.30 + $0.006 = $0.23 | 71,800 × $0.30 + 671,000 × $0.006 + $0.006 = $0.03 |
缓存列假设71,800 token写入一次(第1步的前缀加上每步新增的1,800 token),以及671,000 token从缓存读取。写入溢价是Anthropic的大约125%;OpenAI和DeepSeek没有。DeepSeek V4.1 Flash,API名称为deepseek-flash,取代了已退役的V4 Flash。DeepSeek行使用峰值费率;非高峰时段费用减半。DeepSeek定价于2026-10-27在api-docs.deepseek.com核实。该列所有内容遵循[AI代理提示缓存](/guides/prompt-caching-for-ai-agents)中的规则。
降低 MCP 开销的四种方法
- 每个智能体使用更少的服务器。为每个智能体分配其任务所需的两到三个服务器。三个服务器代替十个,将前缀从 52,000 令牌降至 17,000 令牌,未缓存的 Sonnet 5 运行从 $1.53 降至约 $0.69(322,800 × $2 + $0.048)。
- 工具过滤和延迟加载。OpenAI Agents SDK 和 Claude Agent SDK 都接受每个 MCP 服务器的工具名称允许列表,因此一个 25 个工具的服务器可以只呈现 4 个。Anthropic 的 API 还提供了一个工具搜索工具,其余工具使用
defer_loading,因此仅当模型搜索它们时才会将模式加载到上下文中。无论哪种方式,模型永远不会为它不会调用的模式付费。 - 在源头截断结果。将每个工具结果限制在几千个令牌内,并返回提示,例如总行数、字节偏移量或“再次调用 page=2”。四个被截断的 SQL 结果节省了上面计算的 432,000 个令牌。
- 缓存前缀。工具定义首先呈现且从不更改,因此它们是请求中最容易缓存的令牌。在 Anthropic 上最后一个工具设置一个断点,或者在 OpenAI 上简单地保持稳定的工具顺序,即可将模式成本转换为缓存读取,约为列表价格的 10%。
四种方法都做。它们的效果是相乘而非相加:三个经过过滤的服务器、截断的结果和预热缓存,使得 MCP 开销低于一分钱。
能做这件事的最便宜模型,以及何时为旗舰模型买单
对于 MCP 工具定义明确且任务清晰的代理,DeepSeek V4.1 Flash($0.30 / $1.20)运行十服务器追踪约需 $0.23,Gemini 3.8 Flash 约需 $0.58。根据我们的经验,当模式明确时,两者都能正确进行结构化工具调用。Claude Haiku 5.5 于 10 月发布,价格为 $0.10 / $0.50,价格更便宜:742,800 × $0.10 + 4,800 × $0.50 ≈ $0.077,但我们尚未在此追踪上测试过。注意其价格阶梯:这里最大的调用是 71,800 令牌,但再增加六个服务器(约 30,000 令牌),第 12 步将达到 52,000 + 30,000 + 19,800 = 101,800 令牌,此时 Haiku 5.5 对整个请求收费 $0.50 / $2.50。请比较 [AI 代理最便宜的 LLM](/guides/cheapest-llm-for-ai-agents) 中的更广泛范围以及 [模型目录](/models)。
当代理必须在许多相似工具之间进行选择(十个服务器通常意味着多个重叠的“搜索”和“读取”工具)或需要从工具错误中恢复而无需人工干预时,请为 Claude Sonnet 5 或 GPT-5.4 付费。一个选择错误服务器并循环的廉价模型会在每个浪费的步骤上重新发送 52,000 令牌的前缀,此时旗舰模型每个完成的任务更便宜。Claude Opus 5 价格为 $5 / $25,很少值得用于工具管道;将其保留用于规划步骤,如 [多代理系统成本](/guides/multi-agent-system-cost) 中所述。
如何限制支出
大型工具列表使失控循环更快地变得昂贵,因此防护措施更加重要,而非更少:
- 每次调用都设置
max_tokens,大小适合工具调用,而不是文章 - 每次运行设置步骤限制;一个在 20 步内未完成的十服务器智能体通常是困惑的,而非彻底的
- 模型可以显式触发的停止条件
- 每次运行根据每个响应的
usage计算美元上限,包括缓存读取和写入令牌,超过时中止循环
[令牌预算防护措施](/guides/ai-agent-token-budget-guardrails) 文章提供了运行代码。关于工具定义如何计费的每个供应商的具体信息,请参阅 [Claude 智能体 API 成本](/guides/claude-agent-api-cost),并在测量后使用[计算器](/calculator) 为您自己的服务器列表定价。
关键要点
- →MCP 没有许可费;成本是工具模式加上工具结果,两者都在每一步作为输入令牌计费
- →每个服务器约 25 个工具,估计 3K 到 8K 令牌;十个服务器大约 50K 令牌的前缀
- →十个服务器将 12 步参考运行从 Claude Sonnet 5 的 $0.39 增加到 $1.53,从 GPT-5.4 的 $0.50 增加到 $1.93
- →一个 15K 令牌的 SQL 结果在第 2 步被重新发送十次;其中四个为一次运行增加大约 432K 输入令牌
- →提示缓存将十个服务器的 Sonnet 5 运行成本降回到约 $0.36;更少的服务器和结果截断在此基础上叠加
- →按智能体过滤工具,并在源头截断结果;模型永远不应该看到它不会调用的模式
编辑背景
这适合谁?
将MCP服务器接入Claude、OpenAI或Gemini智能体的团队已经注意到输入token量的增长快于实际工作量的增长。
何时不使用此
桌面聊天用户向订阅产品添加一两个MCP服务器;那里的开销由供应商支付,而非用户。
定价见解
十个MCP服务器每步增加约50K token;在12步运行中,相当于额外570K输入token,在Claude Sonnet 5上缓存前约为$1.14。
考虑替代方案
手工编写的工具集,包含智能体实际使用的六个工具;使用延迟加载的Anthropic工具搜索;或在廉价模型上设置一个路由步骤,用于选择要附加哪些服务器。
最终结论
连接覆盖任务所需的最少服务器,过滤其工具列表,截断结果,并缓存前缀。做到这四点,MCP开销就变成了四舍五入的误差。
常见问题
MCP需要花钱吗?
协议和参考SDK是开源免费的,大多数MCP服务器也是免费运行的。需要花钱的是token:每次模型调用时,每个已连接服务器的工具定义都会作为输入发送,每次工具结果也会返回到上下文中。你按照正常的输入费率向模型供应商支付这些token的费用。
一个MCP服务器会为一个请求增加多少token?
这完全取决于服务器本身。一个暴露约25个工具并附带描述性schema的服务器,估计占用3,000到8,000个token;一个带有丰富列描述的数据库服务器可能更多。请使用供应商的token计数器来测量,而不是猜测,因为该数字在运行的每一步都会重新发送。
为什么连接更多MCP服务器会让我的智能体变慢且更贵?
因为工具列表是提示词的一部分。十个服务器大约意味着模型在每一步查看你的任务之前,必须先读取约50,000个token。这比典型12步运行中任务及其所有工具结果的总输入还要多,同时也会增加首token生成时间。
提示缓存能解决MCP开销问题吗?
大部分可以。工具定义位于提示词开头,且在步骤之间不会变化,因此是理想的缓存材料。在Anthropic上,在最后一个工具上设置cache_control断点;在OpenAI上,前缀会自动缓存。缓存读取成本大约为列表价格的10%,因此十个服务器的Sonnet 5运行成本从约$1.53降至约$0.36。
对于拥有多个MCP工具的智能体,最便宜的模型是什么?
在价格方面,Claude Haiku 5.5 每百万输入 $0.10,运行十服务器、12 步追踪约需 $0.077,只要没有调用超过 100,000 令牌(超过则成本增加五倍);我们尚未在此处测试过。在我们测试过的模型中,DeepSeek V4.1 Flash 每百万输入 $0.30(高峰)约需 $0.23,Gemini 3.8 Flash 每百万 $0.75 约需 $0.58。两者都能可靠地处理定义明确的工具调用。当代理必须在许多相似工具之间选择或从错误中恢复时,请转向 Claude Sonnet 5 或 GPT-5.4。
我应该截断MCP工具结果吗?
是的,在服务器端或客户端,在结果进入上下文之前进行截断。一次文件读取或SQL结果可能包含5,000到20,000个token,并且后续每一步都会重新发送。将结果上限设为几千个token,并返回诸如行数或偏移量之类的提示,这样模型仅在需要时请求更多数据。
Related
免费课程 · 无需注册
还在犹豫?先学习基础知识,再回来查看价格。