Tool
MCP config generator and validator
Validate an existing MCP config or generate a correct one for Claude Desktop, Claude Code, Cursor, VS Code, Devin/Windsurf, Gemini CLI, Zed or Codex — entirely in your browser.
Validate
Processing: entirely in this browser tab — nothing is sent or stored. Do not paste real keys or credentials — sample data is fictional.
Generate
Migrate
Processing: converted locally in this tab — nothing is sent, stored or put into a URL. Do not paste real keys or credentials.
Config file per client
| Client | Root key | File location |
|---|---|---|
| Claude Desktop | mcpServers |
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code | mcpServers |
project: .mcp.json at repo root · user: ~/.claude.json |
| Cursor | mcpServers |
global: ~/.cursor/mcp.json · project: .cursor/mcp.json |
| VS Code | servers |
workspace: .vscode/mcp.json · user: ~/Library/Application Support/Code/User/mcp.json (macOS) |
| Devin / Windsurf | mcpServers |
macOS/Linux: ~/.config/devin/mcp_config.json · Windows: %APPDATA%\devin\mcp_config.json · legacy Windsurf: ~/.codeium/windsurf/mcp_config.json |
| Gemini CLI | mcpServers |
global: ~/.gemini/settings.json · project: .gemini/settings.json |
| Zed | context_servers |
context_servers key inside ~/.config/zed/settings.json |
| Codex | mcp_servers (TOML) |
~/.codex/config.toml (TOML, not JSON) |
What the validator checks
First, real syntax — JSON configs are checked for trailing commas, comments and single quotes with their position; when Codex is selected the same pane parses TOML instead and reports the offending line. Then structure: the root object must hold the key your client actually reads (mcpServers for most, servers for VS Code, context_servers for Zed, mcp_servers for Codex), and each server needs either command (local stdio) or url (remote) — never both, never neither.
Field types are verified too: args as a list of strings, env and headers as key/value objects, transport values inside the supported set. Entries that look like hardcoded secrets get flagged so they end up in env references instead of committed files. Nothing is sent anywhere — the check runs in this tab.
FAQ
Why does the same JSON work in Cursor but not VS Code?
The top-level key differs. Claude Desktop, Cursor, Claude Code, Gemini CLI and Devin/Windsurf all read mcpServers; VS Code reads servers; Zed reads context_servers; Codex does not read JSON at all — it wants TOML. A config that silently does nothing is usually a wrong root key.
What is the difference between command and url servers?
command launches a local stdio process (npx, uvx, a binary path) and talks over stdin/stdout; url connects to a remote server over HTTP or SSE. A server entry must have exactly one of them — both or neither is invalid.
Where should API keys go?
Into the server's env object, not into the args list, and preferably as an environment variable the client expands rather than a hardcoded secret — this validator flags values that look like live keys. Never commit a filled config to a shared repo.
I edited the file but the tools do not appear — now what?
Fully quit and reopen the client (the menu-bar process keeps running after you close the window), then check the client's MCP log. For stdio servers, run the command yourself in a terminal first — most 'broken MCP' cases are a command that fails outside the client too.