> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/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-enterprise/67FeEoHHRVyS5z3e/desktop/assets/plugins/mcp-server-templates.jpg?fit=max&auto=format&n=67FeEoHHRVyS5z3e&q=85&s=4048ece2e59867bc0acfe3ae1e3376c3" 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 Admin (Team ed Enterprise)
</div>

Gli Admin del team possono attivare o disattivare l'accesso a MCP per il proprio team, nonché inserire nell'allowlist 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 Admin per il tuo team.</Warning>

Per impostazione predefinita, gli utenti di un team possono configurare i propri server MCP. Tuttavia, una volta inserito nell'allowlist anche un solo server MCP, **tutti i server non presenti nell'allowlist 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 allowlist, 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 allowlist 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 allowlist 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 allowlist 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 allowlist 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 l'allowlist
* **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 nell'allowlist:

1. **Verifica della corrispondenza esatta**: assicurati che il pattern dell'allowlist 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 nell'allowlist, **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.
