MCP auto-start causes macOS syspolicyd/trustd CPU spikes on Cursor launch

Where does the bug appear (feature/product)?
Cursor IDE

Describe the Bug
Opening Cursor appears to eagerly start configured MCP servers even when I am not actively using those tools. Several configured MCP servers use npx / at-latest package references, which creates transient Node/npm execution paths under ~/.npm/_npx/… On macOS this triggers repeated Gatekeeper / code-signing / certificate trust evaluation, and the visible CPU spike shows up mostly under syspolicyd, trustd, securityd, WindowServer, and kernel_task rather than under Cursor alone. The machine can become unusable for several minutes after launching Cursor.

Steps to Reproduce

  1. Configure several MCP servers in ~/.cursor/mcp.json, including npx-based entries such as Playwright MCP, context7, chrome-devtools-mcp, xcodebuildmcp, vscode-mcp-server, and desktop-commander.
  2. Quit Cursor.
  3. Open Cursor.
  4. Without invoking any MCP tool, observe process startup and macOS CPU usage.
  5. In Activity Monitor / top, observe Cursor Helper: mcp-process plus many npm exec / node ~/.npm/_npx/… MCP processes.
  6. During the launch spike, observe syspolicyd/trustd/securityd CPU activity and repeated trust/certificate evaluation in system logs.

Expected Behavior
Cursor should not eagerly start every configured MCP server on app launch. MCP servers should be lazy-started only when a tool from that server is invoked, or Cursor should provide a per-MCP auto-start vs manual/lazy toggle. Cursor should also warn when an MCP command uses npx, at-latest package references, remote package references, or unstable transient execution paths that can trigger repeated macOS trust evaluation.

Operating System
MacOS

Version Information
Cursor IDE Version: 3.7.12
Operating System: macOS 26.5 (25F71)
Hardware: Apple M3, 8 cores
MCP configured in ~/.cursor/mcp.json

For AI issues: which model did you use?
N/A

For AI issues: add Request ID with privacy disabled
N/A

Additional Information
Observed examples of auto-started processes:

  • Cursor Helper: mcp-process
  • npm exec playwright MCP latest package
  • npm exec context7 MCP latest package
  • npm exec vscode-mcp-server
  • npm exec chrome-devtools-mcp version 0.26.0
  • npm exec xcodebuildmcp latest package mcp
  • npm exec desktop-commander
  • node ~/.npm/_npx/…/node_modules/.bin/playwright-mcp
  • node ~/.npm/_npx/…/node_modules/.bin/context7-mcp
  • node ~/.npm/_npx/…/node_modules/.bin/xcodebuildmcp

During one spike:

  • Load Avg: 127.63 / 69.88 / 50.93
  • CPU usage: 65.07% user, 34.92% sys, 0.0% idle
  • syspolicyd: 96.5%
  • trustd: 35.1%
  • WindowServer: 31.8%
  • kernel_task: 38.2%

System logs showed repeated SecTrustEvaluateIfNecessary, SecKeyVerifySignature, syspolicyd CFNetwork status 200 requests, and trustd OCSP/certificate validation activity.

Workaround: manually remove unused MCP entries from ~/.cursor/mcp.json, especially npx / latest-package based servers. This helps, but it is not discoverable and requires editing JSON directly. Please do not ask users to paste raw mcp.json because it commonly contains API tokens.

Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor

Hey, thanks for the detailed report. The logs and the exact description of the Gatekeeper amplification really help.

Confirmed: right now Cursor starts all enabled MCP servers on launch. There is no lazy start start only when a tool is called, and there is no per-server auto-start toggle yet. So your observation is correct, and on macOS npx and @latest servers really do add extra work for syspolicyd and trustd.

What you can do right now, without editing JSON manually:

  • Open Settings > MCP and turn off the servers you do not use all the time. Disabled servers will not start until you turn them back on. This is easier and safer than removing entries from mcp.json, and you do not need to touch the tokens file.
  • Where possible, replace npx ...@latest with running a globally installed binary with a pinned version. That way macOS will not re-check a new transient binary under ~/.npm/_npx/ every time.

Your request for lazy start or on-demand start, plus a warning about npx and @latest commands, makes sense. I will pass it to the team as a feature request.

Let me know if turning servers off with the toggle does not remove the spikes, and we will dig deeper.

Hey @Jotlarson. Circling back on the MCP auto-start CPU spikes.

After you turn off the MCP servers in Settings > MCP that you don’t use all the time disabled servers won’t start on launch do you still see syspolicyd or trustd spikes when opening Cursor?

If that fixed it, no need to reply. If not, let me know and we’ll dig deeper.

On lazy-start or a per-server auto-start toggle and the warning about npx and @latest, I passed the request to the team, but it’s not currently on the roadmap, so I can’t share an ETA. For now, the most reliable path is to disable unused servers and, where possible, run a globally installed binary with a pinned version instead of npx ...@latest, so macOS doesn’t re-check a new transient binary under ~/.npm/_npx/ on every launch.