Both work. Both have one non-obvious default that produces a correct-looking config doing nothing, and neither tells you.
The file is ~/.codeium/windsurf/mcp_config.json on macOS, Windows and Linux, with
mcpServers as the key. Reach it from the MCPs icon at the top right of the Cascade panel,
or Devin Settings, Cascade, MCP Servers. The documentation now lives under the Devin Desktop product
name and the Windsurf docs URL redirects there.
Here is the catch. mcp_config.json applies to the legacy Cascade agent only. The Devin
Local agent, which is the default for new tabs, takes its servers from the Devin CLI config files
instead. So a perfectly correct entry in this file can be entirely invisible in a fresh tab, with no
error anywhere.
The second hard number is a ceiling: Cascade reaches at most 100 tools at once, and every enabled
server spends from it. That matters here specifically, because the office-suite bundle in this
repository exposes every child server's tools through one connection. One tools/list
against a built v0.20.0 bundle on 2026-09-07 returned 292 tools from 31 child
servers. In Windsurf that one entry is nearly three times the ceiling on its own. Install
the two or three servers you actually use.
{
"mcpServers": {
"invoice": {
"command": "/opt/homebrew/bin/node",
"args": ["/Users/you/mcp-servers/servers/invoice/dist/index.js"]
}
}
}
Windsurf also documents an install deeplink of its own,
windsurf://windsurf-mcp-registry?serverName=<server-name>.
Cline is the one client here with an unsafe transport default. type selects the
transport, and leaving it out falls back to the legacy SSE transport. Point a streamable HTTP endpoint
at it without type and you will spend an afternoon debugging a server that is fine.
{
"mcpServers": {
"invoice": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/invoice/t/YOUR_TOKEN"
}
}
}
For a local server, ~/.cline/mcp.json for the CLI. The editor extension keeps its
settings JSON reachable from the panel rather than by path: the MCP Servers icon in the top toolbar,
the Configure tab, then Configure MCP Servers near the bottom. From a terminal,
cline mcp opens an interactive wizard and cline config mcp --json reads or
writes the same thing non-interactively.
Local entries also carry disabled and an autoApprove array. The second
one is worth setting deliberately: it decides which tools run without asking you first.
No full-app restart in Cline. The MCP settings actions include restarting an unresponsive server if its tools do not appear.
mcp/connect mints a free anonymous token and prints a ready URL per server, token already in the path. Free terms are stated there: 600 calls an hour, free-tier server limits, and a data space kept 30 days and refreshed for another 30 on every write.
Client facts on this page were read off each client's own documentation on 2026-09-02 and are
recorded with their source URLs in billing/src/setup.js. Per-server pages are under
setup/windsurf and setup/cline.
New tabs default to the Devin Local agent, and Cascade is the legacy one that reads mcp_config.json. If the file is correct and the tools are absent in a fresh tab, that is the first thing to check rather than the last.
Count what you have enabled. The servers in this repository run from 6 tools on per-diem and asset-register to 15 on kanban, counted in data/tools.json, so three or four servers is comfortable and the 292-tool office-suite bundle is not.
A per-server list of tool names Cline may call without asking. Read-only tools are reasonable candidates. Anything that writes a file, issues a document or spends a free-tier slot is worth leaving off it, because the point of the prompt is that you see the call before it happens.
Yes, with command and args like every other client, and an env object next to command. type matters most for remote servers, where the fallback to legacy SSE is what bites.
All MCP servers and prices · All guides · Buy the bundle $39