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

# Protocolo de Contexto del Modelo (MCP)

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

**MCP (Model Context Protocol)** es un protocolo que permite a los LLM acceder a herramientas y servicios personalizados.
Un cliente MCP (Cascade, en este caso) puede hacer solicitudes a servidores MCP para acceder a las herramientas que 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 Settings</Note>

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

Puedes agregar nuevos plugins de MCP desde la sección `Settings` > `Tools` > `Windsurf Settings` > `Add Server`.

Si no encuentras el plugin de MCP que buscas, puedes agregarlo manualmente haciendo clic en el botón `View Raw Config` y editando el archivo `mcp_config.json` sin formato.

Cuando hagas clic en un servidor MCP, simplemente haz clic en `+ Add Server` para exponer el servidor y sus herramientas a Cascade.

<Frame>
  <img src="https://mintcdn.com/cognitionai/-PTA3zzo2bR9Qfc8/desktop/assets/plugins/mcp-server-templates.jpg?fit=max&auto=format&n=-PTA3zzo2bR9Qfc8&q=85&s=011ca9d571dfa249d10d9f34b7287642" width="1666" height="1388" data-path="desktop/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 los servidores `http`, la URL debe corresponder a la del endpoint y tener un formato similar a `https://<your-server-url>/mcp`.

<Note>Asegúrate de pulsar el botón de actualizar después de agregar un nuevo plugin de 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.

Aquí tienes 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": "<YOUR_PERSONAL_ACCESS_TOKEN>"
      }
    }
  }
}
```

Asegúrate de proporcionar los argumentos requeridos y las variables de entorno de 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 un poco
distinta 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": "<your-server-url>/mcp",
      "headers": {
        "API_KEY": "value"
      }
    }
  }
}
```

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

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

Aquí tienes una configuración de ejemplo que usa 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 Admin (Teams y Enterprise)
</div>

Los Admin del equipo pueden activar o desactivar el acceso a MCP para su equipo, así como añadir servidores MCP aprobados a la lista de permitidos para que el equipo pueda usarlos:

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

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

De forma predeterminada, los usuarios de un equipo podrán configurar sus propios servidores MCP. Sin embargo, en cuanto añadas хотя sea un solo servidor MCP a la lista de permitidos, **todos los servidores que no estén en esa lista quedarán bloqueados** para tu equipo.

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

Cuando incluyes un servidor MCP en la lista de permitidos, el sistema usa **coincidencia de patrones con regex** con las siguientes reglas:

* **Coincidencia de cadena completa**: Todos los patrones se anclan automáticamente (se envuelven en `^(?:pattern)$`) para evitar coincidencias parciales
* **Campo de comando**: Debe coincidir exactamente o según tu patrón 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 de permitidos y la configuración del usuario
* **Caracteres especiales**: Caracteres como `$`, `.`, `[`, `]`, `(` y `)` 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: Valor predeterminado de Plugin Store (recomendado)" description="Deja vacío el campo Server Config (JSON) para permitir la configuración predeterminada de Windsurf MCP Plugin Store.">
    **Configuración de la lista de permitidos de Admin:**

    * **ID del servidor**: `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 de la tienda de plugins.
  </Accordion>

  <Accordion title="Opción 2: Configuración de coincidencia exacta" description="Proporciona la configuración exacta que deben usar los usuarios. Los usuarios deben ajustarse exactamente a esta configuración.">
    **Configuración de la lista de permitidos de Admin:**

    * **ID del servidor**: `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 diferencia en `command` o `args` se bloqueará. 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 sin dejar de mantener los controles de seguridad.">
    **Configuración de la lista de permitidos de Admin:**

    * **ID del servidor**: `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 sin dejar de mantener la seguridad:

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

<div id="common-regex-patterns">
  ### Patrones comunes de expresiones regulares
</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`       | `$HOME` literal           | `$HOME` (sin expandir) |
| `\\.py`         | `.py` literal             | `script.py`            |
| `\\[cli\\]`     | `[cli]` literal           | `mcp[cli]`             |

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

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

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

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

Si los usuarios informan que sus servidores MCP no funcionan después de añadirlos a la lista de permitidos:

1. **Comprueba la coincidencia exacta**: Asegúrate de que el patrón de la lista de permitidos coincida exactamente con la configuración del usuario
2. **Verifica el escape de regex**: Es posible que los caracteres especiales deban escaparse (p. ej., `\.` para puntos literales)
3. **Revisa los logs**: Los patrones regex no válidos se registran con advertencias
4. **Prueba los patrones**: Usa un comprobador de regex para verificar que tus patrones funcionen como se espera

Recuerda: una vez que añades cualquier servidor a la lista de permitidos, **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 desarrolladores de servidores de terceros, no asumimos responsabilidad
  por fallas en las llamadas a herramientas de MCP. Para reiterarlo:
* Actualmente admitimos las [herramientas](https://modelcontextprotocol.io/docs/concepts/tools), los [recursos](https://modelcontextprotocol.io/docs/concepts/resources) y los [prompts](https://modelcontextprotocol.io/docs/concepts/prompts) de un servidor MCP.
