Gemini CLI 的 mcp enable/disable 命令从未匹配到任何服务器,PR 揭示三度误判已修复

lets-order-some-fries · ghdev · 2026-09-22

google-gemini/gemini-cli 的 PR #29444 修复一个滑稽但真实的 bug:gemini mcp enable/disable <name> 从未成功匹配任何服务器,对所有服务器(包括 gemini mcp list 刚列出的)都报「Server not found」且不做任何更改。

根因:getMcpServersFromConfig() 返回 { mcpServers, blockedServerNames } 包装对象,两个处理器却把它整个赋给 servers 再读 Object.keys(servers),得到的是 ['mcpServers', 'blockedServerNames']——真实服务器名永远不在其中。#18442 改返回结构时 list.ts 做了解构,enableDisable.ts 没改,而 Object.keys() 接受任意对象所以编译不报错。

更耐人寻味的是:这个问题在 #20694 已被准确诊断,#20696 和 #21184 两次尝试修复都被关闭未合并,#20694 还在 2026-04-30 被以「已修复」为由关闭——但 enableDisable.ts 自 2026-01-26 后没有任何提交。本 PR 做了解构修复、单独匹配被 admin allowlist 屏蔽的服务器(避免误导用户找拼写错误)、共享校验 helper,并新增 8 个单元测试(其中 7 个不改源码即失败)。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →