Settings
> Tools
> Windsurf Settings
> Add Server
section.
If you cannot find your desired MCP plugin, you can add it manually by clicking View Raw Config
button and editing the raw mcp_config.json
file.
When you click on an MCP server, simply click + Add Server
to expose the server and its tools to Cascade.
stdio
and /sse
.
For /sse
servers, the URL should reflect that of the endpoint and resemble https://<your-server-url>/sse
.
We can also support streamable HTTP transport and MCP Authentication.
~/.codeium/mcp_config.json
file is a JSON file that contains a list of servers that Cascade can connect to.
The JSON should follow the same schema as the config file for Claude Desktop.
Here’s an example configuration, which sets up a single server for GitHub:
serverUrl
field.
Here’s an example configuration for a SSE server:
^(?:pattern)$
) to prevent partial matches$
, .
, [
, ]
, (
, )
have special regex meaning and should be escaped with \
if you want literal matchingOption 1: Plugin Store Default (Recommended)
Leave the Server Config (JSON) field empty to allow the default configuration from the Windsurf MCP Plugin Store.
github-mcp-server
mcp_config.json
):Option 2: Exact Match Configuration
Provide the exact configuration that users must use. Users must match this configuration exactly.
github-mcp-server
mcp_config.json
):env
section can have different values.Option 3: Flexible Regex Patterns
Use regex patterns to allow variations in user configurations while maintaining security controls.
python-mcp-server
mcp_config.json
):/.*\\.py
matches any Python file path like /home/user/my_server.py
[0-9]+
matches any numeric port like 8080
or 3000
Pattern | Matches | Example |
---|---|---|
.* | Any string | /home/user/script.py |
[0-9]+ | Any number | 8080 , 3000 |
[a-zA-Z0-9_]+ | Alphanumeric + underscore | api_key_123 |
\\$HOME | Literal $HOME | $HOME (not expanded) |
\\.py | Literal .py | script.py |
\\[cli\\] | Literal [cli] | mcp[cli] |
env
section is not regex-matched and can be configured freely by usersdisabledTools
array is handled separately and not part of whitelist matching\.
for literal dots)