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

> Configura i server MCP per estendere Cascade con strumenti e servizi personalizzati tramite i trasporti stdio, HTTP o SSE, con controlli di amministrazione per Teams ed Enterprise.

**MCP (Model Context Protocol)** è un protocollo che consente agli LLM di accedere a strumenti e servizi personalizzati.
Un client MCP (in questo caso, Cascade) può effettuare richieste ai server MCP per accedere agli strumenti che mettono a disposizione.
Cascade ora si integra nativamente con MCP, consentendoti di usare in Cascade i server MCP che preferisci.
Per ulteriori informazioni, consulta la [documentazione ufficiale di MCP](https://modelcontextprotocol.io/).

<Note>Gli utenti Enterprise devono attivare questa opzione manualmente da Settings</Note>

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

Puoi aggiungere nuovi plugin MCP dalla sezione `Settings` > `Tools` > `Windsurf Settings` > `Add Server`.

Se non trovi il plugin MCP che vuoi usare, puoi aggiungerlo manualmente facendo clic sul pulsante `View Raw Config` e modificando il file `mcp_config.json` raw.

Quando fai clic su un server MCP, ti basta fare clic su `+ Add Server` per esporre il server e i relativi strumenti 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 supporta tre [tipi di trasporto](https://modelcontextprotocol.io/docs/concepts/transports) per i server
MCP: `stdio`,  `Streamable HTTP` e `SSE`.

Cascade supporta anche OAuth per ogni tipo di trasporto.

Per i server `http`, l'URL deve corrispondere a quello dell'endpoint e avere un formato simile a `https://<your-server-url>/mcp`.

<Note>Assicurati di premere il pulsante di aggiornamento dopo aver aggiunto un nuovo plugin MCP.</Note>

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

Il file `~/.codeium/mcp_config.json` è un file JSON che contiene un elenco di server a cui Cascade può collegarsi.

Ecco un esempio di configurazione che configura un singolo server per GitHub:

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

Assicurati di fornire gli argomenti richiesti e le variabili d'ambiente per i server che intendi usare.

Consulta il [repository di riferimento ufficiale dei server MCP](https://github.com/modelcontextprotocol/servers) o [OpenTools](https://opentools.com/) per alcuni esempi di server.

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

È importante tenere presente che, per gli MCP HTTP remoti, la configurazione è leggermente
diversa e richiede un campo `serverUrl` o `url`.

Ecco un esempio di configurazione per un server HTTP:

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

<div id="config-interpolation">
  ### Interpolazione della configurazione
</div>

Il file `~/.codeium/mcp_config.json` gestisce l'interpolazione delle
variabili d'ambiente nei seguenti campi: `command`, `args`, `env`, `serverUrl`, `url` e
`headers`.

Ecco un esempio di configurazione che usa una variabile d'ambiente `AUTH_TOKEN`
in `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">
  ## Controlli per gli amministratori (Team ed Enterprise)
</div>

Gli amministratori del team possono attivare o disattivare l'accesso a MCP per il proprio team, nonché inserire nella whitelist i server MCP approvati che il team può usare:

<Card title="Settings MCP del team" horizontal={true} icon="hammer" href="https://windsurf.com/team/settings">
  Settings MCP configurabili per il tuo team.
</Card>

<Warning>Il collegamento sopra funzionerà solo se disponi dei privilegi di amministratore per il tuo team.</Warning>

Per impostazione predefinita, gli utenti di un team possono configurare i propri server MCP. Tuttavia, una volta inserito nella whitelist anche un solo server MCP, **tutti i server non presenti nella whitelist saranno bloccati** per il tuo team.

<div id="how-server-matching-works">
  ### Come funziona la corrispondenza dei server
</div>

Quando inserisci un server MCP nella whitelist, il sistema usa la **corrispondenza tramite pattern regex** secondo le seguenti regole:

* **Corrispondenza dell'intera stringa**: tutti i pattern vengono ancorati automaticamente (racchiusi in `^(?:pattern)$`) per evitare corrispondenze parziali
* **Campo comando**: deve corrispondere esattamente oppure in base al pattern regex specificato
* **Array degli argomenti**: ogni argomento viene confrontato singolarmente con il pattern corrispondente
* **Lunghezza dell'array**: il numero di argomenti deve corrispondere esattamente tra la whitelist e la configurazione utente
* **Caratteri speciali**: caratteri come `$`, `.`, `[`, `]`, `(`, `)` hanno un significato speciale nelle regex e devono essere preceduti da `\` se vuoi una corrispondenza letterale

<div id="configuration-options">
  ### Opzioni di configurazione
</div>

<AccordionGroup>
  <Accordion title="Opzione 1: impostazione predefinita del Plugin Store (consigliata)" description="Lascia vuoto il campo Server Config (JSON) per consentire l'uso della configurazione predefinita del Windsurf MCP Plugin Store.">
    **Configurazione della whitelist Admin:**

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

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

    **Configurazione utente corrispondente (`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"
          }
        }
      }
    }
    ```

    In questo modo, gli utenti possono installare il server GitHub MCP con qualsiasi configurazione valida, purché l'ID del server corrisponda alla voce nel plugin store.
  </Accordion>

  <Accordion title="Opzione 2: configurazione con corrispondenza esatta" description="Fornisci la configurazione esatta che gli utenti devono usare. Deve corrispondere esattamente a questa configurazione.">
    **Configurazione della whitelist Admin:**

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

    **Configurazione utente corrispondente (`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"
          }
        }
      }
    }
    ```

    Gli utenti devono usare questa configurazione esatta: qualsiasi variazione nel comando o negli argomenti verrà bloccata. La sezione `env` può contenere valori diversi.
  </Accordion>

  <Accordion title="Opzione 3: pattern regex flessibili" description="Usa pattern regex per consentire variazioni nelle configurazioni utente, mantenendo i controlli di sicurezza.">
    **Configurazione della whitelist Admin:**

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

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

    **Configurazione utente corrispondente (`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"
          }
        }
      }
    }
    ```

    Questo esempio offre flessibilità agli utenti mantenendo la sicurezza:

    * La regex `/.*\\.py` corrisponde a qualsiasi percorso di file Python, ad esempio `/home/user/my_server.py`
    * La regex `[0-9]+` corrisponde a qualsiasi porta numerica, ad esempio `8080` o `3000`
    * Gli utenti possono personalizzare i percorsi dei file e le porte, mentre gli admin garantiscono che vengano eseguiti solo script Python
  </Accordion>
</AccordionGroup>

<div id="common-regex-patterns">
  ### Pattern regex comuni
</div>

| Pattern         | Corrisponde a                 | Esempio                |
| --------------- | ----------------------------- | ---------------------- |
| `.*`            | Qualsiasi stringa             | `/home/user/script.py` |
| `[0-9]+`        | Qualsiasi numero              | `8080`, `3000`         |
| `[a-zA-Z0-9_]+` | Alfanumerico + trattino basso | `api_key_123`          |
| `\\$HOME`       | `$HOME` letterale             | `$HOME` (non espanso)  |
| `\\.py`         | `.py` letterale               | `script.py`            |
| `\\[cli\\]`     | `[cli]` letterale             | `mcp[cli]`             |

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

<div id="admin-configuration-guidelines">
  ### Linee guida per la configurazione Admin
</div>

* **Variabili d'ambiente**: la sezione `env` non è soggetta a corrispondenza regex e può essere configurata liberamente dagli utenti
* **Strumenti disabilitati**: l'array `disabledTools` viene gestito separatamente e non rientra nella corrispondenza con la whitelist
* **Sensibilità a maiuscole e minuscole**: tutte le corrispondenze distinguono tra maiuscole e minuscole
* **Gestione degli errori**: i pattern regex non validi verranno registrati nei log e comporteranno il rifiuto dell'accesso
* **Testing**: testa con attenzione i tuoi pattern regex: pattern troppo restrittivi possono bloccare casi d'uso legittimi

<div id="troubleshooting">
  ### Risoluzione dei problemi
</div>

Se gli utenti segnalano che i loro server MCP non funzionano dopo essere stati inseriti nella whitelist:

1. **Verifica della corrispondenza esatta**: assicurati che il pattern della whitelist corrisponda esattamente alla configurazione dell'utente
2. **Verifica dell'escape regex**: i caratteri speciali potrebbero richiedere l'escape (ad es. `\.` per i punti letterali)
3. **Controlla i log**: i pattern regex non validi vengono registrati con avvisi
4. **Testa i pattern**: usa un tester regex per verificare che i tuoi pattern funzionino come previsto

Ricorda: una volta inserito un qualsiasi server nella whitelist, **tutti gli altri server vengono automaticamente bloccati** per i membri del tuo team.

<div id="general-information">
  ### Informazioni generali
</div>

* Poiché le chiamate agli strumenti MCP possono invocare codice scritto da implementatori di server di terze parti, non ci assumiamo alcuna responsabilità
  per errori nelle chiamate agli strumenti MCP. Per ribadirlo:
* Attualmente supportiamo [strumenti](https://modelcontextprotocol.io/docs/concepts/tools), [risorse](https://modelcontextprotocol.io/docs/concepts/resources) e [prompt](https://modelcontextprotocol.io/docs/concepts/prompts) di un server MCP.
