"Server disconnected" banner shown for routine idle/sleep MCP disconnects even when reconnection succeeds
Environment
- Claude Desktop app (claude-code engine
2.1.222, agent-sdk/0.3.222) - macOS (Darwin 25.3.0, Apple Silicon)
- MCP servers affected: a local stdio server, a local streamable-HTTP server (
http://localhost:8799/mcp), and the remote Atlassian MCP (https://mcp.atlassian.com/v1/mcp) — i.e. all transports
Issue
Whenever the Mac sleeps or a session goes idle, the app tears down MCP connections (SIGINT for stdio children, aborting the SSE stream for HTTP). This is presumably intentional resource cleanup — the disconnects are logged as clean/AbortError, and the next tool call always reconnects successfully in 0.1–0.7s.
However, every one of these routine disconnects surfaces the warning banner:
⚠️ MCP databricks: Server disconnected. For troubleshooting guidance, please visit our debugging documentation
For a daily-driver setup this means the user sees a scary "Server disconnected" banner several times a day (every morning after wake, after lunch, etc.) even though nothing is actually broken. It's indistinguishable from a real failure (bad credentials, server crash), which trains users to ignore the banner — or, worse, to spend time debugging a healthy setup.
Log evidence (~/Library/Caches/claude-cli-nodejs/<project>/mcp-logs-*)
Idle teardown of an HTTP MCP connection, logged as a connection error:
{"debug":"HTTP connection closed after 420s (cleanly)","timestamp":"2026-08-10T10:14:52.706Z"}
{"debug":"Cleared connection cache for reconnection","timestamp":"2026-08-10T10:14:52.708Z"}
{"debug":"HTTP connection dropped after 420s uptime","timestamp":"2026-08-10T10:14:52.722Z"}
{"debug":"Connection error: SSE stream disconnected: AbortError: The operation was aborted.","timestamp":"2026-08-10T10:14:52.722Z"}
{"debug":"Terminal connection error 1/3","timestamp":"2026-08-10T10:14:52.722Z"}
The identical pattern occurs at the same second for the remote Atlassian MCP (so it is not specific to local servers):
{"debug":"Connection error: SSE stream disconnected: AbortError: The operation was aborted.","timestamp":"2026-08-10T10:14:52.721Z"}
{"debug":"Terminal connection error 1/3","timestamp":"2026-08-10T10:14:52.722Z"}
And the subsequent reconnect always succeeds immediately:
{"debug":"Successfully connected (transport: http) in 652ms","timestamp":"2026-08-10T21:25:14.518Z"}
Expected behavior
- Don't show the "Server disconnected" banner for app-initiated idle/sleep teardowns (clean close / AbortError), or
- Only show it after reconnection has actually been attempted and failed (e.g. after the 3/3 terminal errors, not 1/3), and
- Ideally distinguish "idle — will reconnect on demand" from "server unreachable" in the UI.
Steps to reproduce
- Configure any MCP server (stdio or HTTP) in the desktop app.
- Use it once, then let the Mac sleep or leave the session idle for a while.
- Wake/return: the "Server disconnected" banner is shown, yet the next tool call reconnects and works fine.