Claude Code 装了 10 个 MCP Server 直接卡死?一个隐藏功能帮你省 95% 上下文

上周把 Claude Code 升到 2.1.76,顺手装了一堆 MCP Server------Playwright、GitHub、Notion、Slack、数据库、文件系统... 加起来大概 10 个。结果发现一个让人崩溃的问题:还没开始干活,上下文就被吃掉了一大半。

打开 session 一看,光是 MCP 工具的定义就占了 77K tokens。我 200K 的上下文窗口,工具描述就干掉了快 40%。稍微聊几轮就开始压缩历史消息,之前说的需求全忘了。

后来翻 changelog 发现 2.1.76 悄悄加了一个叫 MCP Tool Search 的功能,实测下来上下文占用从 77K 直接降到 8.7K。今天把整个排查和配置过程写出来。

先说结论

指标 装 Tool Search 前 装 Tool Search 后
MCP 工具上下文占用 ~77K tokens ~8.7K tokens
上下文节省比例 - 约 89%
工具加载方式 全量加载 按需懒加载
是否需要手动配置 - 不需要,自动触发
工具调用体验 无变化 无变化

问题到底出在哪

先说清楚为什么 MCP Server 装多了会卡。

Claude Code 启动 session 时,会把所有已注册 MCP Server 的全部工具定义塞进系统提示词。每个工具都有名字、描述、参数 schema------一个稍微复杂点的 Server(比如 Playwright,自带 20 多个工具)就能占掉上万 tokens。

10 个 Server 加起来少说 50+ 个工具,工具描述直接炸到 77K。这还没算你自己的 CLAUDE.md、项目上下文、聊天历史。

objectivec 复制代码
Session 上下文分布(优化前):
├── 系统提示词:~10K tokens
├── MCP 工具定义:~77K tokens  ← 罪魁祸首
├── CLAUDE.md + 项目上下文:~15K tokens
├── 聊天历史:~30K tokens
└── 剩余可用:~68K tokens(200K 窗口)

看到没,工具定义比你实际的聊天内容还多。这就是为什么装多了 MCP Server 之后,Claude 动不动就"忘记"之前的对话------因为上下文被工具描述挤占了。

简单说就是工具定义的懒加载

不加载 Tool Search 时,Claude 启动就看到所有 50+ 个工具的完整定义。加载后,Claude 只看到一个叫 ToolSearch 的搜索工具,外加一个轻量的工具名称索引。当它判断需要某个工具时,先搜索,再按需加载完整定义。

打个比方:以前是开机就把整个 npm registry 下载到本地,现在是 npm install 的时候才下载你需要的包。

触发条件

不需要手动开启。当你注册的 MCP 工具描述总量超过上下文窗口的 10% 时,Claude Code 会自动启用 Tool Search。

对于 200K 上下文窗口,阈值大概是 20K tokens------也就是说,你装了 3-4 个 Server 基本就会自动触发。

两种搜索模式

Tool Search 支持两种查找方式:

1. 正则匹配(精确查找)

当 Claude 大概知道要找什么工具时,会用正则模式:

scss 复制代码
ToolSearch("select:browser_click,browser_navigate,browser_screenshot")

直接按工具名精确拉取,速度最快。

2. BM25 语义搜索(探索式查找)

不确定具体工具名时,用自然语言描述需求:

scss 复制代码
ToolSearch("take screenshot of webpage")

系统用 BM25 算法从工具描述中做相似度匹配,返回最相关的几个工具。

实测数据

我在自己的环境里测了一下(10 个 MCP Server,53 个工具):

python 复制代码
# 优化前
total_tool_tokens = 77_000  # 所有工具定义
context_window = 200_000
tool_overhead = 77_000 / 200_000  # 38.5%

# 优化后(Tool Search 自动启用)
toolsearch_tokens = 8_700  # ToolSearch 工具 + 轻量索引
tool_overhead_after = 8_700 / 200_000  # 4.35%

# 节省
saved = (77_000 - 8_700) / 77_000  # 88.7%

实际使用下来体感差异很明显:

  • 之前聊 10 轮左右就开始压缩历史,现在 30+ 轮依然流畅
  • 首次调用某个 MCP 工具会多花 1-2 秒(加载定义),后续调用无延迟
  • 工具调用成功率没有下降

你需要注意的坑

1. MCP Server 的 instructions 字段很关键

Tool Search 启用后,Claude 不再一开始就看到你所有工具的完整描述。它靠什么判断该搜索哪些工具?靠 MCP Server 的 instructions 字段。

如果你自己写了 MCP Server,一定要在 instructions 里写清楚这个 Server 是干什么的:

json 复制代码
{
  "mcpServers": {
    "my-db-server": {
      "command": "node",
      "args": ["./my-mcp-server.js"],
      "instructions": "Database operations: query, insert, update PostgreSQL tables. Use for any database-related tasks."
    }
  }
}

没有 instructions 的话,Claude 可能搜不到你的工具。

有些人看到 ToolSearch 出现在工具列表里,觉得碍事想禁掉。别这么干------禁掉之后所有工具定义会重新全量加载,上下文直接爆。

3. 工具加载后会一直保留

某个工具被搜索加载后,会在当前 session 一直保留。不用担心重复加载的开销。

配合 /mcp 命令管理 Server

2.1.76 还加了一个 /mcp 命令,可以在聊天面板里直接管理 MCP Server:

  • 查看所有已注册的 Server 状态
  • 启用/禁用某个 Server
  • 重新连接断开的 Server
  • 管理 OAuth 认证

以前管理 MCP Server 得去改 settings.json,现在直接在对话里 /mcp 就行。配合 Tool Search,可以按需启用/禁用 Server,进一步控制上下文占用。

我的 MCP Server 推荐配置

分享一下我目前在用的配置,供参考:

json 复制代码
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@anthropic/mcp-playwright"]
    },
    "github": {
      "command": "npx",
      "args": ["@anthropic/mcp-github"],
      "env": { "GITHUB_TOKEN": "ghp_xxx" }
    },
    "filesystem": {
      "command": "npx",
      "args": ["@anthropic/mcp-filesystem", "/path/to/project"]
    }
  }
}

有了 Tool Search,不用再纠结"装多少个 Server 合适"的问题------放心装,Claude 自己会按需加载。

关于模型 API 的一个题外话

写这篇的时候顺手测了一下不同模型在 Claude Code 里的表现。Claude Code 本身默认用 Anthropic 官方 API,但如果你想在国内低延迟使用,可以改 base_url 指向兼容 OpenAI 协议的聚合接口(比如我在用 ofox.ai),Claude、GPT、Gemini 都能切着用,延迟比直连好不少。

小结

MCP Tool Search 算是 Claude Code 最近最实用的更新之一了。如果你也是 MCP 重度用户,建议:

  1. 升级到 2.1.76+(npm update -g @anthropic-ai/claude-code
  2. 给自建 MCP Server 加上 instructions 字段
  3. /mcp 命令随时查看 Server 状态
  4. 不要禁用 ToolSearch 工具

装了十几个 MCP Server 不再是负担,反而成了优势------需要啥能力随时调用,不需要的不占上下文。这才是 MCP 生态该有的样子。

相关推荐
chaors3 小时前
从零学RAG0x0d:AdvancedRAG检索后优化
langchain·llm·ai编程
赵小川4 小时前
5分钟跑通 LangChain,第一个 AI Demo(超详细)
langchain·openai·ai编程
南蓝4 小时前
【Vibe Coding】Claude Code CLI 本地版与全局版冲突
ai编程
与虾牵手4 小时前
LobeChat 部署后怎么配置 API?2026 完整教程 + 踩坑记录
aigc·ai编程
OpenTiny社区4 小时前
TinyRobot Skills技巧大公开:让 AI 成为你的 “UI 搭建”副驾驶
前端·vue.js·ai编程
sg_knight4 小时前
OpenClaw 和 Claude Code、Cursor、Copilot 有什么区别
llm·copilot·claude·cursor·code·claude-code·openclaw
console.log('npc')5 小时前
Cursor,Trae,Claude Code如何协作生产出一套前后台app?
前端·人工智能·react.js·设计模式·ai·langchain·ai编程
Cendeal5 小时前
SDD开发者要承担什么角色
ai编程
Cendeal5 小时前
Agentic Coding是啥模式
ai编程