Skip to content

MCP 描述太长被砍:用环境变量抬上限

MCP 服务器一多,工具说明和 server instructions 很容易写成长文。CLI 会按长度截断,模型看见的就变成「半截说明书」——该选哪个工具、参数叫什么,变得含糊。2.1.280 增加环境变量 CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH,用来改会话里每个 MCP 服务器对工具描述与 server instructions 的字符上限;默认仍是 2048

这是「上下文预算旋钮」,不是再开一条 MCP 通道。权限、作用域、审批规则照旧,见 MCP 作用域

默认 2048 卡的是什么

被限制的是进入提示侧的描述文本长度,大致包括:

  • 各工具的 description
  • MCP server instructions(服务器级说明)

超过上限的部分会被裁掉或压缩展示(具体截断表现随版本微调,但结果一样:模型拿不全长说明)。症状常见是:

  • 工具很多时,模型老挑错工具或漏必填参数
  • 你明明在 MCP 配置里写了长 SOP,会话里却像没读过后半段
  • /mcp 里服务器正常,对话表现却像「半残文档」

若只是连接慢、首轮卡住,那是另一根轴:用 MCP 启动等待CLAUDE_CODE_MCP_STARTUP_WAIT_MS,别和描述长度混为一谈。

怎么设

在启动 Claude Code 的环境里导出,例如:

bash
export CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH=8192

含义:本会话对每一个已连接 MCP 服务器,把工具描述 / server instructions 的长度天花板从 2048 调到你设的值(单位是字符上限,以当前版 changelog 为准)。

建议:

场景做法
官方短描述工具维持默认 2048,少占上下文
内网 MCP 带长 SOP / 多工具目录适度抬高(如 4k–8k),先在小会话验证
描述本身注水、重复先精简 MCP 侧文案,再考虑抬上限
CI / -p抬上限会增加每轮提示体积;和 token、延迟一起评估

改完重启会话(或新开终端)再 /mcp 确认服务器仍健康,然后用一条会点到「长说明里才有的细节」的任务做冒烟。

该抬上限,还是该改 MCP 文案

优先顺序:

  1. 工具名清晰、description 短而可分:比堆小说更有效。
  2. server instructions 只留跨工具公约(鉴权、环境、禁忌),细节放到工具级。
  3. 仍不够时再 CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH
  4. 单个服务器描述已经远超合理范围:拆服务器或拆工具,而不是无限抬天花板。

上限抬得越高,系统提示越肥,越容易挤掉对话与代码上下文,也更贵。和 Concise 输出、周限额是同一类权衡:能瘦身就别硬堆。

和同版本其他 MCP 相关体验

2.1.280 还修了若干 MCP / 插件界面一致性问题(例如 /mcp 列表与详情的告警符号统一为 ⚠、全屏下搜索框边框等)。它们改善的是可读性;描述长度变量改善的是模型实际读到的说明书完整度。断线通知与诊断仍用 /mcp,见 远程 fork 与 MCP 断线

小结

  • 2.1.280CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH 可改 MCP 工具描述与 server instructions 的默认 2048 上限。
  • 先精简 MCP 文案,再按需抬高;抬高会占上下文、影响成本。
  • 连接等待用另一环境变量;权限与审批不在本旋钮范围内。

模型选错工具时,先看描述是不是被砍半截,再怪模型「不聪明」。

Claude-cn.org,专注于 Claude Code 中文教程