Bug Report: Claude Desktop spawns duplicate macos-mcp instances at launch, causing severe memory pressure
Summary
Claude Desktop launches 4 simultaneous instances of the macos-mcp extension on startup, despite only one extension registration existing in any user-editable config. The duplication consumes ~17 GB of memory and saturates CPU, making mid-tier Macs (24 GB RAM) unusable until manually killed.
Severity
High. On a 24 GB MacBook Pro M4, the 4× MCP duplication consumes 70% of available RAM at idle, triggers memory compression, and causes sustained 100% CPU on the macos-mcp processes. The fan runs at maximum continuously. This is reproducible after every Claude restart on the affected machine.
Environment
- Hardware: Apple M4 MacBook Pro, 24 GB RAM
- OS: macOS 26.4.1, build 25E253
- Claude Desktop: (version not exposed via
defaults read, please pull from app About dialog when escalating)
- Extension: macos-mcp v0.1.0 (CursorTouch, https://github.com/CursorTouch/MacOS-MCP), registered via Claude Extensions
- Plugins loaded: 11 plugin bundles in
/var/folders/.../claude-hostloop-plugins/
- Persisted Cowork sessions: 216 sub-sessions in
~/Library/Application Support/Claude/local-agent-mode-sessions/{uuid}/
- Relevant preference:
"launchPreviewPersistSession": true
Symptoms
After launching Claude Desktop:
- Activity Monitor shows 4 processes named
python3.12, each owned by user, each consuming 280–380 MB RSS (3–5 GB virtual size).
- Combined memory footprint of the 4 Python processes: ~17 GB
- Combined CPU: ~140% across the four chains, sustained
ps aux | grep macos-mcp | grep python | grep -v grep | wc -l returns 4, expected 1
- All 4 processes share the same parent PID (Claude main process) and start within a 1-second window of each other
- Each Python process is the leaf of a disclaimer → uv → python chain (3 processes per chain, 12 processes total across the 4 chains)
- Fan runs at full speed continuously, system becomes laggy, battery drains rapidly
Reproduction Steps
- Install Claude Desktop on macOS 26+ with 24 GB RAM
- Install the
macos-mcp extension (CursorTouch, cursortouch.macos-mcp)
- Use Cowork mode across multiple sessions over several days; do not delete persisted sessions
- Confirm
launchPreviewPersistSession: true in ~/Library/Application Support/Claude/claude_desktop_config.json (this is the default)
- Quit Claude (closing window is sufficient; symptoms persist whether quit via Cmd+Q or window close)
- Relaunch Claude
- Open Activity Monitor, sort by CPU, observe 4 python3.12 processes
- Run
ps aux | grep macos-mcp | grep python | grep -v grep
Diagnostic Evidence
The duplication is NOT in any user-editable config:
$ cat ~/Library/Application\ Support/Claude/Claude\ Extensions\ Settings/ant.dir.gh.cursortouch.macos-mcp.json
{
"isEnabled": true
}
Single registration. No array, no duplicates.
$ cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"obsidian-vault": { ... },
"ollama-bridge": { ... }
},
"preferences": {
"launchPreviewPersistSession": true,
...
}
}
macos-mcp is not listed in mcpServers. The two listed servers (obsidian-vault, ollama-bridge) only spawn one process each, as expected.
$ grep -lri 'macos-mcp\|cursortouch' /var/folders/.../claude-hostloop-plugins/
(no matches)
Eleven plugin bundles loaded, none reference macos-mcp.
$ ps -eo pid,ppid,etime,command | grep macos-mcp
1054 756 58:07 /Applications/Claude.app/Contents/Helpers/disclaimer ... uv ... run macos-mcp
1062 1054 58:07 /opt/homebrew/bin/uv ... run macos-mcp
1066 1062 58:06 /Users/mmh/.../macos-mcp/.venv/bin/python ... macos-mcp
1319 756 57:07 /Applications/Claude.app/Contents/Helpers/disclaimer ... uv ... run macos-mcp
1320 1319 57:07 /opt/homebrew/bin/uv ... run macos-mcp
1323 1320 57:07 /Users/mmh/.../macos-mcp/.venv/bin/python ... macos-mcp
1321 756 57:07 /Applications/Claude.app/Contents/Helpers/disclaimer ... uv ... run macos-mcp
1322 1321 57:07 /opt/homebrew/bin/uv ... run macos-mcp
1324 1322 57:07 /Users/mmh/.../macos-mcp/.venv/bin/python ... macos-mcp
1325 756 57:06 /Applications/Claude.app/Contents/Helpers/disclaimer ... uv ... run macos-mcp
1326 1325 57:06 /opt/homebrew/bin/uv ... run macos-mcp
1327 1326 57:06 /Users/mmh/.../macos-mcp/.venv/bin/python ... macos-mcp
Four chains, all PPID 756 (Claude main), all started within ~1 second.
Hypothesis
launchPreviewPersistSession: true causes Claude to rehydrate persisted Cowork sessions on launch. Each rehydrated session appears to spawn its own private instance of registered MCP servers rather than sharing a singleton. With 216 stored sub-sessions, even a small subset rehydrating creates the observed 4× duplication.
Workaround Currently Used
- After launch, manually identify orphan chains:
ps aux | grep macos-mcp | grep python
- Kill three of the four chains:
kill <PID1> <PID2> <PID3> (lose access to MCP if wrong chain killed)
- Optionally edit
claude_desktop_config.json to set launchPreviewPersistSession: false (loses session resume convenience)
- Always full-quit Claude with Cmd+Q from menu bar; closing window does not stop helpers
Suggested Fix
Either of:
A. Singleton MCP launcher. When multiple sessions reference the same MCP server, launch one shared instance and multiplex requests. This is the cleanest fix and matches user expectation that an MCP server is a service, not a per-session worker.
B. Lazy activation with idle reaping. Add lazy: true and idleTimeoutSeconds: 300 flags to MCP manifest schema. MCPs only spawn on first tool invocation in a session and shut down after idle. This is a broader feature request that addresses many users with 20+ MCPs on resource-constrained machines.
C. Defensive guard. At minimum, log a warning when the same MCP server is spawned more than once at startup, so users have visibility into what is happening. Better, refuse to spawn duplicates and log "already running" instead.
Impact on Anthropic
This bug is likely affecting many Cowork users with multiple persisted sessions and 16-24 GB Macs (the dominant consumer config). It manifests as "Claude makes my Mac hot and slow", which users may attribute to Claude generally rather than to a specific architectural issue. Fixing it will reduce support load and improve perceived product quality on mid-tier hardware.
How to Submit This Report
Three channels, in order of effectiveness:
-
Thumbs-down feedback inside Claude Desktop. Click thumbs-down on any response in this conversation (or the conversation where you observed the issue). When the feedback dialog appears, paste this entire report. This is the highest-signal channel because it carries the conversation context automatically.
-
Anthropic Support form. Go to https://support.anthropic.com and click "Submit a request" or use the contact form. Choose "Bug report" or "Technical issue" as the category. Paste this report in the description field.
-
GitHub. If the macos-mcp project is open source (it is: https://github.com/CursorTouch/MacOS-MCP), file an issue there as well, since they may want to add diagnostic logging on their side. Cross-reference the Anthropic ticket if you receive one.
If asked for additional info during triage:
- Run
defaults read com.anthropic.claudefordesktop and paste the output
- Run
ps -eo pid,ppid,etime,rss,command | grep macos-mcp and paste
- Provide the contents of
~/Library/Application Support/Claude/claude_desktop_config.json (redact any tokens)
- State the exact Claude Desktop version (Claude menu → About Claude)
Report prepared 2026-05-04. System: Apple M4 MacBook Pro, 24 GB RAM, macOS 26.4.1.
Bug Report: Claude Desktop spawns duplicate macos-mcp instances at launch, causing severe memory pressure
Summary
Claude Desktop launches 4 simultaneous instances of the
macos-mcpextension on startup, despite only one extension registration existing in any user-editable config. The duplication consumes ~17 GB of memory and saturates CPU, making mid-tier Macs (24 GB RAM) unusable until manually killed.Severity
High. On a 24 GB MacBook Pro M4, the 4× MCP duplication consumes 70% of available RAM at idle, triggers memory compression, and causes sustained 100% CPU on the macos-mcp processes. The fan runs at maximum continuously. This is reproducible after every Claude restart on the affected machine.
Environment
defaults read, please pull from app About dialog when escalating)/var/folders/.../claude-hostloop-plugins/~/Library/Application Support/Claude/local-agent-mode-sessions/{uuid}/"launchPreviewPersistSession": trueSymptoms
After launching Claude Desktop:
python3.12, each owned by user, each consuming 280–380 MB RSS (3–5 GB virtual size).ps aux | grep macos-mcp | grep python | grep -v grep | wc -lreturns 4, expected 1Reproduction Steps
macos-mcpextension (CursorTouch, cursortouch.macos-mcp)launchPreviewPersistSession: truein~/Library/Application Support/Claude/claude_desktop_config.json(this is the default)ps aux | grep macos-mcp | grep python | grep -v grepDiagnostic Evidence
The duplication is NOT in any user-editable config:
Single registration. No array, no duplicates.
macos-mcpis not listed inmcpServers. The two listed servers (obsidian-vault, ollama-bridge) only spawn one process each, as expected.Eleven plugin bundles loaded, none reference macos-mcp.
Four chains, all PPID 756 (Claude main), all started within ~1 second.
Hypothesis
launchPreviewPersistSession: truecauses Claude to rehydrate persisted Cowork sessions on launch. Each rehydrated session appears to spawn its own private instance of registered MCP servers rather than sharing a singleton. With 216 stored sub-sessions, even a small subset rehydrating creates the observed 4× duplication.Workaround Currently Used
ps aux | grep macos-mcp | grep pythonkill <PID1> <PID2> <PID3>(lose access to MCP if wrong chain killed)claude_desktop_config.jsonto setlaunchPreviewPersistSession: false(loses session resume convenience)Suggested Fix
Either of:
A. Singleton MCP launcher. When multiple sessions reference the same MCP server, launch one shared instance and multiplex requests. This is the cleanest fix and matches user expectation that an MCP server is a service, not a per-session worker.
B. Lazy activation with idle reaping. Add
lazy: trueandidleTimeoutSeconds: 300flags to MCP manifest schema. MCPs only spawn on first tool invocation in a session and shut down after idle. This is a broader feature request that addresses many users with 20+ MCPs on resource-constrained machines.C. Defensive guard. At minimum, log a warning when the same MCP server is spawned more than once at startup, so users have visibility into what is happening. Better, refuse to spawn duplicates and log "already running" instead.
Impact on Anthropic
This bug is likely affecting many Cowork users with multiple persisted sessions and 16-24 GB Macs (the dominant consumer config). It manifests as "Claude makes my Mac hot and slow", which users may attribute to Claude generally rather than to a specific architectural issue. Fixing it will reduce support load and improve perceived product quality on mid-tier hardware.
How to Submit This Report
Three channels, in order of effectiveness:
Thumbs-down feedback inside Claude Desktop. Click thumbs-down on any response in this conversation (or the conversation where you observed the issue). When the feedback dialog appears, paste this entire report. This is the highest-signal channel because it carries the conversation context automatically.
Anthropic Support form. Go to https://support.anthropic.com and click "Submit a request" or use the contact form. Choose "Bug report" or "Technical issue" as the category. Paste this report in the description field.
GitHub. If the macos-mcp project is open source (it is: https://github.com/CursorTouch/MacOS-MCP), file an issue there as well, since they may want to add diagnostic logging on their side. Cross-reference the Anthropic ticket if you receive one.
If asked for additional info during triage:
defaults read com.anthropic.claudefordesktopand paste the outputps -eo pid,ppid,etime,rss,command | grep macos-mcpand paste~/Library/Application Support/Claude/claude_desktop_config.json(redact any tokens)Report prepared 2026-05-04. System: Apple M4 MacBook Pro, 24 GB RAM, macOS 26.4.1.