Environment
- Product: Claude for Windows 1.8555.2 (a476c3)
- Package: MSIX
Claude_1.8555.0.0_x64__pzs8sxrjxfjjc (Microsoft Store)
- OS: Windows 11 Pro build 26200 (x64)
- MCP servers: 5 Node-type extensions, spawned via the built-in Node (Electron run-as-node)
- Disk: SSD
- Antivirus: Norton 360 (real-time protection active; Windows Defender disabled)
What's Wrong?
On Windows, stdio/extension MCP servers intermittently fail at startup with "Could not connect to MCP server X" and "MCP X: UtilityProcess spawn timeout". After investigation (logs + the bundled app.asar), the root cause is three independent, non-configurable issues:
Root Cause 1 — Hardcoded 5 s spawn timeout
In app/resources/app.asar (.vite/build/index.js), the UtilityProcess spawn timeout is a literal 5e3 ms and is not driven by any environment variable. MCP_TIMEOUT / MCP_CONNECT_TIMEOUT_MS only affect the MCP protocol handshake, not the OS-level spawn:
await new Promise((i, r) => {
const n = setTimeout(() => { r(new Error("UtilityProcess spawn timeout")) }, 5e3);
this.process.once("spawn", () => { /* clearTimeout(n) ... */ });
});
Root Cause 2 — Simultaneous spawn → serialization → queue-position failures
All enabled servers are started simultaneously at startup, but process creation then serializes (~1.8 s per server on a healthy SSD machine). Only ~2 servers fit inside the 5 s window; any server further back in the queue times out. Failure tracks queue position, not server weight — a ~7 MB server fails while a ~92 MB one succeeds in the same run.
Root Cause 3 — Toggling one connector restarts ALL enabled connectors
Opening the Connectors panel or toggling any connector emits Server transport closed (intentional shutdown) for every enabled server, re-initializing them all. This turns the only visible in-app recovery action (toggle the failing server off/on) into a restart storm that knocks out already-connected servers.
Antivirus exclusions (Norton Auto-Protect/SONAR) cut spawn time ~20% (e.g. 2.31 s → 1.85 s) but are not sufficient.
Error Messages / Logs
Toasts:
- Could not connect to MCP server Context7
- MCP Context7: UtilityProcess spawn timeout
- Could not attach to MCP server Filesystem
5 servers enabled — only the first connects, the rest hit exactly 5.0 s:
[Filesystem] Initializing server... 15:36:20.567
[Affinity] Initializing server... 15:36:20.570
[Cloudinary] Initializing server... 15:36:20.572
[PDF Tools] Initializing server... 15:36:20.580
[Context7] Initializing server... 15:36:20.582
[Filesystem] Server started and connected 15:36:25.362 (~4.79s) OK
[Affinity] UtilityProcess spawn timeout 15:36:25.596 (5.0s)
[Cloudinary] UtilityProcess spawn timeout 15:36:25.597 (5.0s)
[PDF Tools] UtilityProcess spawn timeout 15:36:25.598 (5.0s)
[Context7] UtilityProcess spawn timeout 15:36:25.600 (5.0s)
3 servers enabled — 2 connect, the last in the queue times out:
[Filesystem] Server started and connected 16:13:33.237 (1.85s) OK
[PDF Tools] Server started and connected 16:13:35.037 (3.65s) OK
[Context7] UtilityProcess spawn timeout 16:13:36.415 (5.0s)
Toggling one connector restarts ALL enabled servers → cascade:
[Filesystem] Server started and connected 16:36:46.936 OK
[Filesystem] Server transport closed (intentional shutdown) 16:36:46.936
[Filesystem] Initializing server... 16:36:46.939
[PDF Tools] Server started and connected 16:36:48.731 OK
[PDF Tools] Server transport closed (intentional shutdown) 16:36:48.731
[Context7] UtilityProcess spawn timeout 16:36:50.188
[Filesystem] UtilityProcess spawn timeout 16:36:51.947
[PDF Tools] UtilityProcess spawn timeout 16:36:53.743
(cascade continues for every enabled server)
Under transient load, even a single server can exceed 5 s:
[Filesystem] Initializing server... 16:24:45.075
[Filesystem] UtilityProcess spawn timeout 16:24:50.089 (5.01s)
Steps to Reproduce
- On Windows, install 3 or more Node-type MCP extensions/connectors in Claude Desktop.
- Start Claude Desktop.
→ One or more servers fail with "Could not connect to MCP server X" / "MCP X: UtilityProcess spawn timeout". On this machine ~2 of 3 connect; the last in the spawn queue times out at exactly 5.0 s.
- Open Settings → Connectors and toggle a failed connector off then on to recover it.
- Observe that all enabled connectors restart ("Server transport closed — intentional shutdown") and previously-connected ones now show "Could not attach to MCP server X", cascading into more timeouts.
Expected Behavior
All enabled MCP servers should connect reliably at startup regardless of how many are configured, and recovering/toggling one connector should not tear down the others.
Suggested Fixes
- Make the spawn timeout configurable (env var or setting) and/or raise the 5 s default — it is too aggressive for Windows process-creation latency, especially under antivirus or I/O load.
- Stagger/serialize MCP server spawns at startup (or add a concurrency cap), with each server's timeout measured from its own spawn request rather than a shared start.
- Scope connector toggles so that enabling/disabling one connector (and opening the Connectors panel) does not tear down and re-spawn already-connected servers.
Related Issues
Note: This is a Claude Desktop bug; the repo tracks Desktop issues under the area:desktop label (e.g. #51143). This supersedes #61524, which was closed as out-of-scope. Suggested label: area:desktop.
Environment
Claude_1.8555.0.0_x64__pzs8sxrjxfjjc(Microsoft Store)What's Wrong?
On Windows, stdio/extension MCP servers intermittently fail at startup with "Could not connect to MCP server X" and "MCP X: UtilityProcess spawn timeout". After investigation (logs + the bundled
app.asar), the root cause is three independent, non-configurable issues:Root Cause 1 — Hardcoded 5 s spawn timeout
In
app/resources/app.asar(.vite/build/index.js), the UtilityProcess spawn timeout is a literal5e3ms and is not driven by any environment variable.MCP_TIMEOUT/MCP_CONNECT_TIMEOUT_MSonly affect the MCP protocol handshake, not the OS-level spawn:Root Cause 2 — Simultaneous spawn → serialization → queue-position failures
All enabled servers are started simultaneously at startup, but process creation then serializes (~1.8 s per server on a healthy SSD machine). Only ~2 servers fit inside the 5 s window; any server further back in the queue times out. Failure tracks queue position, not server weight — a ~7 MB server fails while a ~92 MB one succeeds in the same run.
Root Cause 3 — Toggling one connector restarts ALL enabled connectors
Opening the Connectors panel or toggling any connector emits
Server transport closed (intentional shutdown)for every enabled server, re-initializing them all. This turns the only visible in-app recovery action (toggle the failing server off/on) into a restart storm that knocks out already-connected servers.Antivirus exclusions (Norton Auto-Protect/SONAR) cut spawn time ~20% (e.g. 2.31 s → 1.85 s) but are not sufficient.
Error Messages / Logs
Steps to Reproduce
→ One or more servers fail with "Could not connect to MCP server X" / "MCP X: UtilityProcess spawn timeout". On this machine ~2 of 3 connect; the last in the spawn queue times out at exactly 5.0 s.
Expected Behavior
All enabled MCP servers should connect reliably at startup regardless of how many are configured, and recovering/toggling one connector should not tear down the others.
Suggested Fixes
Related Issues
UtilityProcess spawn timeoutsymptom; closed as invalid, no root-cause analysis).