MCP 每轮占多少 token,怎么瘦身?
Claude Code 默认只把 MCP 的工具名字和服务器说明带进上下文,完整的工具定义用到才加载,多装几个影响不大;Codex 是每多一个 MCP,每条消息就多带一份上下文。两边瘦身的办法一样:不用的关掉。
Codex
每个 MCP 都会给每条消息加上下文、多用额度;OpenAI 的建议就是少装,不用时关掉。
在 CLI 里输入 /mcp 看当前有哪些 MCP 在用,命令行里用 codex mcp list 看全部配置。暂时不用的不必删:在 ~/.codex/config.toml 对应的 [mcp_servers.<名字>] 下写 enabled = false,配置留着,下次改回来就行。一个 MCP 里只用得到一两个工具时,用 enabled_tools 只放行这几个,其余的不会交给模型。Codex 会不会等用到才加载工具定义,OpenAI 没有写。
官方原文
Limit the number of MCP servers you use. Every MCP server adds more context to your messages and uses more of your limit. Disable MCP servers when you don't need them.enabled (optional): Set false to disable a server without deleting it.enabled_tools (optional): Tool allow list.Claude
默认占得很少:只有工具名字和服务器说明进上下文;用 /context 看实际占用,在 /mcp 里关掉不用的。
Claude Code 默认开着 tool search:MCP 工具的完整定义先不加载,Claude 要用哪个才取哪个,所以官方说多加几个 MCP 对上下文影响很小。另一处开销是工具返回的内容:单次 MCP 输出超过 10,000 token 会提示警告,默认上限 25,000 token,超出的存成文件、对话里只留路径。在 /mcp 里关掉的 MCP 只对当前项目生效,配置还在。
官方原文
MCP tool definitions are deferred by default, so only tool names and server instructions enter context until Claude uses a specific tool. Run /context to see what's consuming space.Only tool names and server instructions load at session start, so adding more MCP servers has minimal impact on your context window.Output warning threshold: Claude Code displays a warning when any MCP tool output exceeds 10,000 tokensDefault limit: the default maximum is 25,000 tokensPrefer CLI tools when available: Tools like gh, aws, gcloud, and sentry-cli are still more context-efficient than MCP servers because they don't add any per-tool listing.On a Pro, Max, Team, or Enterprise plan, /usage also shows a breakdown of what counts against your plan limits: Attribution: recent usage attributed to skills, subagents, plugins, and individual MCP servers, each shown as a percentage of the total.If you've logged into Claude Code with a claude.ai account, MCP servers you've added in claude.ai, known as connectors, are automatically available in Claude CodeYou can also run /mcp to toggle any connector Claude Code fetches on or off for the current project only.走第三方中转时,工具定义会全量带上
上面说的默认情况有一个例外:Claude Code 走的是第三方中转或网关(ANTHROPIC_BASE_URL 指向非官方地址)时,tool search 会自动关闭。官方给的原因是多数中转不转发它依赖的那种内容块。
关闭之后,所有 MCP 的工具定义一开始就全部进上下文,这时候 MCP 装得多就真的费 token。用中转的先输入 /context 看 MCP 占了多少,再把这个项目用不上的关掉。
官方原文
Tool search is enabled by default: MCP tools are deferred and discovered on demand. Claude Code disables it when ANTHROPIC_BASE_URL points to a non-first-party host, since most proxies don't forward tool_reference blocks.常见误解
- MCP 装着不用,就不花 token
不对。Codex 里每个启用的 MCP 都会给每条消息加上下文,不管这一轮用没用到它。Claude Code 默认只带工具名字,占得少,但不是零;走第三方中转、或者给 MCP 配了 alwaysLoad 时,是全部工具定义都带上。不用就关掉。
- Claude Code 装的 MCP 越多越费 token
默认情况下不是。Claude Code 默认等用到才加载工具定义,官方原话是多加 MCP 对上下文的影响很小。真正费的是两种情况:tool search 被关掉(常见于走中转),以及 MCP 工具一次返回一大段内容。
- 费 token 的是 MCP 的工具列表
不全是。工具列表是固定开销,工具返回的内容往往才是大头:每次调用的结果都会留在对话里,之后每条消息都要再带一遍。Claude Code 单次 MCP 输出默认上限是 25,000 token,一次大查询抵得上很多个工具定义。
小提示
- Claude Code:输入 /context,看 MCP 工具实际占了多少上下文。
- Claude Code:输入 /mcp,把这个项目用不上的 MCP 关掉;要用的时候再打开。
- Claude Code:输入 /usage,看最近的用量里每个 MCP 各占百分之几,先关占比高又不常用的。
- 有现成命令行工具的(gh、aws、gcloud、sentry-cli)就让它直接跑命令,不用再装对应的 MCP。
- Claude Code:别给 MCP 配 alwaysLoad: true,除非那几个工具真的每一轮都要用;配了就是会话一开始全部加载。
- Claude Code:用 claude.ai 账号登录时,你在 claude.ai 里加过的连接器会自动出现在 Claude Code 里。这个项目用不上的也在 /mcp 里关掉;想全部关掉,在设置里写 "disableClaudeAiConnectors": true。
- Codex:在 ~/.codex/config.toml 里给暂时不用的 MCP 写 enabled = false;只用少数工具的写 enabled_tools。
- 让 MCP 返回得少一点:查数据时限定范围和条数,别一次拉回整张表、整页文档。
