[BUG] Claude Desktop on Windows: Quit takes 10+ seconds with multiple MCP servers configured
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When quitting Claude Desktop via System Tray → Right-click → Quit, the application takes 10+ seconds to fully terminate. During this delay, the system tray icon remains visible and the process continues running in Task Manager.
This issue appears to be caused by the sequential MCP server shutdown process (onQuitCleanup: mcp-shutdown), where each configured MCP server is shut down one at a time. With 5 MCP servers configured (web-search, law-info, nh-coop, ssh-synology, desktop-commander), the cumulative shutdown time becomes noticeably long.
Environment:
- Platform: Windows 11
- Claude Desktop version: 1.1.4498 (24f768)
- MCP servers configured: 5 servers
Based on related issues (#14951, #15368, #15423, #16088), the quit lifecycle follows this path:beforeQuit → onQuitCleanup (mcp-shutdown, quick-entry-cleanup, prototype-cleanup) → readyForQuit → willQuit
The mcp-shutdown phase sequentially terminates each MCP server process. With multiple servers (especially those using stdio transport spawning child processes like Node.js or Python), this becomes a bottleneck.
What Should Happen?
- Quit should complete within 1-2 seconds
- MCP servers should be shut down in parallel (
Promise.all()), not sequentially - If an MCP server fails to respond, a short timeout (e.g., 2-3 seconds) should force-kill it rather than waiting indefinitely
- A brief "Shutting down..." notification should be shown so users know the app is closing
- If MCP shutdown exceeds 5 seconds total, force-terminate all child processes and exit
Error Messages/Logs
No error messages displayed. The quit process simply takes 10+ seconds to complete. No crash or hang - just abnormally slow termination.
Steps to Reproduce
- Configure multiple MCP servers in
claude_desktop_config.json(5+ servers) - Launch Claude Desktop
- Wait for all MCP servers to connect successfully
- Right-click system tray icon → Quit
- Observe that it takes 10+ seconds before the app fully terminates
- During the delay, the system tray icon remains visible and Claude processes remain in Task Manager
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Desktop 1.1.4498 (24f768) — Not Claude Code CLI
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Note: This is a Claude Desktop app issue, not Claude Code CLI. Filed here as Claude Desktop bugs are tracked in this repository.
Suggested Improvements
- Parallel MCP shutdown: Shut down all MCP servers concurrently using
Promise.all()instead of sequential awaits - Aggressive timeout: Apply a 2-3 second hard timeout per server, then
SIGKILL/taskkill /Fany remaining processes - Progress indication: Show a brief "Shutting down..." notification so users know the app is closing
- Graceful degradation: If MCP shutdown exceeds 5 seconds total, force-terminate all child processes and exit
Workaround
After quitting, force-kill remaining processes via PowerShell:
Get-Process -Name "Claude" -ErrorAction SilentlyContinue | Stop-Process -Force
Related Issues
- #14951 — Claude Desktop macOS requires quitting twice
- #15368 — Claude Desktop not exiting (Windows)
- #15423 — Orphaned renderer processes after quit (Windows)
- #16088 — Claude Desktop hangs on quit (macOS, MCP-related)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗