关于 mcpgo
mcpgo 是一个 MCP 服务,可通过对话命令管理 Claude Code 的 MCP 配置。它能包装 stdio 服务以自动重启,也支持 Codex CLI MCP。
主要功能
- 01列出并查看已配置的 MCP
- 02添加、移除和配置服务
- 03包装 stdio MCP 以便重启
- 04重启已包装的服务进程
- 05检查服务进程状态
- 06管理 Codex CLI MCP
适用场景
- 01在 Remote Control 中列出 MCP
- 02重启崩溃或无响应的已包装服务
- 03通过与 Claude 对话调整 MCP 服务配置
MCP 相关
mcpgo 本身是 MCP 服务,提供管理 Claude Code MCP 配置和进程的工具。它还可包装并重启 stdio MCP,并提供管理 Codex CLI MCP 的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
11收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| show_env_values | boolean | 否 | 若为 true,则显示原始 'env' 值。默认值为 false(值显示为 '***')。 |
详细介绍
mcpgo
通过与 Claude 对话来管理 Claude Code MCP:列出、重启、包装等。
适用于 Claude Code 支持的所有场景,包括无法使用 /mcp 的 Remote Control。
安装
npm install -g @exfil/mcpgo
claude mcp add mcpgo --scope user -- mcpgo
要求: Node.js ≥ 18
Remote Control
Claude Code 的 Remote Control 模式无法访问 /mcp。这意味着你无法远程列出、重启或管理 MCP 服务——除非使用 mcpgo。
由于 mcpgo 本身就是一个 MCP 服务,因此在 Claude Code 支持的所有场景中都可使用:
"list my mcps"
"restart github"
"check postgres health"
无需使用 /mcp 界面。
功能
可靠重启
Claude Code 通过启动时创建的管道连接 stdio MCP 服务。如果服务崩溃或你想重启它,Claude Code 会将其标记为失败,且不会自动恢复。
mcpgo 通过包装器解决这一问题:这是一个长期运行的进程,位于 Claude Code 与你的 MCP 之间。Claude Code 与包装器通信(包装器会保持运行),而包装器会将实际服务作为子进程启动——每当子进程被终止时,都会自动重新启动它。
包装是可选的——你可以只用 mcpgo 列出、添加或移除 MCP,而无需包装任何内容。只有在不使用 /mcp 的情况下实现可靠重启时,才需要包装。
每个 MCP 只需设置一次:
wrap_mcp_stdio——在配置中包装目标 MCP- 重启 Claude Code(或通过
/mcp断开连接后重新连接) - 完成——之后可随时使用
restart_mcp_process
设置完成后:
"restart github" → instant, wrapper auto-respawns the child, Claude Code stays connected
"restart postgres" → same
如果想取消包装,可使用 unwrap_mcp_stdio 恢复原始配置。
工具
进程管理
wrap_mcp_stdio
包装 Claude Code 的 stdio MCP,以便可靠地重启。
"wrap github"
"wrap postgres"
unwrap_mcp_stdio
将已包装的 MCP 恢复为原始配置。
"unwrap github"
"unwrap postgres"
restart_mcp_process
重启已包装 MCP 的子进程——包装器会自动重新启动它,Claude Code 保持连接。
"restart github"
"restart postgres"
check_mcp_health
检查 MCP 是否已配置、是否已包装,以及其进程是否正在运行。
"check github health"
"is postgres running?"
Codex CLI 支持
wrap_codex_mcp_stdio
包装来自 ~/.codex/config.toml 的 Codex CLI MCP。
"wrap my codex mcp called postgres"
restart_codex_mcp_process
重启已包装的 Codex CLI MCP。
"restart the codex postgres"
配置管理
list_all_mcps
列出所有已配置的 MCP 服务。
"list my mcps"
"what mcps do I have?"
add_mcp
将新的 MCP 服务添加到 ~/.claude.json。
"add an mcp called my-tool that runs python server.py"
remove_mcp
移除 MCP 服务。
"remove the my-tool mcp"
configure_mcp
更新现有 MCP 服务的配置字段。
"change github's command to python3"
get_mcp_details
获取指定 MCP 的完整配置详情。
"show me the github config"
"get details for postgres"
包装的工作原理
调用 wrap_mcp_stdio "github" 时,配置项会从:
{ "command": "python", "args": ["server.py"] }
变为:
{
"command": "node",
"args": [
"/path/to/wrapper.js",
"--name", "github",
"--pidfile", "...",
"--env-allowlist", "PATH,Path,PATHEXT,HOME,USERPROFILE,SystemRoot,...",
"--",
"python", "server.py"
]
}
包装器会:
- 将原始命令作为子进程启动
- 将子进程的 PID 写入 pidfile
- 在子进程退出时自动重新启动(并采用退避机制)
- 向子进程传递经过筛选的环境变量(PATH、语言环境、临时目录、主目录,以及 MCP 声明的
env键),而非继承 Claude Code 的完整环境 - 在收到 SIGTERM、SIGINT 或 stdin EOF 时正常退出
restart_mcp_process 会读取 pidfile 并终止子进程。包装器会重新启动它,Claude Code 不会察觉连接中断。
unwrap_mcp_stdio 会撤销此操作——从 -- 后的参数中恢复原始命令,并移除 pidfile。
稳定的包装器位置
包装 MCP 时,mcpgo 会将 wrapper.js 复制到稳定的用户数据目录,并将该路径写入 ~/.claude.json。这样,即使清除 npx 缓存或升级 mcpgo 版本,配置也能保留——包装器不会突然消失。
- Windows:
%LOCALAPPDATA%\mcpgo\wrapper.js - Linux/macOS:
~/.mcpgo/wrapper.js
对已包装的 MCP 再次运行 wrap_mcp_stdio,会在原位置更新包装器副本。
Pidfile 位置
- Windows:
%LOCALAPPDATA%\mcpgo\pids\<name>.pid - Linux/macOS:
$TMPDIR/mcpgo/pids/<name>.pid
说明
- 包装后需要重启 Claude Code(或手动通过
/mcp断开连接并重新连接)才能生效——Claude Code 会在内存中缓存配置 restart_mcp_process在已包装的 MCP 上效果最佳;对于未包装的 MCP,它会终止进程,但你需要通过/mcp手动重新连接- 请求中途崩溃可能会导致短暂的协议不同步;Claude Code 会在下一次调用工具时恢复
- 已包装的 MCP 会接收经过筛选的环境变量(PATH、语言环境、临时目录、主目录,以及 MCP 声明的
env键),而不是完整的 Claude Code 环境。对之前已包装的 MCP 重新运行wrap_mcp_stdio,即可应用此默认设置 list_all_mcps和get_mcp_details默认会对env值进行脱敏,以防这些工具被用于窃取 MCP 配置中存储的机密——只有确实需要查看时才传入show_env_values: true
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。