Skip to content

macos-mcp instances at launch bug #4

@malikmubashir

Description

@malikmubashir

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:

  1. Activity Monitor shows 4 processes named python3.12, each owned by user, each consuming 280–380 MB RSS (3–5 GB virtual size).
  2. Combined memory footprint of the 4 Python processes: ~17 GB
  3. Combined CPU: ~140% across the four chains, sustained
  4. ps aux | grep macos-mcp | grep python | grep -v grep | wc -l returns 4, expected 1
  5. All 4 processes share the same parent PID (Claude main process) and start within a 1-second window of each other
  6. Each Python process is the leaf of a disclaimer → uv → python chain (3 processes per chain, 12 processes total across the 4 chains)
  7. Fan runs at full speed continuously, system becomes laggy, battery drains rapidly

Reproduction Steps

  1. Install Claude Desktop on macOS 26+ with 24 GB RAM
  2. Install the macos-mcp extension (CursorTouch, cursortouch.macos-mcp)
  3. Use Cowork mode across multiple sessions over several days; do not delete persisted sessions
  4. Confirm launchPreviewPersistSession: true in ~/Library/Application Support/Claude/claude_desktop_config.json (this is the default)
  5. Quit Claude (closing window is sufficient; symptoms persist whether quit via Cmd+Q or window close)
  6. Relaunch Claude
  7. Open Activity Monitor, sort by CPU, observe 4 python3.12 processes
  8. 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

  1. After launch, manually identify orphan chains: ps aux | grep macos-mcp | grep python
  2. Kill three of the four chains: kill <PID1> <PID2> <PID3> (lose access to MCP if wrong chain killed)
  3. Optionally edit claude_desktop_config.json to set launchPreviewPersistSession: false (loses session resume convenience)
  4. 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:

  1. 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.

  2. 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.

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions