Claude Code 学习站
Mingyu's Library

学习站 / 实战 Tip / D · 成本与上下文

MCP 接多了更慢更贵

每接一个 MCP server 都在动你的上下文预算——好在默认的 tool search 已把大头压下去,剩下的要自己查、自己关。

MCP 的成本不在「接了」,而在「工具定义进没进上下文前缀」。搞清默认机制和例外场景,就知道该关哪些、留哪些。

一句话结论

结论 官方tool search 默认开启:MCP 工具定义被延迟(deferred),会话开始只加载工具名和 server instructions,接多影响有限。但 alwaysLoad、非第一方网关、部分云平台等场景工具会全量进前缀——既占上下文,server 连断还会打穿 prompt cache。用 /context 查占用,/mcp 关掉不用的。

做法步骤

  1. 先搞清默认机制:tool search。官方tool search 默认开启,MCP 工具不再全量加载:会话开始只有工具名和 server instructions 进上下文,任务需要时 Claude 通过搜索工具按需加载具体 schema,只有真正用到的工具进 context。官方明确「再加 MCP server 对 context window 的影响也很小」,且没有固定的每 server 工具数上限,实际约束就是你的上下文预算。所以「接多了必然爆上下文」在默认配置下已不成立。
  2. 认清例外:这些场景工具会全量进前缀。官方
    • 设置了 ENABLE_TOOL_SEARCH=false,或 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS;
    • ENABLE_TOOL_SEARCH=auto 阈值模式下,工具总量在阈值(默认 context 的 10%)以内时直接上前缀;
    • server 或单个工具标了 alwaysLoad: true;
    • ANTHROPIC_BASE_URL 指向非第一方网关(多数代理不转发 tool_reference,Claude Code 自动回退为全量加载);
    • Azure 托管的 Microsoft Foundry 部署(服务端拒绝 tool search)、Google Cloud Agent Platform 上早于 Claude 4.5 代的模型。
    全量进前缀时问题加倍:server 连接、断开、工具列表变化都会让 prompt cache 失效,下一轮全量重算——而且 stdio 进程退出、HTTP 会话过期这类「自动连断」不需要你做任何操作。详见 哪些操作会让 prompt cache 失效
  3. 查占用三件套。官方/context 看当前上下文按类别的占用和优化建议;/usage 的归因 breakdown 能看到各 MCP server 占最近用量的百分比(Pro/Max/Team/Enterprise);/mcp 面板显示每个 server 的连接状态和工具数。先看数据再动手,别凭感觉删。
  4. 按需启停,而不是全删。官方/mcp 面板把不用的 server toggle off:配置保留,选择按项目记在 ~/.claude.jsondisabledMcpServers 里,要用再打开。彻底不要的跑 claude mcp remove <name>。装新 server 时用 -s 控制 scope(local / project / user),只在真的每个项目都用时才挂 user 级(见 D9 · MCP)。
  5. 能用 CLI 就别用 MCP。官方gh、aws、gcloud、sentry-cli 这类 CLI 工具不产生任何 per-tool 上下文开销,官方明确说它们比 MCP server 更省 context——Claude 直接跑命令就行。
  6. 管住工具输出这另一半成本。官方MCP 工具输出默认限 25,000 tokens(超 10,000 就警告),大输出照样吃你的上下文;高频大结果的调用,考虑委托 subagent 执行、只回摘要。需要调 tool search 行为时用 ENABLE_TOOL_SEARCH:
    取值行为
    (不设)默认:全部 MCP 工具延迟、按需加载(网关/特定平台自动回退全量)
    true强制延迟(服务端拒绝的平台除外)
    auto / auto:N阈值模式:占 context 不超过 10%(或 N%)就全量上前缀,超了才延迟
    false全部工具全量加载,不延迟

可直接抄的 prompt

帮我审计这个项目的 MCP 配置,目标是省上下文、省钱:
1. 读取项目 .mcp.json、~/.claude.json 和各级 settings 里的 MCP server
   配置,列出全部 server 的名称、scope 和传输类型;
2. 标出配置了 alwaysLoad: true 的 server 或工具,逐个评估是否
   真的每轮都需要;
3. 检查环境和 settings 里是否设置了 ENABLE_TOOL_SEARCH 或
   ANTHROPIC_BASE_URL(网关会导致工具全量加载);
4. 问我最近两周实际用过哪些 server,把没用过的列成
   「/mcp 里关掉」或「claude mcp remove」两档建议;
5. 提醒我自己跑 /context 和 /mcp 核对占用(用户命令,你代跑不了),
   说明重点看什么。

来源与最后核实日期

  • 官方code.claude.com/docs/en/mcp.md(tool search 机制与配置表、alwaysLoad、/mcp 面板与 disabledMcpServers、输出限制),抓取于 2026-08-05。
  • 官方code.claude.com/docs/en/costs.md(Reduce MCP server overhead:/context 查占用、/mcp 关闲置、CLI 优先),抓取于 2026-08-05。
  • 官方code.claude.com/docs/en/prompt-caching.md(MCP server 连断对 cache 的影响、deferred 工具的例外),抓取于 2026-08-05。
  • 本站观点「先看数据再删」「只在每个项目都用时才挂 user 级」为本站基于官方机制的建议。
  • 最后核实:2026-08-05 · volatility:high(tool search 默认值与平台例外随版本变化,官方文档水位 v2.1.222,需定期复核)。