> ## 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.

# Model Context Protocol (MCP)

> Configurez des serveurs MCP pour étendre Cascade avec des outils et services personnalisés via les transports stdio, HTTP ou SSE, avec des options d’administration pour Teams et Enterprise.

**MCP (Model Context Protocol)** est un protocole qui permet aux LLM d'accéder à des outils et services personnalisés.
Un client MCP (Cascade, ici) peut envoyer des requêtes à des serveurs MCP pour accéder aux outils qu'ils fournissent.
Cascade s'intègre désormais nativement à MCP, ce qui vous permet d'utiliser les serveurs MCP de votre choix avec Cascade.
Consultez la [documentation officielle du MCP](https://modelcontextprotocol.io/) pour plus d'informations.

<Note>Les utilisateurs Enterprise doivent activer cette option manuellement dans les paramètres</Note>

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

Vous pouvez ajouter de nouveaux plugins MCP en accédant à la section `Settings` > `Tools` > `Windsurf Settings` > `Add Server`.

Si vous ne trouvez pas le plugin MCP souhaité, vous pouvez l’ajouter manuellement en cliquant sur le bouton `View Raw Config`, puis en modifiant le fichier `mcp_config.json`.

Lorsque vous sélectionnez un serveur MCP, cliquez simplement sur `+ Add Server` pour exposer le serveur et ses outils à 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 prend en charge trois [types de transport](https://modelcontextprotocol.io/docs/concepts/transports) pour les
serveurs MCP : `stdio`, `Streamable HTTP` et `SSE`.

Cascade prend également en charge OAuth pour chaque type de transport.

Pour les serveurs `http`, l’URL doit correspondre à celle de l’endpoint et ressembler à `https://<your-server-url>/mcp`.

<Note>Assurez-vous de cliquer sur le bouton d’actualisation après avoir ajouté un nouveau plugin MCP.</Note>

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

Le fichier `~/.codeium/mcp_config.json` est un fichier JSON contenant une liste de serveurs auxquels Cascade peut se connecter.

Voici un exemple de configuration qui définit un seul serveur pour GitHub :

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

Veillez à fournir les arguments requis et les variables d’environnement nécessaires aux serveurs que vous souhaitez utiliser.

Consultez le [dépôt de référence officiel des serveurs MCP](https://github.com/modelcontextprotocol/servers) ou [OpenTools](https://opentools.com/) pour découvrir quelques exemples de serveurs.

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

À noter que pour les MCP HTTP distants, la configuration est légèrement
différente et requiert un champ `serverUrl` ou `url`.

Voici un exemple de configuration pour un serveur HTTP :

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

<div id="config-interpolation">
  ### Interpolation de configuration
</div>

Le fichier `~/.codeium/mcp_config.json` gère l’interpolation des
variables d’environnement dans les champs suivants : `command`, `args`, `env`, `serverUrl`, `url` et
`headers`.

Voici un exemple de configuration qui utilise une variable d’environnement `AUTH_TOKEN`
dans `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">
  ## Contrôles d’administration (Teams & Enterprises)
</div>

Les admins d’une Team peuvent activer ou désactiver l’accès MCP pour leur Team, ainsi que mettre sur liste d’autorisation les serveurs MCP approuvés que leur Team peut utiliser :

<Card title="MCP Team Settings" horizontal={true} icon="hammer" href="https://windsurf.com/team/settings">
  Paramètres MCP configurables pour votre Team.
</Card>

<Warning>Le lien ci-dessus ne fonctionne que si vous disposez des privilèges d’admin pour votre Team.</Warning>

Par défaut, les users d’une Team peuvent configurer leurs propres serveurs MCP. Toutefois, dès que vous mettez sur liste d’autorisation un seul serveur MCP, **tous les serveurs qui ne figurent pas sur la liste d’autorisation seront bloqués** pour votre Team.

<div id="how-server-matching-works">
  ### Fonctionnement de la correspondance des serveurs
</div>

Lorsque vous ajoutez un serveur MCP à la liste d’autorisation, le système utilise la **correspondance de motifs regex** selon les règles suivantes :

* **Correspondance sur la chaîne entière** : tous les motifs sont automatiquement ancrés (encadrés par `^(?:pattern)$`) afin d’empêcher les correspondances partielles
* **Champ de commande** : doit correspondre exactement ou selon votre motif regex
* **Tableau d’arguments** : chaque argument est comparé individuellement à son motif correspondant
* **Longueur du tableau** : le nombre d’arguments doit correspondre exactement entre la liste d’autorisation et la configuration utilisateur
* **Caractères spéciaux** : des caractères comme `$`, `.`, `[`, `]`, `(`, `)` ont une signification particulière en regex et doivent être échappés avec `\` si vous voulez une correspondance littérale

<div id="configuration-options">
  ### Options de configuration
</div>

<AccordionGroup>
  <Accordion title="Option 1 : configuration par défaut du Plugin Store (recommandée)" description="Laissez le champ Server Config (JSON) vide pour autoriser la configuration par défaut du Windsurf MCP Plugin Store.">
    **Configuration de la liste d’autorisation des admins :**

    * **ID du serveur** : `github-mcp-server`
    * **Server Config (JSON)** : *(laisser vide)*

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

    **Configuration utilisateur correspondante (`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"
          }
        }
      }
    }
    ```

    Cela permet aux utilisateurs d’installer le serveur MCP GitHub avec toute configuration valide, à condition que l’ID du serveur corresponde à l’entrée du Plugin Store.
  </Accordion>

  <Accordion title="Option 2 : configuration avec correspondance exacte" description="Fournissez la configuration exacte que les utilisateurs doivent utiliser. Les utilisateurs doivent la respecter à l’identique.">
    **Configuration de la liste d’autorisation des admins :**

    * **ID du serveur** : `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": ""
      }
    }
    ```

    **Configuration utilisateur correspondante (`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"
          }
        }
      }
    }
    ```

    Les utilisateurs doivent utiliser cette configuration exacte ; tout écart dans `command` ou `args` sera bloqué. La section `env` peut contenir des valeurs différentes.
  </Accordion>

  <Accordion title="Option 3 : motifs regex flexibles" description="Utilisez des motifs regex pour autoriser des variations dans les configurations utilisateur tout en conservant des contrôles de sécurité.">
    **Configuration de la liste d’autorisation des admins :**

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

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

    **Configuration utilisateur correspondante (`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"
          }
        }
      }
    }
    ```

    Cet exemple offre de la flexibilité aux utilisateurs tout en préservant la sécurité :

    * La regex `/.*\\.py` correspond à n’importe quel chemin de fichier Python, comme `/home/user/my_server.py`
    * La regex `[0-9]+` correspond à n’importe quel port numérique, comme `8080` ou `3000`
    * Les utilisateurs peuvent personnaliser les chemins de fichiers et les ports, tandis que les admins veillent à ce que seuls des scripts Python soient exécutés
  </Accordion>
</AccordionGroup>

<div id="common-regex-patterns">
  ### Motifs Regex courants
</div>

| Pattern         | Correspond à                           | Exemple                 |
| --------------- | -------------------------------------- | ----------------------- |
| `.*`            | N’importe quelle chaîne                | `/home/user/script.py`  |
| `[0-9]+`        | N’importe quel nombre                  | `8080`, `3000`          |
| `[a-zA-Z0-9_]+` | Alphanumérique + trait de soulignement | `api_key_123`           |
| `\\$HOME`       | `$HOME` littéral                       | `$HOME` (non développé) |
| `\\.py`         | `.py` littéral                         | `script.py`             |
| `\\[cli\\]`     | `[cli]` littéral                       | `mcp[cli]`              |

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

<div id="admin-configuration-guidelines">
  ### Consignes de configuration d’administration
</div>

* **Variables d’environnement** : la section `env` n’est pas comparée via des expressions régulières et peut être configurée librement par les utilisateurs
* **Outils désactivés** : le tableau `disabledTools` est traité séparément et ne fait pas partie de la correspondance avec la liste blanche
* **Sensibilité à la casse** : toute correspondance tient compte de la casse
* **Gestion des erreurs** : les motifs regex non valides seront consignés et entraîneront un refus d’accès
* **Tests** : testez soigneusement vos motifs regex - des motifs trop restrictifs peuvent bloquer des cas d’utilisation légitimes

<div id="troubleshooting">
  ### Dépannage
</div>

Si des utilisateurs signalent que leurs serveurs MCP ne fonctionnent plus après leur ajout à la liste blanche :

1. **Vérifier la correspondance exacte** : assurez-vous que le motif de la liste blanche correspond exactement à la configuration de l’utilisateur
2. **Vérifier l’échappement des expressions régulières** : les caractères spéciaux peuvent devoir être échappés (p. ex., `\.` pour les points littéraux)
3. **Consulter les logs** : les motifs regex non valides sont consignés avec des avertissements
4. **Tester les motifs** : utilisez un testeur regex pour vérifier que vos motifs fonctionnent comme prévu

N’oubliez pas : dès que vous mettez un serveur sur liste blanche, **tous les autres serveurs sont automatiquement bloqués** pour les membres de votre Team.

<div id="general-information">
  ### Informations générales
</div>

* Comme les appels aux outils MCP peuvent invoquer du code écrit par des implémenteurs de serveurs tiers, nous déclinons toute responsabilité en cas d'échec d'un appel à un outil MCP. En d'autres termes :
* Nous prenons actuellement en charge les [tools](https://modelcontextprotocol.io/docs/concepts/tools), les [resources](https://modelcontextprotocol.io/docs/concepts/resources) et les [prompts](https://modelcontextprotocol.io/docs/concepts/prompts) d'un serveur MCP.
