MCP config generator
Choose a client and the servers you want. You get the config in the exact shape that client expects, the matching CLI commands where it has them, and a warning for anything it can't run.
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
},
"playwright": {
"type": "stdio",
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Or add them from the command line
claude mcp add --transport http --scope project github https://api.githubcopilot.com/mcp/
claude mcp add --transport http --scope project context7 https://mcp.context7.com/mcp
claude mcp add --scope project playwright -- npx @playwright/mcp@latest
How the output works
Hosted or local
A hosted server is a URL the client reaches over Streamable HTTP; the vendor runs it and nothing is installed. A local server starts as a child process through npx, uvx or docker and runs with your machine's access. When a server offers both, the generator picks hosted first and lets you switch.
Secrets stay out of the file
The generator never writes a real key. It uses each client's own reference syntax: ${VAR} in Claude Code, ${env:VAR} in Cursor and Windsurf, an inputs prompt in VS Code, $VAR in Gemini CLI, env_vars in Codex and ${{ secrets.VAR }} in Continue. Other clients get a <VAR> placeholder for you to fill in.
OAuth on first use
Most hosted servers here sign you in with OAuth. The client opens a browser the first time it connects, or when you run its login step: /mcp in Claude Code, codex mcp login, devin mcp login or openclaw mcp login. Slack, Asana and HubSpot accept only pre-registered clients, so check that yours is supported.
Reload after editing
Claude Desktop reads its file at start-up, so quit and reopen it after a change; its logs are in ~/Library/Logs/Claude on macOS. If a new server doesn't appear in another client, restart it or reload the window. In OpenClaw, openclaw mcp doctor <name> --probe tests a single server.
Config questions
Where does mcp.json go for Cursor and Claude Code?
Cursor reads .cursor/mcp.json in the project or ~/.cursor/mcp.json for every project. Claude Code reads .mcp.json at the repository root for project scope and keeps local and user scope in ~/.claude.json. VS Code uses .vscode/mcp.json, and Codex uses ~/.codex/config.toml instead of JSON.
Why won't a remote server load from claude_desktop_config.json?
Claude Desktop takes only local servers from that file. Remote servers have to be added as custom connectors under Settings > Connectors, where you paste the URL and sign in. The generator lists those URLs separately for that reason.
How do I keep API keys out of a committed .mcp.json?
Reference an environment variable instead of pasting the key. Claude Code expands ${VAR} and ${VAR:-default}, Cursor expands ${env:NAME}, and VS Code can prompt for a secret through an inputs entry. Set the variable in your shell or secret manager before starting the client.
Can I reuse one MCP config across clients?
Not unchanged: the top-level key is mcpServers in most clients but servers in .vscode/mcp.json, context_servers in Zed and mcp_servers tables in Codex. Some clients import others' files: VS Code discovers Claude Desktop, Cursor and Windsurf configs, Continue accepts a dropped-in mcp.json, and JetBrains AI Assistant has an Import from Claude option.
Why does npx fail in Claude Desktop on Windows?
The MCP servers README runs npx through cmd on Windows: command cmd, with /c, npx and the package as arguments. The generator applies that wrapper automatically when you choose Claude Desktop and Windows.
Should I use the hosted or the local version of a server?
Hosted is simpler: no runtime to install, and OAuth replaces long-lived tokens on disk. Local makes sense when the server needs files or credentials on your machine, or when no hosted endpoint exists, as with Filesystem, Playwright or the AWS API server.