The hidden multiplier
You ask Cursor: "Fix the bug in the auth flow." What happens next, behind the scenes:
filesystem/list_dironsrc/auth— 1 callfilesystem/read_filefor each candidate file — 8-15 callsgithub/get_recent_commitsto find when it last worked — 1 callgithub/get_pr_diffon relevant PRs — 3-5 callsbrave-searchfor error messages — 2-4 callsfetchon Stack Overflow links — 4-8 calls- Composer chat completions interleaved with all of the above — 4-8 round trips
Total: 20-40 tool calls for one user prompt. Each call is billed for the input context it brings and the output payload it returns. The chat completion you see in the UI is only 15-25% of the actual cost.
Real Cursor user breakdown
Average split across heavy Cursor users in the MCPSpend dataset:
| MCP server | % of monthly cost | Notes |
|---|---|---|
| playwright (when enabled) | 30-50% | Largest single driver when used at all |
| filesystem | 15-25% | High call frequency, moderate per-call cost |
| fetch / read-url | 10-20% | Full-page reads can balloon |
| github | 8-15% | Diff sizes are unpredictable |
| brave-search / web-search | 5-10% | Cheap per call but called often |
| postgres / database tools | 3-8% | Schema introspection + queries |
Where Cursor's config lives
Cursor stores MCP server configs in two places:
- Workspace-scoped:
.vscode/mcp.jsonin your project root (Cursor is a VS Code fork — reads the same path) - User-scoped:
~/Library/Application Support/Cursor/User/mcp.jsonon Mac,%APPDATA%\Cursor\User\mcp.jsonon Windows
Optimization checklist (in order of ROI)
- Disable Playwright when not browsing. Toggle in Composer settings or set
"enabled": falsein mcp.json for the entry. Re-enable for browser-heavy tasks. - Cap file-read sizes. Most filesystem MCP servers accept
--max-bytes. 50KB is usually enough. - Use Cursor Background agents on Haiku, not Sonnet. Set
cursor.background.modeltoclaude-haiku-4-5for routine background work — 4× cheaper. - Pin
brave-searchto specific tasks. If your work doesn't need web search, remove it from the config — it adds calls even when you don't expect. - Add a per-workspace budget alert. $20/week per workspace is a sensible default. Get a Slack/email ping at 80%.
Track your own Cursor spend in 60 seconds
Install the proxy — it auto-detects Cursor at both config paths and wraps every entry transparently:
npx --yes @mcpspend/proxy@latest init --key mcps_live_xxx
Restart Cursor → trigger any Composer action → calls appear in the MCPSpend dashboard in < 30 seconds.
Free tier covers 25,000 calls per month — enough for a single heavy Cursor user. No card required.