All tools

MCP Config Converter

Convert MCP server configs between Claude Desktop, Cursor, Claude Code, VS Code, Codex CLI (TOML), Windsurf, Gemini CLI, and Cline. Pick a source and target, paste your config, copy the result.

Your config never leaves your browser. No upload. No signup.
Paste your claude_desktop_config.json
Runs in your browser. Nothing uploaded.
0 chars
Paste your claude_desktop_config.json to convert it to mcp.json, or click to see how it works.

Popular conversions

Each pair below has its own page with conversion notes specific to that direction:

What this converter handles

  • Top-level key rename: mcpServersservers (VS Code) ↔ [mcp_servers.x] (Codex)
  • JSON ↔ TOML structural conversion (Codex CLI is the only TOML format)
  • type field auto-inference for VS Code (stdio/http/sse)
  • URL aliases: serverUrl (Windsurf), httpUrl (Gemini CLI), url (everyone else)
  • Common fields: command, args, env, headers — preserved across all 8 formats
  • Format-specific extras (envFile, oauth, alwaysAllow, snake_case timeouts) — carried through with warnings

Why this exists

MCP clients each chose slightly different config schemas. The same filesystem server has to be expressed as JSON under mcpServers for Claude Desktop / Cursor / Cline / Windsurf, JSON under servers with an explicit type field for VS Code Copilot, and TOML [mcp_servers.<id>] tables for OpenAI Codex CLI. The structural conversions are mechanical but tedious — and the silent-failure modes (mcpServers vs servers, JSON vs TOML, missing type field) eat hours.

Vendors don't ship a neutral translator. Anthropic's claude mcp add-from-claude-desktop is one-way only (Claude Desktop → Claude Code). Cursor, VS Code, and Codex offer no MCP import flow at all. So users either rewrite manually (5 minutes per server, error-prone) or run a sync tool (different product than what most need). This converter handles the one-shot case in the browser.

Frequently asked

Is my config sent to your server?
No. The converter runs entirely in your browser as JavaScript. Your config — and any API keys / tokens it contains — never leaves your machine. Open DevTools → Network during conversion to confirm: zero outbound requests.
Which formats does this converter support?
Eight: Claude Desktop (mcpServers JSON), Cursor (mcpServers JSON + type:'stdio'), Claude Code (.mcp.json), VS Code Copilot (servers JSON + type enum), Codex CLI (config.toml [mcp_servers.<id>] tables), Windsurf (mcpServers JSON, accepts serverUrl alias), Gemini CLI (mcpServers JSON inside settings.json, distinguishes httpUrl vs url), and Cline (mcpServers JSON + disabled/alwaysAllow extensions).
What about format-specific fields like Codex's bearer_token_env_var or Cline's alwaysAllow?
Common fields (command, args, env, url, headers) translate cleanly across all formats. Format-specific extras (envFile for Cursor, oauth blocks for Claude Code, snake_case timeouts for Codex, alwaysAllow for Cline, httpUrl precedence for Gemini) are carried through verbatim with a warning when the target format may not understand them — so you can review and decide.
How does the JSON ↔ TOML conversion work for Codex CLI?
Each server entry becomes a `[mcp_servers.<id>]` TOML table. JSON object values (env, headers) become TOML inline tables: `env = { K = "v" }`. Arrays use the same syntax in both. Snake_case Codex-specific fields (startup_timeout_sec, bearer_token_env_var, etc.) aren't auto-generated — add them after if you need them.
Why does VS Code's converted output look different (servers vs mcpServers)?
VS Code Copilot uses `servers` as the top-level key, not `mcpServers` — and silently fails if you copy the wrong key. It also requires an explicit `type` field (`stdio` / `http` / `sse`) on every server. The converter does both renames automatically, infers the type from `command` vs `url`, and warns when type can't be inferred.
Can I use this for the reverse direction (e.g., Cursor → Claude Desktop)?
Yes. Pick any source and any target from the dropdowns. Cursor → Claude Desktop drops Cursor's `type` field and warns on Cursor-only fields (envFile, auth) the target doesn't recognize.
Is this an official Anthropic / OpenAI / Microsoft tool?
No. MCP.Directory is an independent directory of MCP servers and Claude Skills. We built this converter because users kept asking how to migrate configs between clients — vendors don't ship a neutral translator. The conversion logic is grounded in each vendor's official config docs (cited per-format).
Does it preserve credentials / API keys verbatim?
Yes — env values pass through unchanged. We recommend you redact secrets before screenshotting or sharing the output. The validator pages (linked below) include a one-click 'Redact secrets' button if you need it.

Validate before you ship

After converting, paste the output into the matching validator to check it loads correctly in the target client.