Claude MCP管理工具

mcpgo是一个用于管理Claude Code MCP的工具,支持列出、重启、包装和管理MCP服务器,特别是在远程控制模式下无法使用`/mcp`时提供解决方案。

  • by jschoemaker
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jschoemaker/mcpgo

使用说明

mcpgo

通过与Claude交谈来管理您的Claude Code MCP——列表、重启、包装等。

适用于Claude Code工作的所有地方,包括 遥控器 哪里 /mcp 不可用。

安装

npm install -g @exfil/mcpgo
claude mcp add mcpgo --scope user -- mcpgo

要求: Node.js≥18

遥控器

Claude Code的远程控制模式无法访问 /mcp。这意味着您无法远程列出、重启或管理MCP服务器,除非您有mcpgo。

因为mcpgo本身就是一个MCP服务器,所以它可以在Claude Code所在的任何地方使用:

"list my mcps"
"restart github"
"check postgres health"

不 /mcp 需要UI。

它的作用

可靠的重启

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 CLI MCP ~/.codex/config.toml.

"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、locale、temp、home,加上MCP声明的 env key)而不是继承Claude Code的完整环境
  • 在SIGTERM、SIGINT或stdin EOF上干净退出

restart_mcp_process 读取pidfile并杀死孩子。包装器会重新包装它——Claude Code永远不会看到断开连接。

unwrap_mcp_stdio 反转此操作--它从以下参数中恢复原始命令 -- 并删除pidfile。

稳定的包装位置

当你包装MCP时,mcpgo会复制 wrapper.js 到一个稳定的用户数据位置,并将该路径写入 ~/.claude.json。这意味着配置在npx缓存清除和mcpgo版本升级后仍然存在——包装器不会从您下方消失。

  • 窗户: %LOCALAPPDATA%\mcpgo\wrapper.js
  • Linux/macOS: ~/.mcpgo/wrapper.js

重新 wrap_mcp_stdio 在已经包装好的MCP上刷新包装器副本。

Pidfile位置

  • 窗户: %LOCALAPPDATA%\mcpgo\pids\<name>.pid
  • Linux/macOS: $TMPDIR/mcpgo/pids/<name>.pid

备注

  • 包装需要重新启动Claude代码(或手动) /mcp 断开连接+重新连接)生效——Claude Code将配置缓存在内存中
  • restart_mcp_process 在包裹的MCP上效果最佳;对于未包装的,它会终止进程,但您需要通过手动重新连接 /mcp
  • 中间请求崩溃可能会导致短暂的协议失同步;Claude Code在下次工具调用时恢复
  • 包装好的MCP会收到一个精心策划的环境(PATH、locale、temp、home,以及MCP声明的 env 密钥)而不是完整的Claude Code环境。重新运行 wrap_mcp_stdio 在之前包装的MCP上启用此默认值
  • list_all_mcps 和 get_mcp_details 修订 env 默认值,因此工具不能用于泄露存储在MCP配置中的机密--pass show_env_values: true 当你真的需要看到它们的时候