> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Context Protocol (MCP)

> Configura servidores MCP para ampliar Cascade con herramientas y servicios personalizados mediante transportes stdio, HTTP o SSE, con controles de administración para Teams y Enterprise.

**MCP (Model Context Protocol)** es un protocolo que permite a los modelos de IA acceder a herramientas y servicios personalizados.
Un cliente MCP (Cascade, en este caso) puede realizar solicitudes a servidores MCP para acceder a las herramientas que estos proporcionan.
Cascade ahora se integra de forma nativa con MCP, lo que te permite usar tu propia selección de servidores MCP con Cascade.
Consulta la [documentación oficial de MCP](https://modelcontextprotocol.io/) para obtener más información.

<Note>Los usuarios de Enterprise deben activarlo manualmente en la configuración</Note>

<div id="adding-a-new-mcp-plugin">
  ## Agregar un nuevo plugin MCP
</div>

Puedes agregar nuevos plugins MCP desde `Settings` > `Tools` > `Windsurf Settings` > `Add Server`.

Si no encuentras el plugin MCP que buscas, puedes añadirlo manualmente haciendo clic en el botón `View Raw Config` y editando directamente el archivo `mcp_config.json`.

Al seleccionar un servidor MCP, simplemente haz clic en `+ Add Server` para poner el servidor y sus herramientas a disposición de Cascade.

<Frame>
  <img src="https://mintcdn.com/codeium/d8O4q6w3H2CjrirL/assets/plugins/mcp-server-templates.jpg?fit=max&auto=format&n=d8O4q6w3H2CjrirL&q=85&s=06f96424bd8374333d6969006868456e" width="1666" height="1388" data-path="assets/plugins/mcp-server-templates.jpg" />
</Frame>

Cascade admite tres [tipos de transporte](https://modelcontextprotocol.io/docs/concepts/transports) para servidores MCP: `stdio`, `Streamable HTTP` y `SSE`.

Cascade también admite OAuth para cada tipo de transporte.

Para servidores `http`, la URL debe corresponder al endpoint y tener el formato `https://<your-server-url>/mcp`.

<Note>Asegúrate de pulsar el botón de actualizar después de agregar un nuevo plugin MCP.</Note>

<div id="mcp_configjson">
  ## mcp\_config.json
</div>

El archivo `~/.codeium/mcp_config.json` es un archivo JSON que contiene una lista de servidores a los que Cascade puede conectarse.

A continuación, se muestra un ejemplo de configuración que define un único servidor para GitHub:

```json theme={null}
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<TU_TOKEN_DE_ACCESO_PERSONAL>"
      }
    }
  }
}
```

Asegúrate de proporcionar los argumentos y las variables de entorno necesarios para los servidores que quieras usar.

Consulta el [repositorio oficial de referencia de servidores MCP](https://github.com/modelcontextprotocol/servers) o [OpenTools](https://opentools.com/) para ver algunos servidores de ejemplo.

<div id="remote-http-mcps">
  ### MCP HTTP remotos
</div>

Es importante tener en cuenta que, para los MCP HTTP remotos, la configuración es ligeramente diferente y requiere un campo `serverUrl` o `url`.

A continuación se muestra un ejemplo de configuración para un servidor HTTP:

```json theme={null}
{
  "mcpServers": {
    "remote-http-mcp": {
      "serverUrl": "<url-de-tu-servidor>/mcp",
      "headers": {
        "API_KEY": "value"
      }
    }
  }
}
```

<div id="config-interpolation">
  ### Interpolación en la configuración
</div>

El archivo `~/.codeium/mcp_config.json` gestiona la interpolación de
variables de entorno en estos campos: `command`, `args`, `env`, `serverUrl`, `url` y
`headers`.

Aquí tienes un ejemplo de configuración que utiliza una variable de entorno `AUTH_TOKEN`
en `headers`.

```json theme={null}
{
  "mcpServers": {
    "remote-http-mcp": {
      "serverUrl": "<your-server-url>/mcp",
      "headers": {
        "API_KEY": "Bearer ${env:AUTH_TOKEN}"
      }
    }
  }
}
```

<div id="admin-controls-teams-enterprises">
  ## Controles de administrador (Teams & Enterprises)
</div>

Los administradores de equipo pueden activar o desactivar el acceso a MCP para su equipo, así como añadir a la lista de permitidos los servidores MCP aprobados que su equipo puede usar:

<Card title="Configuración de MCP del equipo" horizontal={true} icon="hammer" href="https://windsurf.com/team/settings">
  Configuración de MCP personalizable para tu equipo.
</Card>

<Warning>El enlace anterior solo funcionará si tienes privilegios de administrador para tu equipo.</Warning>

Por defecto, los usuarios de un equipo podrán configurar sus propios servidores MCP. Sin embargo, una vez que añadas a la lista de permitidos incluso un único servidor MCP, **todos los servidores que no estén en la lista de permitidos quedarán bloqueados** para tu equipo.

<div id="how-server-matching-works">
  ### Cómo funciona la coincidencia de servidores
</div>

Cuando autorizas (whitelist) un servidor MCP, el sistema usa **coincidencia de patrones con expresiones regulares (regex)** con las siguientes reglas:

* **Coincidencia de cadena completa**: Todos los patrones se anclan automáticamente (se envuelven con `^(?:pattern)$`) para evitar coincidencias parciales
* **Campo Command**: Debe coincidir exactamente o conforme a tu patrón de regex
* **Matriz de argumentos**: Cada argumento se compara individualmente con su patrón correspondiente
* **Longitud de la matriz**: La cantidad de argumentos debe coincidir exactamente entre la lista permitida y la configuración del usuario
* **Caracteres especiales**: Caracteres como `$`, `.`, `[`, `]`, `(`, `)` tienen un significado especial en regex y deben escaparse con `\` si quieres una coincidencia literal

<div id="configuration-options">
  ### Opciones de configuración
</div>

<AccordionGroup>
  <Accordion title="Opción 1: Plugin Store predeterminado (recomendado)" description="Deja el campo Server Config (JSON) vacío para usar la configuración predeterminada del Windsurf MCP Plugin Store.">
    **Configuración de la lista de permitidos del administrador:**

    * **Server ID**: `github-mcp-server`
    * **Server Config (JSON)**: *(dejar vacío)*

    ```json theme={null}
    {}
    ```

    **Configuración de usuario correspondiente (`mcp_config.json`):**

    ```json theme={null}
    {
      "mcpServers": {
        "github-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
          }
        }
      }
    }
    ```

    Esto permite a los usuarios instalar el servidor MCP de GitHub con cualquier configuración válida, siempre que el ID del servidor coincida con la entrada del Plugin Store.
  </Accordion>

  <Accordion title="Opción 2: Configuración de coincidencia exacta" description="Proporciona la configuración exacta que los usuarios deben utilizar. Los usuarios deben ajustarse a esta configuración al pie de la letra.">
    **Configuración de la lista de permitidos del administrador:**

    * **Server ID**: `github-mcp-server`
    * **Server Config (JSON)**:

    ```json theme={null}
    {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": ""
      }
    }
    ```

    **Configuración de usuario correspondiente (`mcp_config.json`):**

    ```json theme={null}
    {
      "mcpServers": {
        "github-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
          }
        }
      }
    }
    ```

    Los usuarios deben usar esta configuración exacta: cualquier desviación en command o args será bloqueada. La sección `env` puede tener valores distintos.
  </Accordion>

  <Accordion title="Opción 3: Patrones regex flexibles" description="Usa patrones regex para permitir variaciones en las configuraciones de los usuarios manteniendo los controles de seguridad.">
    **Configuración de la lista de permitidos del administrador:**

    * **Server ID**: `python-mcp-server`
    * **Server Config (JSON)**:

    ```json theme={null}
    {
      "command": "python3",
      "args": ["/.*\\.py", "--port", "[0-9]+"]
    }
    ```

    **Configuración de usuario correspondiente (`mcp_config.json`):**

    ```json theme={null}
    {
      "mcpServers": {
        "python-mcp-server": {
          "command": "python3",
          "args": ["/home/user/my_server.py", "--port", "8080"],
          "env": {
            "PYTHONPATH": "/home/user/mcp"
          }
        }
      }
    }
    ```

    Este ejemplo ofrece flexibilidad a los usuarios a la vez que mantiene la seguridad:

    * El regex `/.*\\.py` coincide con cualquier ruta de archivo de Python, como `/home/user/my_server.py`
    * El regex `[0-9]+` coincide con cualquier puerto numérico, como `8080` o `3000`
    * Los usuarios pueden personalizar rutas de archivos y puertos mientras los administradores garantizan que solo se ejecuten scripts de Python
  </Accordion>
</AccordionGroup>

<div id="common-regex-patterns">
  ### Patrones comunes de regex
</div>

| Patrón          | Coincide con              | Ejemplo                |
| --------------- | ------------------------- | ---------------------- |
| `.*`            | Cualquier cadena          | `/home/user/script.py` |
| `[0-9]+`        | Cualquier número          | `8080`, `3000`         |
| `[a-zA-Z0-9_]+` | Alfanumérico + guion bajo | `api_key_123`          |
| `\\$HOME`       | Literal `$HOME`           | `$HOME` (sin expandir) |
| `\\.py`         | Literal `.py`             | `script.py`            |
| `\\[cli\\]`     | Literal `[cli]`           | `mcp[cli]`             |

<div id="notes">
  ## Notas
</div>

<div id="admin-configuration-guidelines">
  ### Directrices de configuración para administradores
</div>

* **Variables de entorno**: La sección `env` no se evalúa con expresiones regulares y los usuarios pueden configurarla libremente
* **Herramientas deshabilitadas**: El array `disabledTools` se gestiona por separado y no forma parte de la coincidencia con la lista de permitidos
* **Sensibilidad a mayúsculas y minúsculas**: Todas las coincidencias distinguen entre mayúsculas y minúsculas
* **Manejo de errores**: Los patrones de regex no válidos se registrarán y darán lugar a la denegación de acceso
* **Pruebas**: Prueba tus patrones de regex cuidadosamente; patrones demasiado restrictivos pueden bloquear casos de uso legítimos

<div id="troubleshooting">
  ### Solución de problemas
</div>

Si los usuarios informan que sus servidores MCP no funcionan después de incluirlos en la lista permitida:

1. **Comprobar coincidencia exacta**: Asegúrate de que el patrón de la lista permitida coincida exactamente con la configuración del usuario
2. **Verificar el escape en regex**: Es posible que sea necesario escapar caracteres especiales (p. ej., `\.` para puntos literales)
3. **Revisar logs**: Los patrones regex inválidos se registran con advertencias
4. **Probar patrones**: Usa un probador de regex para verificar que tus patrones funcionen como se espera

Recuerda: Una vez que incluyas cualquier servidor en la lista permitida, **todos los demás servidores se bloquean automáticamente** para los miembros de tu equipo.

<div id="general-information">
  ### Información general
</div>

* Dado que las llamadas a herramientas de MCP pueden invocar código escrito por implementadores de servidores arbitrarios, no asumimos responsabilidad por fallos en dichas llamadas a herramientas de MCP. Para reiterar:
* Actualmente admitimos las [tools](https://modelcontextprotocol.io/docs/concepts/tools), [resources](https://modelcontextprotocol.io/docs/concepts/resources) y [prompts](https://modelcontextprotocol.io/docs/concepts/prompts) de un servidor MCP.
