[Feature Request] Bulk MCP server reconnection for multi-server disconnect scenarios
Bug Description
When multiple MCP servers disconnect mid-session (auth expiry, network blip, server restart), the only recovery path is opening /mcp
and reconnecting each server one at a time. With 5–10 MCP servers configured, this is N manual steps per incident.
Request: A single action to retry all disconnected MCP servers. Either of these would solve it:
- claude mcp reconnect-all CLI subcommand — reconnects every configured server whose status is failed or disconnected.
- /mcp reconnect-all slash command variant — same behavior from inside a session, no restart needed.
- Optional: a SessionStart hook event exposing disconnected servers so users can script their own retry.
Why it matters: The current auto-reconnect (5 attempts with backoff) gives up permanently after failure. Once servers are in the
failed state, only manual /mcp clicks recover them — and that scales linearly with server count. For users with many MCPs (Atlassian,
GitHub, Gerrit, Snowflake, Redash, Figma, Rootly, etc.), a single transient network issue means a dozen manual reconnects.
Workaround today: Restart the whole Claude Code session, which loses conversation state.
Environment Info
- Platform: darwin
- Terminal: androidstudio
- Version: 2.1.114
- Feedback ID: ccc42caa-2499-48af-842b-d9bd3808d9db
Errors
[{"error":"Error: Was there a typo in the url or port?\n at from (/$bunfs/root/src/entrypoints/cli.js:107:7862)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:115:12925)\n at emitError (node:events:43:23)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:114:1149)\n at emitError (node:events:43:23)\n at <anonymous> (node:_http_client:253:22)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/src/entrypoints/cli.js:117:2467)\n at async MlH (/$bunfs/root/src/entrypoints/cli.js:253:275865)\n at async xE6 (/$bunfs/root/src/entrypoints/cli.js:406:3883)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-20T21:59:22.005Z"},{"error":"Error: ECONNREFUSED\n at from (/$bunfs/root/src/entrypoints/cli.js:107:7862)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:115:12925)\n at emitError (node:events:43:23)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:114:1149)\n at emitError (node:events:43:23)\n at <anonymous> (node:_http_client:253:22)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/src/entrypoints/cli.js:117:2467)\n at async MlH (/$bunfs/root/src/entrypoints/cli.js:253:275865)\n at async xE6 (/$bunfs/root/src/entrypoints/cli.js:406:3883)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-20T21:59:23.310Z"},{"error":"Error: Was there a typo in the url or port?\n at from (/$bunfs/root/src/entrypoints/cli.js:107:7862)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:115:12925)\n at emitError (node:events:43:23)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:114:1149)\n at emitError (node:events:43:23)\n at <anonymous> (node:_http_client:253:22)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/src/entrypoints/cli.js:117:2467)\n at async MlH (/$bunfs/root/src/entrypoints/cli.js:253:275865)\n at async xE6 (/$bunfs/root/src/entrypoints/cli.js:406:3883)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-20T21:59:25.538Z"},{"error":"Error: ECONNREFUSED\n at from (/$bunfs/root/src/entrypoints/cli.js:107:7862)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:115:12925)\n at emitError (node:events:43:23)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:114:1149)\n at emitError (node:events:43:23)\n at <anonymous> (node:_http_client:253:22)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/src/entrypoints/cli.js:117:2467)\n …
Note: Content was truncated.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗