Cursor MCP Config Validator
Paste your Cursor mcp.json (global at ~/.cursor/mcp.json or project at .cursor/mcp.json) to find why MCP servers aren't loading. Runs in your browser.
mcp.jsonPaste your mcp.json above to run deterministic checks.
Or click to see how it works.
What this validator checks
- •JSON syntax + line/column on errors
- •UTF-8 BOM, smart quotes, trailing commas
- •Top-level
mcpServersobject shape - •
type:"stdio"field on stdio entries (Cursor docs) - •Per-server
command/url/argsshape - •Env-var values must be strings (not booleans or numbers)
- •Windows backslash escapes in paths
- •Insecure HTTP for non-local URLs
- •API key / token leak detection (warn-only)
- •Duplicate / case-conflict server names
- •Both transports set (command + url collision)
- •Common command typos (npx, uvx, node, python on PATH)
Why this exists
Cursor's MCP support uses a documented schema with stricter conventions than Claude Desktop's — type: "stdio" is documented as the way to declare stdio transport, and the file lives at one of two paths (~/.cursor/mcp.json for all projects or .cursor/mcp.json for one).
In practice, the most common silent failure is editing the wrong scope: a server is in your global config but you expected the project to inherit it (or vice versa). The second most common is JSON syntax errors after pasting a snippet from documentation — smart quotes from Notion, trailing commas from JS habit. The validator catches both before you launch.
Frequently asked
Where does Cursor read mcp.json from?▼
Why does the validator flag missing "type":"stdio"?▼
Can I use my Claude Desktop config in Cursor?▼
Does Cursor support remote MCP servers with OAuth?▼
Why isn't my Cursor MCP server connecting after I edit mcp.json?▼
Is my config sent to your server?▼
Does this validator work for the Cursor `~/.cursor/mcp.json` AND project `.cursor/mcp.json`?▼
Spotted a check we should add?
Open an issue on the directory, or browse the 2,000+ MCP servers for ones with known good configs you can copy.