The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Mcpgo listing page.
Manage your Claude Code MCPs by talking to Claude — list, restart, wrap, and more.
Works everywhere Claude Code works, including Remote Control where /mcp isn't available.
Requirements: Node.js ≥ 18
Claude Code's Remote Control mode has no access to /mcp. That means you can't list, restart, or manage MCP servers remotely — unless you have mcpgo.
Because mcpgo is itself an MCP server, it's available everywhere Claude Code is:
No /mcp UI needed.
Claude Code connects to stdio MCP servers via pipes it creates at launch. If a server crashes or you want to restart it, Claude Code marks it as failed with no auto-recovery.
mcpgo solves this with a wrapper: a long-lived process that sits between Claude Code and your MCP. Claude Code talks to the wrapper (which stays alive), and the wrapper spawns the real server as a child — auto-respawning it whenever it's killed.
Wrapping is optional — you can use mcpgo just for listing, adding, or removing MCPs without wrapping anything. Wrapping is only needed if you want reliable restarts without touching /mcp.
One-time setup per MCP:
wrap_mcp_stdio — wraps the target MCP in config/mcp)restart_mcp_process anytimeAfter setup:
If you ever want to undo wrapping, use unwrap_mcp_stdio to restore the original config.
wrap_mcp_stdioWrap a Claude Code stdio MCP for reliable restarts.
unwrap_mcp_stdioRestore a wrapped MCP to its original config.
restart_mcp_processRestart a wrapped MCP's child process — wrapper auto-respawns it, Claude Code stays connected.
check_mcp_healthCheck if an MCP is configured, wrapped, and its process is running.
wrap_codex_mcp_stdioWrap a Codex CLI MCP from ~/.codex/config.toml.
restart_codex_mcp_processRestart a wrapped Codex CLI MCP.
list_all_mcpsList all configured MCP servers.
add_mcpAdd a new MCP server to ~/.claude.json.
remove_mcpRemove an MCP server.
configure_mcpUpdate an existing MCP server's config fields.
get_mcp_detailsGet full config details for a specific MCP.
When you call wrap_mcp_stdio "github", the config entry changes from:
to:
The wrapper:
env keys) instead of inheriting Claude Code's full environmentrestart_mcp_process reads the pidfile and kills the child. The wrapper respawns it — Claude Code never sees a disconnect.
unwrap_mcp_stdio reverses this — it restores the original command from the args after -- and removes the pidfile.
When you wrap an MCP, mcpgo copies wrapper.js to a stable user-data location and writes that path into ~/.claude.json. This means the config survives npx cache clears and mcpgo version upgrades — the wrapper won't disappear from under you.
%LOCALAPPDATA%\mcpgo\wrapper.js~/.mcpgo/wrapper.jsRe-running wrap_mcp_stdio on an already-wrapped MCP refreshes the wrapper copy in place.
%LOCALAPPDATA%\mcpgo\pids\<name>.pid$TMPDIR/mcpgo/pids/<name>.pid/mcp disconnect + reconnect) to take effect — Claude Code caches config in memoryrestart_mcp_process works best on wrapped MCPs; for unwrapped ones it kills the process but you'll need to reconnect manually via /mcpenv keys) rather than the full Claude Code environment. Re-run wrap_mcp_stdio on previously-wrapped MCPs to pick up this defaultlist_all_mcps and get_mcp_details redact env values by default so the tools can't be used to exfiltrate secrets stored in MCP configs — pass show_env_values: true when you actually need to see them