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 回傳得少一點:查資料時限定範圍和筆數,別一次拉回整張資料表、整頁文件。
