MCP 配了却不生效:六种键名差异与四个生效条件
把别家博客里的配置粘进自己的编辑器,保存、重启、打开工具列表——空的。没有报错,没有日志提示,语法合法,只是位置错了。
MCP 规范统一的是传输与消息原语:initialize握手、tools/list列举、tools/call调用都有约定,却没有规定宿主该用哪个键把 server 写进配置文件。17 个宿主于是长出 5 种顶层键名。坑点表最后核对于 2026-10-23,共 17 条(配置写法 6、能力缺失 3、容量超时 2、认证 2、生效条件 4)。想要能直接复制的中文清单,见 完整插件清单与汉化避坑指南。
三种「不生效」,先分清是哪一种
静默失效:配置被当成未知字段忽略,进程没被拉起,列表为空。键名错、顶层键错、文件放错目录都归这类。
立刻报错:解析阶段被拒,通常缺必填字段,最典型是 URL 型配置少写type。
要人工放行:文件和键名都对,宿主仍不加载,因为还有一道信任动作没做。
宿主 → 顶层键 → 远程字段
| 宿主 | 配置文件 | 顶层键 | 远程字段 / 备注 |
|---|---|---|---|
| VS Code(Copilot) | .vscode/mcp.json | servers | 同目录.mcp.json却用mcpServers |
| Codex CLI | ~/.codex/config.toml | mcp_servers | TOML 表内字段 |
| Zed | .zed/settings.json | context_servers | url,不认mcpServers |
| OpenCode | opencode.json | mcp | type+url;command是数组 |
| Continue | .continue/mcpServers/*.yaml | mcpServers(YAML) | 是 YAML,不是 JSON |
| Windsurf / Gemini CLI / Roo Code / WorkBuddy | JSON 设置 | mcpServers | 远程字段与type各有特殊 |
| 其余 8 家(Claude Code / Claude Desktop / Cursor / Cline 等) | 多为 JSON | mcpServers | 字段视版本 |
四个生效条件:配置对了还得再走一步
- Trae 项目级 MCP 默认关闭,写进项目不自动加载,要手动开开关。
- Gemini CLI 在未受信任目录下装不了 server,目录先要被标记为可信。
- WorkBuddy 新配置不会自动生效,列表里能看到,但要手动点一次 Trust。
- Claude Code 项目级 server 需要人工批准,共享配置默认不执行。
四个高频坑
坑一 · Windsurf 的远程地址键名不是 url
现象:从 Cursor 教程抄来"url": "..."粘进 Windsurf,面板空着,无提示。
原因:Windsurf 的远程字段是serverUrl;url不是它的字段,解析器跳过该键,条目被丢弃。
解决:改键名,其余不动。坑一最爱在「先看 Cursor 再换 Windsurf」时撞到:两家顶层键都是mcpServers,警惕心就放下了。
{"mcpServers":{"remote-demo":{"serverUrl":"https://mcp.example.com/mcp"}}}坑二 · WorkBuddy 的远程 type 多了一个连字符
现象:本地 server 正常,换远程后连不上。
原因:远程type写作streamablehttp,整词无连字符。写成streamable-http会被判为未知类型。
解决:整词,不加连字符与下划线。坑二最迷惑人的地方是带连字符那版看着更规范、别处也确实合法,人反而去怀疑地址与证书。
{"mcpServers":{"remote-demo":{"type":"streamablehttp","url":"https://mcp.example.com/mcp"}}}坑三 · Zed 的顶层键叫 context_servers
现象:标准 JSON 放进.zed/settings.json,Zed 毫无反应,设置页里连条目都不显示。
原因:顶层键是context_servers,整块配置被当成未知键整体忽略。
解决:换顶层键,内部字段一并对齐。坑三是唯一「顶层键与主流不一致、宿主本身却很常用」的组合。判断方法:看它已有条目挂在哪个键下。
{"context_servers":{"demo":{"command":{"path":"uvx","args":["mcp-server-time"]}}}}坑四 · OpenCode 用 mcp 且 command 是数组
现象:配置放进opencode.json,启动报字段类型错误,或 server 不出现。
原因:两处都不对。顶层键是mcp;command要写成数组,而不是「命令字符串 + 参数数组」。
解决:改顶层键,改 command 形状。坑四同时踩两个差异轴,只核对顶层键仍会栽在类型上。
{"mcp":{"demo":{"type":"local","command":["uvx","mcp-server-time"]}}}症状 → 原因 → 动作
| 症状 | 最可能的原因 | 动作 |
|---|---|---|
| 有条目但连不上 | 远程字段名不对 | 核对serverUrl/url/httpUrl |
| 设置页里没有条目 | 顶层键不对 | 换成宿主自己的顶层键 |
| 无报错、列表空 | 未通过信任 | 开开关 / 信任目录 / 点 Trust |
| 列表超时 | 启动慢于默认等待 | OpenCode 默认只等 5000 ms |
| 工具只出现一部分 | 触到数量软上限 | Cursor 约 40 个软上限 |
口径:坑点表与宿主表(2026-10-23 核对);采集汇总 generatedAt 为 2026-10-25T14:16Z、mode=partial,仅 1 个 server × 17 个宿主共 17 格,真机 5 格、文档 12 格;宿主表属规则推导。
总结
配了不生效,多数不是网络问题,而是键名与生效条件:先对齐键与字段,再找 Trust 按钮。想对照同类插件的中文清单与安装形态,见 MCP 插件清单与兼容手册。
适合与不适合
适合:刚搬过配置、列表为空的人;维护多宿主的团队;写接入文档的工程师。
不适合:只用单宿主、配置没换过的人,表里没有增量;想找「哪个 MCP 插件好用」的读者,本文不谈选型;想要全量真机数据的人,当前采集只有 1 个 server、17 格里 5 格真机。
标签:MCP、配置排错、编辑器插件、协议适配
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页与 MCP 兼容手册。