Guide

Add a Remote MCP Server to Windsurf, Cline, or Zed

To add an MCP server to Windsurf, edit mcp_config.json and add an entry under mcpServers. Use command and args for a local process, or serverUrl and headers for a remote server. Cline and Zed follow the same two-shape pattern with different file and field names, so this guide covers all three.

Step by step

  1. Open your editor's MCP config file. Windsurf: ~/.codeium/windsurf/mcp_config.json. Cline: cline_mcp_settings.json under the extension's global storage, or ~/.cline/mcp.json for the CLI. Zed: settings.json, under a context_servers key.
  2. Add the mcpifex entry. Add a remote-server block with https://mcpifex.com/mcp as the URL and an Authorization: Bearer header. Windsurf uses serverUrl, Cline uses type streamableHttp plus url, and Zed uses url plus headers.
  3. Generate an API key. Create an instance of a catalog server in the MCPifex portal, choose which tools are enabled, and generate an API key to paste in place of .
  4. Reload and verify. Save the file and reload the editor. Check its MCP status screen for a connected server with a nonzero tool count before asking the agent to use it.

Add a remote server to Windsurf

Say you have an API key for a hosted MCP server. Add this to ~/.codeium/windsurf/mcp_config.json (on Windows, %USERPROFILE%\.codeium\windsurf\mcp_config.json):

{
  "mcpServers": {
    "mcpifex": {
      "serverUrl": "https://mcpifex.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_MCPX_KEY>"
      }
    }
  }
}

You can also open the file from the UI: the MCPs icon in Cascade's panel, or Settings → Cascade → MCP Servers. The "View raw config" link goes to the same file. A local server uses command, args and an optional env block instead:

{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-example"],
      "env": {
        "REQUIRED_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

Windsurf accepts ${env:VAR_NAME} and ${file:/path} inside serverUrl, args, env and headers, so you don't have to hardcode a secret. Cascade also caps itself at 100 tools across all connected servers.

As of September 2026, Windsurf's MCP docs have moved. The old docs.windsurf.com/windsurf/cascade/mcp address redirects to docs.devin.ai/desktop/cascade/mcp, so bookmark the new one.

Add a remote server to Cline

Cline is a VS Code extension. Its config lives in the extension's global storage, at .../Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json. That path sits under Library/Application Support on macOS, %APPDATA% on Windows and ~/.config on Linux. The Cline CLI reads ~/.cline/mcp.json instead.

The easy way in is the MCP Servers icon in Cline's panel. Its Configure tab opens the file, and its Remote Servers tab adds a name and URL without editing JSON. A remote entry by hand looks like this:

{
  "mcpServers": {
    "mcpifex": {
      "type": "streamableHttp",
      "url": "https://mcpifex.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_MCPX_KEY>"
      }
    }
  }
}

Don't leave out type. With a bare url, Cline falls back to the legacy SSE transport. That isn't an error, so a server that expects Streamable HTTP just fails in confusing ways. Always set "type": "streamableHttp".

Add a remote server to Zed

Zed keeps MCP config in its main settings file, under a context_servers key. That file is ~/Library/Application Support/Zed/settings.json on macOS and ~/.config/zed/settings.json on Linux. Open it from Settings → AI → MCP Servers, or run agent: open settings file or zed: open settings file from the command palette.

{
  "context_servers": {
    "mcpifex": {
      "url": "https://mcpifex.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_MCPX_KEY>"
      }
    }
  }
}

A remote entry only needs url and headers. If you leave out the Authorization header entirely, Zed starts its own MCP OAuth flow instead. That is handy for servers that support OAuth, and unnecessary when you already have a bearer token.

Check that it connected

Save the file and reload the editor. Windsurf's Cascade panel and Zed's MCP Servers screen show a tool count for each connected server, and Cline's Configure tab shows the same. A nonzero count means the server is up. Then ask the agent to use one of the tools.

If it doesn't connect

  • Nothing appears in Zed. Zed's key is context_servers, not mcpServers.
  • Nothing appears in Windsurf. Use serverUrl for remote servers. Windsurf ignores a plain url for that job.
  • Cline connects but calls fail. Check that type is streamableHttp, as above.
  • 401 from the server. The key is missing, mistyped or revoked. MCPifex keys start with mcpx_.
  • Invalid JSON. A missing comma after the previous entry is the usual cause.

Use one URL for every editor

All three editors speak the Streamable HTTP transport that replaced the older HTTP+SSE approach. So the blocks above differ only in field names, and one remote MCP server URL works in all of them.

MCPifex gives you that URL. You create an instance of a catalog server, such as PostgreSQL, in the portal and choose which tools are enabled. Destructive tools start off. Then you generate a key and paste it in place of <YOUR_MCPX_KEY>. Nothing in your editor config holds a database password. Revoking the key in the portal stops new calls within about a minute.

See API keys and authentication for the key details, hosted vs. self-hosted MCP for the trade-off, and the guides for Cursor and Claude Code. Check plan limits before adding many instances, and register for free to get a key.

Sources

  1. Cascade MCP Integration (Windsurf docs, hosted under Devin/Cognition)
  2. Cline Docs: MCP Overview
  3. Zed Docs: Model Context Protocol
  4. Model Context Protocol Specification (2025-06-18)