MCP config files: paths & format
Where each MCP client reads its config, the exact JSON shape, and the gotchas. Every server page gives you a ready-to-paste snippet for all three clients.
Generate a multi-server config in one click.
Config generator →Claude Desktop
Official docs~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
}
}
}Cursor
Official docs~/.cursor/mcp.json{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
}
}
}Windsurf
Official docs~/.codeium/windsurf/mcp_config.json{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
}
}
}Good to know
- Restart the client (fully quit & reopen) after editing the config — changes don't hot-reload.
- Cursor shows a green dot per server in Settings → MCP when a server connects; a red dot means a bad command or missing secret.
- Cursor has a practical ceiling around 40 active MCP tools — enable only the servers you need.
- Local (stdio) servers run on your machine via npx/uvx/docker; remote (SSE/HTTP) servers connect to a hosted URL.
- Never commit secrets — put API keys in the config's env block or use a hosted/OAuth remote server.
- If npx/uvx isn't found, install Node.js (for npx) or uv (for uvx) first.
FAQ
Where is the Claude Desktop MCP config file?
~/Library/Application Support/Claude/claude_desktop_config.json on macOS (%APPDATA%\Claude\claude_desktop_config.json on Windows). Open it via Settings → Developer → Edit Config.
Where is the Cursor MCP config file?
~/.cursor/mcp.json for global servers, or .cursor/mcp.json inside a project for project-scoped servers.
Where is the Windsurf MCP config file?
~/.codeium/windsurf/mcp_config.json. Edit it from Cascade → the MCP/hammer icon → Configure.
Why isn't my MCP server showing up?
Most often: you didn't fully restart the client, the JSON has a syntax error (trailing comma / missing quote), or a required secret/path is missing. Validate the JSON and check the client's MCP status panel.