Appearance
[社区] Gemini CLI 连接 MCP 服务器时报错 MCP error -32000: Connection closed
问题
在 settings.json 中配置 MCP 服务器后,启动 Gemini CLI 时出现:
✕ Error during discovery for MCP server 'your-server-name': MCP error -32000: Connection closed这意味着 Gemini CLI 尝试连接 MCP 服务器时,连接在初始化阶段就被关闭了,无法完成工具发现。
解决方案
方案 1:检查 MCP 服务器配置的环境变量
-32000: Connection closed 通常意味着 MCP 服务器进程启动失败或立即退出。最常见原因是缺少必需的环境变量(如数据库连接字符串、API Key 等)。
检查你的 settings.json(~/.gemini/settings.json 或项目内 .gemini/settings.json)中的 MCP 配置是否包含了所有必需的 env 变量:
json
{
"mcpServers": {
"your-server": {
"command": "npx",
"args": ["-y", "@your/mcp-server"],
"env": {
"CONNECTION_STRING": "your-connection-string",
"API_KEY": "your-api-key"
}
}
}
}方案 2:手动测试 MCP 服务器是否能独立启动
绕过 Gemini CLI,直接在终端测试 MCP 服务器命令是否能正常运行:
bash
# 以 SQL Server extension 为例
npx -y @modelcontextprotocol/server-sqlserver如果服务器独立运行时崩溃或立即退出,说明是 MCP 服务器本身的问题(缺少依赖、配置错误),而不是 Gemini CLI 的问题。
方案 3:检查 Node.js 版本兼容性
部分 MCP 服务器需要特定版本的 Node.js。确认当前 Node.js 版本满足 MCP 服务器要求:
bash
node --version如果 MCP 服务器包的 package.json 中有 engines.node 要求,确认已满足。
方案 4:使用 debug 模式查看详细错误
设置 GEMINI_DEBUG 或在启动时添加 debug flag 可以看到更详细的 MCP 连接日志:
bash
GEMINI_DEBUG=1 gemini在 debug 输出中找到 MCP 服务器相关的行,通常能看到服务器退出的具体原因(如 ENOENT、EACCES、未找到命令等)。
方案 5:确认 MCP 服务器命令路径正确
如果你使用绝对路径或本地安装的命令,确认路径存在且可执行:
bash
# 确认命令存在
which your-mcp-command
ls -la /path/to/mcp-server常见问题
Q: -32000 和 -32001 有什么区别?
A: -32000 通常是连接在初始化阶段关闭(服务器未能成功启动),-32001 则可能是连接中途断开。前者几乎都是配置问题,后者可能是服务器运行时崩溃。
Q: 所有 MCP 服务器都报这个错,还是只有某一个?
A: 如果所有 MCP 服务器都报错,检查 Node.js 版本或 Gemini CLI 版本;如果只有某个报错,问题在该服务器的配置或依赖上。
Q: 删掉 MCP 配置后重新添加有帮助吗?
A: 有时候配置文件中存在格式错误(如 JSON 格式问题、字段名拼写错误)。可以先完全删除该服务器配置,确认 CLI 能正常启动,再重新添加并逐字段检查。