MCP Config Validator (Free)

One command tells you why an MCP server isn't loading in Claude Code, Claude Desktop, Cursor or VS Code, and another converts the config for a different client.

MCP Config Validator (Free) cover

Formats it checks

Validate MCP server configuration files before you restart your client and wonder why a server didn't load, and convert a config from one client's format to another's.

ClientFileTop-level key
Claude Code.mcp.json (project), ~/.claude.jsonmcpServers
Claude Desktopclaude_desktop_config.jsonmcpServers (local stdio servers only)
Cursor.cursor/mcp.json, ~/.cursor/mcp.jsonmcpServers
VS Code.vscode/mcp.jsonservers (+ inputs)
python3 mcp_config_check.py check .mcp.json .cursor/mcp.json .vscode/mcp.json
python3 mcp_config_check.py check ~/Library/Application\ Support/Claude/claude_desktop_config.json --which
python3 mcp_config_check.py check mcp.json --client cursor --json
python3 mcp_config_check.py convert .cursor/mcp.json --to claude-code > .mcp.json

The client is detected from the file name (--client to override). --which also checks that each command exists on your PATH. Exit 1 on errors. Python 3.9+, standard library only, offline. ./demo.sh runs it on the examples; ./run_tests.sh runs 13 test groups.

What you get

The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 13 tests OK on Python 3.13 and 3.10.

Real terminal output from MCP Config Validator: demo and passing tests

What it catches

  • Claude Code: a url with no type (Claude Code reads it as stdio and skips it), unknown types (streamable-http is accepted as http), type: "sdk", ${env:X} (Cursor/VS Code syntax) instead of ${X} / ${X:-default}, ${CLAUDE_PROJECT_DIR} without a default in command/args
  • Claude Desktop: remote url servers (the JSON file only starts local servers; use Settings > Connectors or a local bridge), relative script paths
  • Cursor: envFile on a remote server (stdio only), ${VAR} instead of ${env:VAR}
  • VS Code: mcpServers instead of servers, ${input:id} with no matching inputs entry, missing type
  • All: invalid JSON with line/column, comments and trailing commas, a whole command line in command ("npx server ."), npx without -y (can hang on the install prompt), @latest packages, non-array args, non-string env, plain http:// to remote hosts, /sse URLs marked as http, hard-coded tokens in files that get committed, the same server in several files, commands not on PATH

Convert between clients

convert rewrites the top-level key, adds or removes type, and translates variables: ${VAR} <-> ${env:VAR}, ${CLAUDE_PROJECT_DIR:-.} <-> ${workspaceFolder}. Remote servers are skipped for Claude Desktop with a note; envFile is dropped where it isn't supported, with a note. Review the output before using it.

Honest limits

Checks the documented formats as of November 2026 (Claude Code, Cursor and VS Code docs); clients add fields often. It can't tell whether a server itself works; start it once to confirm. Unknown extra fields are left alone.

Format and license

Zip, 12 KB, v1.0, 11 files. Free to use, modify and share for any purpose, including commercial work, as long as this notice stays in copies. Not affiliated with or endorsed by Anthropic, Cursor (Anysphere) or Microsoft.

FAQ

Is it free?
Yes.
Does it start the servers?
No, it checks the config offline; --which checks commands exist on PATH.
Why doesn't a url work in claude_desktop_config.json?
That file only starts local servers; add remote servers in Settings > Connectors.
How do I get the files?
Click Download free. The zip downloads straight away: no checkout, no account.
Do I have to sign up for the newsletter?
No. The form is optional and the download works without it.

Get MCP Config Validator (Free)

Free MCP config validator and converter: check .mcp.json, .cursor/mcp.json, .vscode/mcp.json and claude_desktop_config.json for the mistakes that make servers silently fail.

Pairs well with

Download$12

Cursor Rules for Next.js

11 Cursor rules for Next.js (Server/Client Components and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.

View Cursor Rules for Next.js
DownloadFree

Next.js Cursor Rules Starter (Free)

Free Next.js Cursor rules in .mdc format, checked against current Next.js docs, plus a linter that shows why a rule isn't applying.

View Next.js Cursor Rules Starter (Free)
Download$12

Cursor Rules for Django

10 Cursor rules for Django (models and N+1 and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.

View Cursor Rules for Django

Related