Claude Desktop vs Cursor: MCP Config Differences
Side-by-side comparison of how Claude Desktop and Cursor read mcpServers — file paths, scope (project vs global), and SSE support.
Detailed Explanation
Same JSON Shape, Different Conventions
Both clients use the mcpServers top-level key and the same { command, args, env } per-entry shape. The differences are operational.
File location
| Client | Scope | Path |
|---|---|---|
| Claude Desktop | Per-user (only one) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | Project | .cursor/mcp.json (in repo root) |
| Cursor | User (global) | ~/.cursor/mcp.json |
Cursor's project-level config is huge for teams: commit .cursor/mcp.json (with secrets in env-var references, not literals) so every developer gets the same servers.
Reload behaviour
- Claude Desktop: requires a full app restart to pick up config changes.
- Cursor: reload via Command Palette → "MCP: Reload Configuration", no restart needed.
Transport support
- Claude Desktop: stdio only (use mcp-remote to bridge remote servers).
- Cursor: stdio + native SSE via the
urlfield.
Tool approval UX
- Claude Desktop: prompts per tool call by default. Approval can be remembered per tool or per server.
- Cursor: shows tool calls inline in the chat with a one-click "Run" button; approvals are session-scoped.
Debugging
- Claude Desktop: logs at
~/Library/Logs/Claude/mcp*.log(one file per server, written even when servers crash on launch). - Cursor: errors surface in the Output panel under the MCP dropdown.
Same JSON works in both
Because the per-entry shape is identical, you can copy the output of this generator from one client to another with no edits — only the file location differs.
Use Case
Deciding whether to standardize on Claude Desktop or Cursor for a team. Cursor's per-project mcp.json wins for shared, version-controlled tool configs; Claude Desktop's broader OS support (Windows + macOS + Linux) wins for individual users.