7dt8e89mhldg1

用 Claude Code 连了 7、8 个 MCP 服务,还没开始干活,上下文就没了一半。这个问题困扰我好几个月了。

之前我的配置是这样的:Playwright 做浏览器自动化、GitHub 管理仓库、Exa 搜索、Context7 查文档,再加上 Notion 和一些数据库工具。每次启动 Claude Code,/context 一看,67000+ tokens 直接被工具定义吃掉了。

我们总共才 200K 上下文窗口,系统提示和对话历史还要占一部分。MCP 工具定义再来这么一刀,用 Opus 模型的时候,对话 10-15 分钟就得 compact 一次。说实话,挺崩溃的。

image-20260117092616619

之前的各种骚操作

为了解决这个问题,我试过不少方法。

code execution wrapper 包一层,把工具定义藏起来。有用,但工具发现会出问题,有时候 Claude 根本不知道有这个工具可以用。

写 skills 做 lazy loading,用到的时候再加载。能用,但增加了延迟,而且维护成本不低。

搞 universal MCP config,统一管理工具定义。治标不治本,该占的上下文还是占。

这些方案都有各自的问题,没有一个让我觉得”这就是正确答案”。

官方终于出手了

上周 Claude Code 更新到 2.1.7,带来了 Tool Search 功能。

原理很简单:不再启动时预加载所有工具定义,改成按需搜索加载。

具体是这么工作的:

阈值检测:如果你的 MCP 工具定义超过上下文的 10%,Tool Search 自动激活。

语义搜索:当你需要用某个工具时,Claude 通过关键词搜索找到对应的工具定义,只加载这一个。

按需加载:工具只在使用时才消耗上下文。切换任务,上下文也跟着切换,不会有无关工具的定义堆在那里。

效果立竿见影:

  • 之前:MCP 工具定义占用 20-50% 上下文
  • 现在:按需加载,不用的时候基本是 0%

Simon Willison 说得好:”context pollution is why I rarely used MCP, now there’s no reason not to hook up dozens or hundreds of MCPs.”(上下文污染是我很少用 MCP 的原因,现在没理由不连几十上百个 MCP 了。)

image-20260117093016304

怎么启用

这个功能还在灰度发布,不是所有人都默认开启了。如果你升级到最新版还是老样子,手动启用一下:

export ENABLE_TOOL_SEARCH=true
claude

或者写进你的 shell 配置文件(.zshrc.bashrc):

echo 'export ENABLE_TOOL_SEARCH=true' >> ~/.zshrc
source ~/.zshrc

启动 Claude Code 后,输入 /context 检查一下。如果 MCP tools 那行显示的是 “loaded on-demand” 而不是具体的 token 数量,就说明生效了。

image-20260117092711735

注意:

假如你是中转的API, 使用/context可能看不到正常的token统计! 只需要开启这个配置就行,然后你使用mcp时,就会像下图一样显示搜索mcp使用!

image-20260117093126074

image-20260117093016304

现在可以放开用了

以前我开 MCP 服务都要精打细算,超过 4 个就开始焦虑上下文不够用。现在这个顾虑没了。

Notion、Linear、Vercel、各种数据库工具,想连就连。反正不用的时候不占上下文,用的时候才加载那一个工具的定义。

这才是 MCP 该有的样子。工具是为我服务的,不是来抢我上下文的。

如果你也被 MCP 上下文问题困扰过,现在是时候把那些一直想用但没敢开的 MCP 服务都加上了。