MCP Connect

Add a remote MCP server to Devin Desktop (formerly Windsurf)

Paste the server URL and get what Devin Desktop (formerly Windsurf) needs, exactly as it wants it. Switch client to see the same server in another one.

The endpoint that speaks Streamable HTTP (or SSE). Keep any path the server documents, such as /mcp.

Letters, digits, dashes. Becomes the tool prefix in some clients.

Example server: mcp.sickle.app is real. It gives an agent every mailbox you own (Gmail, Outlook, iCloud, Fastmail, IMAP) with scoped permissions. What it does →Replace the URL with yours.

Pick a client

Devin Desktop (formerly Windsurf)Format checked Nov 2026

~/.config/devin/mcp_config.json (or $XDG_CONFIG_HOME/devin/mcp_config.json; Windows: %APPDATA%\devin\mcp_config.json) for every project. Per project: .devin/mcp_config.json (shared) or .devin/mcp_config.local.json (gitignored). In the app, Agents window → Customize → MCPs toggles servers, opens the config and refreshes.

Add it from the terminal (-s user saves it for every project):

Or add it by hand, for the default Devin Local agent, to

Legacy Cascade agent only (… (Actions) menu → MCPs → Open MCP config file), which keeps the older shape:

Then: Sign in with devin mcp login sickle (browser OAuth); Devin also prompts on first use. Then refresh under Agents window → Customize → MCPs.

Source: Devin Desktop (formerly Windsurf) documentation · legacy Cascade agent ·

How it works

One URL, ten spellings.

A remote MCP server is just an HTTPS endpoint. The client opens a connection, lists the tools, and calls them as the model asks. Two things vary between clients: where the server is declared (a JSON or TOML file, a CLI command, or a settings screen) and what the URL key is called. Everything else, including sign-in, is standard: the server advertises OAuth 2.1 metadata, the client identifies itself with a Client ID Metadata Document, or on older servers registers dynamically (DCR is now deprecated in the MCP spec, revision 2026-07-28), you approve once in the browser, and the client stores a revocable token.

Where each client keeps it

ClientWhereURL keySign-in step
Claude (desktop and web)Customize → Connectors → Add custom connectorUI fieldSign in now → Connect
Claude Codeclaude mcp add, or .mcp.json"type": "http", "url"/mcp → Authenticate
Cursor~/.cursor/mcp.json or .cursor/mcp.json"url"Customize → MCPs → authenticate
Codex~/.codex/config.toml, or codex mcp addurl =codex mcp login
VS Code~/.copilot/mcp-config.json or .mcp.json"type": "http", "url"Browser on first connection
Devin Desktop (formerly Windsurf)~/.config/devin/mcp_config.json, or devin mcp add"url", "transport"devin mcp login
Gemini CLI~/.gemini/settings.json, or gemini mcp add"httpUrl"/mcp auth
Antigravity CLI~/.gemini/config/mcp_config.json"serverUrl"Installed MCP Servers → Authenticate
OpenClawopenclaw mcp add, or mcp.servers in the configurl + transportGateway stopped → openclaw mcp login
ZedSettings → AI → MCP Servers, or context_servers"url"OAuth prompt without an Authorization header
Questions

Asked before you ask.

Do I still need npx mcp-remote?

Not for the clients on this page. mcp-remote was a bridge from the days when most clients only spoke to local stdio servers. Every client listed here now connects to an HTTPS URL directly, runs the OAuth flow itself and can send a static header where the server needs one. The one case where it still helps is a client outside this list that only takes a command.

Streamable HTTP or SSE?

Streamable HTTP is the current transport in the MCP specification; SSE is the older one that some servers still expose at a /sse path. Pick whatever the server documents. If a server offers both, use Streamable HTTP; it survives proxies and reconnects better.

Why doesn't Claude Desktop have a "url" key in claude_desktop_config.json?

Because remote servers are added as connectors, not through that file. The JSON file still exists for local stdio servers. Add a remote server under Customize → Connectors, where the OAuth consent, request headers and revocation live.

Where do secrets go?

Never in a file you commit. VS Code supports ${input:…} prompts, Codex reads the token from an environment variable (bearer_token_env_var), Devin Desktop expands ${env:…} and ${file:…}, and Claude Code and Gemini CLI take --header on the command line. Servers that use OAuth avoid the problem entirely.

How do I disconnect?

Remove the entry (or run the client's remove command: claude mcp remove, codex mcp remove, gemini mcp remove, openclaw mcp unset) and revoke the client on the server side if it keeps a list of connected apps. A well-designed server drops the client's token within the hour.

Need a server worth connecting?

Give your agent your inbox.

Sickle's email MCP server gives Claude, Cursor, Codex or OpenClaw every mailbox you own: search across accounts, read threads, archive and file, with read, change and send as separate permissions you can revoke. Remote, any OS, nothing to install.