← knowledge.oriz.in

MCP-server sprawl caused 194 GB commit hang; cull + tool-search fix

decision mcpperformancewindowshangcommit-limitnode-processes

Symptoms

Root cause

345 node.exe (peak 480) processes. Total 157 GB private commit.

Each was a stdio MCP server spawned via npx -y <server>. Two nodes per server (npx-cli parent + child). Multiple CC / OpenCode / Kilo sessions accumulated them; unclean shutdown left orphans.

Sample parents: foam-cli, mermaid-mcp-server, mcp-doctor, one-search-mcp, open-websearch, resend-mcp, crawl-mcp, ref-tools, context7. All of these lazy-load on demand under ENABLE_TOOL_SEARCH=auto, but sibling agents were spawning them all on connect.

Fix

Step Command Effect
Kill orphan node with MCP-shaped cmdline Get-CimInstance Win32_Process -Filter "Name = 'node.exe'" | Stop-Process (filtered by npx-cli/mcp/foam/etc. regex, kept Raycast + cavemem workers) 480 → 5 node procs, -189 GB commit
Remove HKCU duplicate autostarts Remove-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Run for Docker Desktop, electron.app.LM Studio, screenpipe - Development Killed dupe launches
Kill dev-server autostart shortcut Removed freellmapi Dev.lnk + screenpipe-start.bat from Startup folder Kept OmniRoute Dev.lnk per user pick
Disable deprecated Hr tasks Disable-ScheduledTask on Oriz-Headroom-Login, DockerHeadroomEnsure, HeadroomWatchdog Hr chain removed 2026-07-03; tasks were still armed
Add Smithery toolbox to OpenCode mcp Mirrored Kilo's toolbox config into ~/.config/opencode/opencode.jsonc Lazy schema loading across full fleet

Result

Preventive rules

Elevated follow-up (user runs manually)

Pagefile is still fixed 43 GB alloc / 174 GB commit limit for 128 GB RAM. To switch to system-managed, run once from an elevated PowerShell:

$cs = Get-CimInstance Win32_ComputerSystem; Set-CimInstance -InputObject $cs -Property @{AutomaticManagedPagefile = $true}

Requires reboot to take full effect. Not strictly needed now that commit is 37% of limit.

Cross-refs