Claude Code 把 MCP 描述卡在 2048 字
Claude Code 2.1.280 说明:MCP 工具描述和服务器说明默认最多 2048 个字符,可用 CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH 改这个上限,对本次会话里的每个 MCP 服务器生效。

Claude Code 2.1.280 的发行说明加了一项环境变量:CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH。它用来改 MCP 工具描述和服务器说明的上限。默认上限是 2048 个字符,对本次会话里的每一个 MCP 服务器生效。claude code mcp 描述长度 问的就是这个帽,不是工具定义一共占多少 token。
2048 是字符,不是 token
发行说明写的是 character cap,按字符数,英文、数字和标点都算。一段 2048 字符的英文说明,token 数通常远小于 2048。反过来,把上限调到很大,模型仍然要在每一轮读这些说明。工具定义按轮计费的算法见 MCP 工具定义为什么每轮都在计费。把帽摘掉省不了那笔钱,只是让更长的说明有机会进上下文。
说明没有写超出 2048 之后是截断、丢弃整段,还是报错。变量名是「最大长度」,合理的用法是:描述被吃掉、模型选错工具时,先把这一条调高再看行为,不要把它当成计费开关。
什么时候值得改
服务器说明和每个工具的 description、参数说明都进这个帽。一个服务器挂几十个工具,各自写长段落,很容易顶到 2048。发行说明说这个变量作用于会话中的每一个 MCP 服务器,不是只作用于某一个名字。调高之后,短描述的服务器也会按新上限放行。
若目标是让模型少选错,优先把工具收成少数几个按结果塑形的接口,而不是把每条 REST 路径都写成一篇说明再放宽字数。字数帽是 2.1.280 才写进发行说明的调节旋钮。更早的版本没有这个变量名,设了也不会被那一版读到。
和校验命令放在一起看
2.1.281 给 claude plugin validate 加了 MCP 检查:会报告加载时会被静默丢掉的 .mcp.json 项、未声明的 ${user_config.*},以及不安全的 URL。描述被截断和条目被丢掉是两件事故。先跑 validate,确认服务器真的加载了,再调 CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH。