English · 中文

MCP 工具太多?这就是你上下文爆仓的原因

你装了一个 MCP 服务器,又装一个,然后装了十个。现在助手五分钟前说的话都记不住了。 问题不在模型,而在工具发现:每个工具的完整 JSON Schema,在你敲第一个字之前就已经塞给了模型。

71,929 → 581 token

同一批 255 个 MCP 工具。左边是完整 Schema,右边是紧凑的名字索引。用 tiktoken cl100k_base 实测。发现成本砍掉 99.2%,而每个工具都还在。

为什么「工具太多」这么费 token

MCP 按设计是无状态的。客户端无法预知你会用哪个工具,于是每一次请求都把所有已连接工具的 完整入参 Schema 一起发给模型。一个写得清楚点的工具,光 JSON 就 300–600 token。几十个服务器、上百个 工具乘起来,光「工具清单」这一项,就能在对话还没开始前吃掉几万 token。

这笔钱每一轮都要付。它挤占你真正的上下文窗口——代码、文档、前面的对话——而且你每加一个 服务器,它都悄悄变大。

怎么判断你是不是这个问题

用免费的 MCP Token 计算器 30 秒算出你自己的数字——它完全在你 浏览器里跑,不上传任何东西。

三条砍法,各自的真实代价

做法效果代价
删掉「用不上」的工具很小,且短暂丢了能力,下周又得加回来
按项目开关服务器手动、易错得记着重新开,容易打断流程
按名字建索引,用时再取 Schema砍 ~90–99%多一次查询,由工具自己处理

正解:用名字索引代替完整 Schema

mcptoon 让你所有工具都保持安装,但只把一份紧凑的名字索引发给模型。当模型真的要用某个 工具时,再去取那一个工具的真实 Schema 并调用。工具一个不少,模型不再为没用到的工具付费。

pip install mcptoon
mcptoon manifest          # 模型看到的紧凑名字索引
mcptoon inspect <server> <tool>   # 只在需要时取完整 Schema
mcptoon call <server> <tool> '{...}'
mcptoon usage             # 实际省了多少

零依赖、纯标准库 Python,覆盖 103+ 款桌面与终端 Agent,还能用同一套索引管理你的 Agent技能。 数据不出本机。

GitHub 上看 mcptoon 算算你的 token 成本

常见问题

MCP 工具数量有硬上限吗?

没有固定数字——上限是你的上下文窗口。每个工具的 Schema 每轮都计费,所以实际天花板是「多少份 Schema 塞得下、又不挤掉你真正要干的活」。

减少 MCP token 一定要删工具吗?

不用。这正是索引的意义:工具全留着,只为真正调用的那一个付 Schema 的钱。删工具是那种「下周还得 加回来」的临时办法。

Claude Code、Cursor、Codex、opencode 都能用吗?

能。mcptoon 面向 103+ 款桌面与终端 Agent,零配置安装。当前清单见 README。