Cognition
Add MCP servers to Windsurf / Devin Desktop
Windsurf is now Devin Desktop. It reads mcp_config.json, and its official docs disagree on where that file lives.
- macOS
~/.config/devin/mcp_config.json (current Cascade doc); legacy ~/.codeium/windsurf/mcp_config.json; FAQ says ~/.codeium/mcp_config.json- Windows
%APPDATA%\devin\mcp_config.json (current Cascade doc)- Linux
~/.config/devin/mcp_config.json (or $XDG_CONFIG_HOME/devin/mcp_config.json)- Project file
.devin/mcp_config.json (Devin CLI / Devin Local project scope)- Top-level key
mcpServers- Format
- json
- OAuth for remote servers
- Yes
Example config
This example adds GitHub's hosted server and Playwright as a local server, in the shape this client expects.
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"transport": "http"
},
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
devin mcp add github https://api.githubcopilot.com/mcp/
devin mcp add playwright -- npx @playwright/mcp@latest
Notes and quirks
- Windsurf was renamed Devin Desktop on 2026-06-02, and Devin Local is now the default agent.
- The Cascade docs give ~/.config/devin/mcp_config.json, the FAQ says ~/.codeium/mcp_config.json, and the legacy path is ~/.codeium/windsurf/mcp_config.json. Check which one your build reads.
- Devin Local adds project scopes in .devin/mcp_config.json and .devin/mcp_config.local.json.
- Remote entries take url, transport http or sse, headers, oauthClientId, oauthClientSecret and oauthResource; Cascade also accepts serverUrl.
- Values can use ${env:VAR} and ${file:path}, and Cascade caps you at 100 tools.
Build a Windsurf / Devin Desktop config →
Other clients
Claude DesktopClaude CodeCursorVS Code (GitHub Copilot)ZedOpenAI Codex CLIGemini CLIChatGPTOpenClawClineContinueJetBrains AI Assistant