How to Add a Remote MCP Server to Windsurf (Devin Desktop)
Where Devin Desktop keeps its MCP config after the Windsurf rename, which config key to use for a remote server, the legacy-Cascade versus Devin Local split, and the enterprise gate that ships MCP off by default.
Last verified August 15, 2026
How do I add a remote MCP server to Windsurf?
Check which agent you are configuring — that decision comes before the config. Cognition's docs flag Devin Local as the default agent for new tabs, and the two agents read different files and use different key names:
- Legacy Cascade — Devin Settings → Cascade → MCP Servers, config at
~/.codeium/windsurf/mcp_config.json, keyserverUrl(orurl). - Devin Local — its own config files, key
url.serverUrldoes not appear in Devin Local's documentation at all.
A server added for one will not appear in the other. On a current install, that mismatch — not the key name — is the likeliest reason a server is missing.
The naming, first, because it is confusing
Windsurf became Devin Desktop on June 2, 2026, when Cognition consolidated its product line. It is the same product with the same config file — only the name and the docs location changed.
This guide uses the current menu labels. If your build says "Windsurf Settings" instead of "Devin Settings," you are on an older release and everything else below still applies.
Where the setting lives
- Open Devin Settings — from the top-right profile dropdown, or through the Command Palette (
Cmd+Shift+P/Ctrl+Shift+P) with Open Devin User Settings - Go to Cascade → MCP Servers
There is a shortcut: the MCPs icon in the top-right menu of the Cascade panel jumps straight there. Note that Cmd+, opens the editor's own settings pane, not Devin Settings — Devin Desktop is a VS Code fork, so that shortcut lands somewhere else entirely.
The raw config file lives at ~/.codeium/windsurf/mcp_config.json, and editing it directly is often faster than the UI when you are fixing a key name rather than adding a server from scratch.
The config
{
"mcpServers": {
"my-server": {
"serverUrl": "https://mcp.example.com/mcp"
}
}
}
In Cascade, prefer serverUrl — it is the key Cognition's own remote-HTTP example uses. Cascade's configuration reference states that a remote HTTP server "requires a serverUrl or url field", and lists both among the fields it interpolates, so url is genuinely parsed here too. If you arrived from a Cursor or Kiro config that uses url, you do not have to rewrite it.
That matters mostly for what you check when something is missing. The failure this file produces is silent — valid JSON, clean save, no UI complaint, no server — and the key name is the tempting culprit. It usually is not. Check the agent first, then the entry's shape, then the URL.
The other agent: Devin Local
If you are on a current install, this is probably the one you are actually in. New tabs start with Devin Local when you have not chosen a preferred agent, falling back to Cascade when Devin Local is not available to you; on Enterprise plans it is gated and an admin turns it on.
Devin Local keeps MCP servers in its own files, and the field is url:
.devin/mcp_config.local.json— the default scope, gitignored.devin/mcp_config.json— project scope, shared through version control~/.config/devin/mcp_config.json— user level (%APPDATA%\devin\mcp_config.jsonon Windows)
Or skip the file entirely:
devin mcp add my-server https://mcp.example.com/mcp
Cognition notes the location changed in v3000.3 (Local 3.6) — older builds kept servers under an mcpServers key in config.json and migrate automatically on startup.
One behavioral difference worth expecting: unlike Cascade, Devin Local's default configuration prompts for approval before every MCP tool call. A connected server that seems to do nothing is often just waiting on that.
Authorization
Cognition states that Devin Desktop "supports OAuth for each transport type" but does not document the trigger for Cascade, so treat the exact moment the browser opens as unspecified there.
For Devin Local the flow is documented: run devin mcp login <name> to open a browser window and authorize, or let it prompt you automatically when the server is first used. Expired credentials show up as a Needs auth status in the server list. Each client keeps its own OAuth session, so authorizing in one tool does not carry to another.
If authorization will not trigger at all, a stdio fallback works — replace the URL entry with a command / args pair running mcp-remote against the same URL. That is our own workaround rather than Cognition guidance; mcp-remote does not appear in their docs.
What usually goes wrong
- Config saved but the server never appears. Check which agent you are in first.
~/.codeium/windsurf/mcp_config.jsonconfigures the legacy Cascade agent, and Devin Local — the default for new tabs — reads its own files, so the server is simply not there. Cascade accepts eitherserverUrlorurl, so the key name is rarely the cause. - No MCP option at all. Enterprise plans ship with MCP turned off by default (as of August 2026); an admin has to enable it, and once even a single server is allowlisted, every non-allowlisted server is blocked. Ask your workspace admin.
- Tools missing after a successful connection. Cascade caps active MCP tools at 100 total across all servers, so with several servers running the cap — not the newest server — is what went wrong. Disable some tools or servers to fit under it. Cognition documents no equivalent cap for Devin Local.
- Devin Local connects but nothing happens. It asks before each tool call by default. Approve the prompt, or adjust the approval setting.
A worked example
Here is the same config with a real server. Tempreon is a hosted MCP server that carries your context between tools, so the entry is a URL and nothing else:
{
"mcpServers": {
"tempreon": {
"serverUrl": "https://api.tempreon.com/functions/v1/tempreon-mcp/mcp"
}
}
}
For Devin Local, the same server in its own config, with url:
{
"mcpServers": {
"tempreon": {
"url": "https://api.tempreon.com/functions/v1/tempreon-mcp/mcp"
}
}
}
There is a reason this particular editor is a good place to connect a memory server: Devin Desktop natively hosts open models like GLM, Kimi, and DeepSeek alongside Claude and GPT, and because MCP lives in the editor rather than the model, all of them reach the same server through one connection. Swapping models does not touch your setup.
The full account-holder walkthrough is in the Windsurf setup doc.
Sources
The dated claims on this page were checked against these vendor documents. Client UIs move constantly, so if one of these has changed since the date shown, trust the vendor over this page — and tell us.
- Cascade MCP Integration — Devin Desktop docs — read 2026-08-15
- Devin Local MCP configuration — config paths and the url field — read 2026-08-15
- Devin Local — default agent conditions, tool approval, Enterprise gating — read 2026-08-15
- Devin Desktop advanced — opening Devin Settings — read 2026-08-15
- Devin Desktop changelog — v3.0.12, Windsurf renamed June 2, 2026 — read 2026-08-15
Frequently asked questions
- I added an MCP server in Windsurf but it never appears. What's wrong?
- Check which agent you are configuring before you touch the key name. The config at ~/.codeium/windsurf/mcp_config.json belongs to the legacy Cascade agent, and Cognition's docs note that Devin Local is now the default agent for new tabs — Devin Local reads its own files instead, at .devin/mcp_config.local.json, .devin/mcp_config.json, or ~/.config/devin/mcp_config.json, and its field is url rather than serverUrl. So a server added for Cascade will not appear in Devin Local. Within Cascade itself either serverUrl or url is genuinely parsed, so a missing server is far more likely an agent mismatch than a key-name problem.
- Where do I add an MCP server in Devin Desktop?
- Open Devin Settings from the top-right profile dropdown, or through the Command Palette with Open Devin User Settings, then go to Cascade and then MCP Servers. You can also click the MCPs icon in the top-right menu of the Cascade panel to jump straight there. The raw config file lives at ~/.codeium/windsurf/mcp_config.json. Note that Cmd+comma opens the editor's own settings pane instead, because Devin Desktop is a VS Code fork. For the Devin Local agent, use devin mcp add or edit its own config files.
- Why is there no MCP option in my Windsurf install at all?
- As of August 2026, Enterprise plans ship with MCP turned off by default, and an admin has to enable it. Admins can also restrict which servers are allowed, and once even one server is allowlisted, every server not on the list is blocked. If the option is missing entirely rather than failing to connect, ask your workspace admin whether MCP is enabled and whether your server needs to be allowlisted.