mcpField
M
mcpgo

mcpgo

本地服务
github.com/jschoemaker开发工具023 周前更新

关于 mcpgo

mcpgo 是一个 MCP 服务,可通过对话命令管理 Claude Code 的 MCP 配置。它能包装 stdio 服务以自动重启,也支持 Codex CLI MCP。

主要功能

  1. 01列出并查看已配置的 MCP
  2. 02添加、移除和配置服务
  3. 03包装 stdio MCP 以便重启
  4. 04重启已包装的服务进程
  5. 05检查服务进程状态
  6. 06管理 Codex CLI MCP

适用场景

  1. 01在 Remote Control 中列出 MCP
  2. 02重启崩溃或无响应的已包装服务
  3. 03通过与 Claude 对话调整 MCP 服务配置

MCP 相关

mcpgo 本身是 MCP 服务,提供管理 Claude Code MCP 配置和进程的工具。它还可包装并重启 stdio MCP,并提供管理 Codex CLI MCP 的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jschoemaker-mcpgo": {
"command": "npx",
"args": [
"-y",
"@exfil/mcpgo"
]
}
}
}
启动命令npx -y @exfil/mcpgo

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@exfil/mcpgo0.1.6

工具

11

收录的工具列表 · 更新于 3 周前

参数类型必填说明
show_env_valuesboolean否若为 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 只需设置一次:

  1. wrap_mcp_stdio——在配置中包装目标 MCP
  2. 重启 Claude Code(或通过 /mcp 断开连接后重新连接)
  3. 完成——之后可随时使用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。