50KB Python CLI 将 MCP schema 留在磁盘而非推入 context,255 工具时 token 从 90804 降至 117,减少 99%。
MCP Token 膨胀:潜伏的上下文杀手

如果你给 Claude Code 添加了超过几个 MCP server,应该已经感受到了:上下文窗口在真正开始工作之前就被 JSON schema 填满了。MCP 社区自己都说"MCP 超过 5 个 server 就没法用了",Latent Space 的分析也证实了"20-30 个工具左右会出现扩展悬崖"。
原因在于:你连接的每个 MCP server 都会以冗长的 JSON 形式将其工具定义推入 agent 的上下文。仅仅是 puppeteer 或 playwright 这样的浏览器工具就可以添加 50,000-100,000+ tokens 的 {"type":"object","properties":...} 噪音。那些是你在付费但从未真正用到的上下文。
mcptoon(GitHub: activeing123/mcptoon)是一个 50KB 的 Python CLI,它翻转了模型:不再是 Claude Code 作为客户端连接 MCP server,而是让你的 agent 直接运行 mcptoon 命令。Schema 保存在磁盘上的 ~/.mcptoon/config.json 中——它们永远不会进入上下文。只有你请求的紧凑输出才会进入。
255 个工具的情况下,JSON 格式消耗 90,804 tokens。mcptoon 的 compact 模式:117 tokens。减少幅度达 99.87%——把你的上下文释放给真正的工作。
一个工具的 JSON(287 tokens):
[{"name":"search_web","description":"Search the web","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"num_results":{"type":"number","default":5}},"required":["query"]}}]
mcptoon 的紧凑输出:
search_web fetch_url
Simon Willison 说得很到位:"JSON 是发送给 LLM 的结构化数据中 token 效率最低的格式。"TOON 去掉了除核心内容之外的一切。

pip install mcptoon
mcptoon init
mcptoon add fetch --stdio npx -y @modelcontextprotocol/server-fetch
mcptoon manifest --compact # → all tool names, 117 tokens
你的 agent 甚至可以自己安装工具:
mcptoon add github --stdio npx -y @modelcontextprotocol/server-github
支持 Claude Code、Cursor、Codex、OpenCode、CatPaw——任何能运行 shell 命令的 agent。零依赖,Apache 2.0 许可。
上下文死亡问题解决:可以保留 10+ 个 server 而不占用窗口。
配置地狱消失:不再需要手动编辑 claude_desktop_config.json——一个配置文件,所有工具。
Agent 自助服务:你的 agent 可以通过 mcptoon add 动态添加工具。
一次配置多处生效:同一套配置在所有 agent 间通用——无需每个 agent 重复配置。
停止为 JSON 垃圾付费:MCP 的每个 JSON 结果大约浪费 80 tokens 来传输 6 tokens 的数据。200 次工具调用下来,就是 15,000 tokens 的语法浪费。
安装:pip install mcptoon
添加你最常用的 server(fetch、github 等)
让 Claude Code 运行 mcptoon manifest --compact,立即查看 token 节省效果。
你的上下文窗口很珍贵。别再让 MCP schema 把它吃掉了。
Originally published on gentic.news