50 50
51Quando distribuisci un file `managed-mcp.json`, Claude Code carica solo questi server MCP:51Quando distribuisci un file `managed-mcp.json`, Claude Code carica solo questi server MCP:
52 52
53* I server che il file definisce53* I server definiti nel file
54* I server che [fornisci attraverso `managedMcpServers`](#provide-servers-through-managed-settings)54* I server che [fornisci tramite `managedMcpServers`](#provide-servers-through-managed-settings)
55* I server in-process che l'app che ha avviato la sessione registra, come il server proprio dell'estensione VS Code o i [connettori che l'app desktop fornisce](/docs/it/mcp#how-connectors-reach-claude-code)55* I server in-process registrati dall'app che ha avviato la sessione, come il server proprio dell'estensione VS Code o i [connettori forniti dall'app desktop](/docs/it/mcp#how-connectors-reach-claude-code)
56* Il server integrato [Claude in Chrome](/docs/it/chrome), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)56* Il server integrato [Claude in Chrome](/docs/it/chrome), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)
57 57
58Gli utenti non possono aggiungere, modificare o utilizzare altri server MCP, inclusi i server forniti dai plugin e i server passati con il [flag CLI `--mcp-config`](/docs/it/cli-reference#cli-flags). Il file sopprime anche i connettori claude.ai che Claude Code recupera da solo, a meno che tu non [li consenta insieme al set gestito](#allow-claude-ai-connectors-alongside-the-managed-set).58Gli utenti non possono aggiungere, modificare o usare altri server MCP, inclusi i server forniti dai plugin e i server passati con il [flag CLI `--mcp-config`](/docs/it/cli-reference#cli-flags). Il file sopprime anche i connettori claude.ai che Claude Code recupera autonomamente, a meno che tu non li [consenta insieme al set gestito](#allow-claude-ai-connectors-alongside-the-managed-set).
59 59
60<h3 id="deploy-managed-mcp-json">60<h3 id="deploy-managed-mcp-json">
61 Distribuire managed-mcp.json61 Distribuire managed-mcp.json
62</h3>62</h3>
63 63
64`managed-mcp.json` è un file autonomo, quindi non può essere fornito attraverso [impostazioni gestite dal server](/docs/it/server-managed-settings). Per fornire server attraverso impostazioni gestite, senza controllo esclusivo, utilizza [`managedMcpServers`](#provide-servers-through-managed-settings).64`managed-mcp.json` è un file autonomo, quindi non può essere distribuito tramite le [impostazioni gestite dal server](/docs/it/server-managed-settings). Per fornire invece i server tramite le impostazioni gestite, senza controllo esclusivo, usa [`managedMcpServers`](#provide-servers-through-managed-settings).
65 65
66Qualsiasi processo che può scrivere in un percorso di sistema con privilegi di amministratore può distribuire il file. Su una flotta, di solito avviene attraverso strumenti di gestione dei dispositivi, come Jamf o un profilo di configurazione su macOS, Criteri di gruppo o Intune su Windows, o la gestione della flotta di tua scelta su Linux. Claude Code cerca il file in uno di questi percorsi:66Qualsiasi processo in grado di scrivere in un percorso di sistema con privilegi di amministratore può distribuire il file. Su una flotta di dispositivi, di solito si usano strumenti di gestione dei dispositivi, come Jamf o un profilo di configurazione su macOS, Criteri di gruppo o Intune su Windows, o lo strumento di gestione della flotta che preferisci su Linux. Claude Code cerca il file in uno di questi percorsi:
67 67
68| Piattaforma | Percorso |68| Piattaforma | Percorso |
69| :- | :- |69| :- | :- |
71| Linux e WSL | `/etc/claude-code/managed-mcp.json` |71| Linux e WSL | `/etc/claude-code/managed-mcp.json` |
72| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |72| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |
73 73
74Il file utilizza lo stesso formato di un file [`.mcp.json`](/docs/it/mcp#project-scope) del progetto:74Il file usa lo stesso formato di un file [`.mcp.json`](/docs/it/mcp#project-scope) di progetto:
75 75
76```json theme={null}76```json theme={null}
77{77{
100 Autenticarsi con credenziali per utente100 Autenticarsi con credenziali per utente
101</h3>101</h3>
102 102
103Qualsiasi utente sulla macchina può leggere questo file, quindi non memorizzare chiavi API o altre credenziali nei blocchi `env`. Passa credenziali per utente con uno di questi:103Qualsiasi utente della macchina può leggere questo file, quindi non memorizzare chiavi API o altre credenziali nei blocchi `env`. Passa invece le credenziali per utente con uno di questi metodi:
104 104
105* [Espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) per leggere i segreti dall'ambiente di ogni utente.105* [Espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) per leggere i segreti dall'ambiente di ciascun utente.
106* [OAuth o intestazioni per utente](/docs/it/mcp#authenticate-with-remote-mcp-servers) in modo che ogni utente si autentichi come se stesso.106* [OAuth o header per utente](/docs/it/mcp#authenticate-with-remote-mcp-servers) in modo che ogni utente si autentichi con la propria identità.
107* [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) per generare credenziali al momento della connessione.107* [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) per generare le credenziali al momento della connessione.
108 108
109<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">109<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">
110 Server passati con `--mcp-config` o `--strict-mcp-config`110 Server passati con `--mcp-config` o `--strict-mcp-config`
111</h3>111</h3>
112 112
113Quando una sessione riceve server attraverso `--mcp-config` mentre un `managed-mcp.json` che Claude Code può leggere e analizzare è distribuito, ciò che l'utente vede differisce tra una workstation e una sessione cloud:113Quando una sessione riceve server tramite `--mcp-config` mentre è distribuito un `managed-mcp.json` che Claude Code può leggere e analizzare, ciò che l'utente vede differisce tra una workstation e una sessione cloud:
114 114
115* Su una workstation, Claude Code esce all'avvio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.115* Su una workstation, Claude Code termina all'avvio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.
116* Nelle [sessioni cloud](/docs/it/claude-code-on-the-web) su un host dove il file è distribuito, come un [runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), Claude Code si avvia solo con i server gestiti e salta i connettori claude.ai e gli altri server che l'host cloud fornisce attraverso `--mcp-config`. Nulla nella sessione comunica all'utente quali server sono stati omessi. Claude Code li nomina in un avviso su stderr, che un runner self-hosted registra al livello di log `debug`.116* Nelle [sessioni cloud](/docs/it/claude-code-on-the-web) su un host in cui il file è distribuito, come un [runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), Claude Code si avvia solo con i server gestiti e ignora i connettori claude.ai e gli altri server che l'host cloud fornisce tramite `--mcp-config`. Nulla nella sessione indica all'utente quali server sono stati esclusi. Claude Code li elenca in un avviso sul proprio stderr, che un runner self-hosted registra al livello di log `debug`.
117 117
118Il flag `--strict-mcp-config` chiede di sostituire il set gestito. Se un utente lo passa mentre tale file è distribuito, Claude Code esce all'avvio sia su una workstation che in una sessione cloud.118Il flag `--strict-mcp-config` richiede di sostituire il set gestito. Se un utente lo passa mentre è distribuito un file di questo tipo, Claude Code termina all'avvio sia su una workstation sia in una sessione cloud.
119 119
120<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">120<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">
121 Come allowlist e denylists si applicano al set gestito121 Come si applicano allowlist e denylist al set gestito
122</h3>122</h3>
123 123
124La denylist può filtrare ulteriormente i server in `managed-mcp.json`:124La denylist può filtrare ulteriormente i server in `managed-mcp.json`:
125 125
126* `deniedMcpServers` si applica anche ai server gestiti, quindi un server gestito che corrisponde a una voce non verrà caricato.126* `deniedMcpServers` si applica anche ai server gestiti, quindi un server gestito che corrisponde a una voce non verrà caricato.
127* La propria `deniedMcpServers` di un utente si unisce dalle sue impostazioni, quindi gli utenti possono bloccare un server gestito per se stessi.127* Il `deniedMcpServers` di un utente viene unito tramite merge dalle sue impostazioni, quindi gli utenti possono bloccare un server gestito per se stessi.
128 128
129`allowedMcpServers` non si applica ai server in `managed-mcp.json`, con un'eccezione: Claude Code controlla comunque un server la cui definizione utilizza [espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) rispetto all'allowlist, perché la configurazione effettiva di quel server proviene dall'ambiente di ogni utente piuttosto che dal file solo. Prima della v2.1.259, ogni server gestito doveva passare l'allowlist ogni volta che uno era impostato. Vedi [Come viene valutato un server](#how-a-server-is-evaluated) per quali campi attivano il controllo `${VAR}` e l'ordine completo dei controlli.129`allowedMcpServers` non si applica ai server in `managed-mcp.json`, con un'eccezione: Claude Code verifica comunque rispetto all'allowlist un server la cui definizione usa l'[espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json), perché la configurazione effettiva di quel server deriva dall'ambiente di ciascun utente anziché dal solo file. Prima della v2.1.259, ogni server gestito doveva superare l'allowlist ogni volta che ne era impostata una. Consulta [Come viene valutato un server](#how-a-server-is-evaluated) per sapere quali campi attivano il controllo `${VAR}` e l'ordine completo dei controlli.
130 130
131Se hai utilizzato `allowedMcpServers` per impedire il caricamento di alcuni dei tuoi server `managed-mcp.json`, quei server inizieranno a caricarsi al primo avvio di v2.1.259 o successivo di ogni utente a meno che non utilizzino l'espansione `${VAR}`, senza prompt o avviso: solo `deniedMcpServers` continua a sottrarre da quei server. Aggiungi voci di denylist per loro, o distribuisci un `managed-mcp.json` separato per gruppo, prima che i tuoi utenti eseguano l'upgrade.131Se usavi `allowedMcpServers` per impedire il caricamento di alcuni dei tuoi server di `managed-mcp.json`, quei server iniziano a essere caricati al primo avvio della v2.1.259 o successiva da parte di ciascun utente, a meno che non usino l'espansione `${VAR}`, senza alcuna richiesta o avviso: solo `deniedMcpServers` continua a escludere quei server. Aggiungi voci della denylist per loro, oppure distribuisci un `managed-mcp.json` separato per ciascun gruppo, prima che i tuoi utenti eseguano l'aggiornamento.
132 132
133<h3 id="validate-the-configuration">133<h3 id="validate-the-configuration">
134 Convalidare la configurazione134 Convalidare la configurazione
135</h3>135</h3>
136 136
137Per confermare che il file è in vigore, esegui due controlli su una macchina gestita:137Per confermare che il file sia effettivo, esegui due controlli su una macchina gestita:
138 138
1391. `claude mcp list` mostra solo i server in `managed-mcp.json`, più quelli che fornisci attraverso `managedMcpServers`. Due altri risultati significano che qualcosa non va:1391. `claude mcp list` mostra solo i server in `managed-mcp.json`, più quelli che fornisci tramite `managedMcpServers`. Altri due risultati indicano un problema:
140 * Se i server propri di un utente appaiono ancora, Claude Code non sta leggendo il file, quindi controlla il percorso e le autorizzazioni sulle sue directory padre.140 * Se compaiono ancora i server propri di un utente, Claude Code non sta leggendo il file, quindi controlla il percorso e i permessi delle directory padre.
141 * Se i server del file non appaiono e la sezione `MCP config diagnostics` contrassegna la configurazione aziendale come non riuscita a analizzare, Claude Code non può leggere o analizzare il file. Correggi l'errore che quella sezione nomina, quindi fai riavviare Claude Code all'utente.141 * Se i server del file non compaiono e la sezione `MCP config diagnostics` indica che l'analisi della configurazione enterprise non è riuscita, Claude Code non riesce a leggere o analizzare il file. Correggi l'errore indicato in quella sezione, quindi chiedi all'utente di riavviare Claude Code.
1422. `claude mcp add --transport http test https://example.com/mcp` fallisce con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. L'URL non deve essere un server reale, poiché il controllo della policy rifiuta il comando prima che qualsiasi cosa venga contattata.1422. `claude mcp add --transport http test https://example.com/mcp` non riesce con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. Non è necessario che l'URL corrisponda a un server reale, poiché il controllo della policy rifiuta il comando prima di contattare qualsiasi cosa.
143 143
144<h3 id="disable-mcp-entirely">144<h3 id="disable-mcp-entirely">
145 Disabilitare MCP completamente145 Disabilitare completamente MCP
146</h3>146</h3>
147 147
148Distribuisci un `managed-mcp.json` contenente una mappa di server vuota per bloccare ogni server MCP a parte i [server in-process che l'app che ha avviato la sessione registra, come il server proprio dell'estensione VS Code o i connettori che l'app desktop fornisce](#exclusive-control-with-managed-mcp-json):148Distribuisci un `managed-mcp.json` contenente una mappa di server vuota per bloccare ogni server MCP tranne quelli che [vengono caricati in regime di controllo esclusivo](#exclusive-control-with-managed-mcp-json):
149 149
150```json theme={null}150```json theme={null}
151{151{
153}153}
154```154```
155 155
156`claude mcp add` fallisce con l'errore di policy aziendale di cui sopra. I server che gli utenti avevano precedentemente configurato smettono di caricarsi la prossima volta che avviano una sessione, senza avviso che la policy è il motivo. I server che fornisci attraverso `managedMcpServers`, e qualsiasi altra cosa tu consenta insieme al set gestito, si caricano comunque sotto una mappa vuota, quindi lascia quelle chiavi non impostate per disabilitare MCP completamente.156`claude mcp add` non riesce con l'errore della policy enterprise indicato sopra. I server configurati in precedenza dagli utenti smettono di essere caricati al successivo avvio di una sessione, senza alcun avviso che ne indichi la policy come causa. I server che fornisci tramite `managedMcpServers`, e qualsiasi altro elemento che consenti insieme al set gestito, vengono comunque caricati anche con una mappa vuota, quindi lascia queste chiavi non impostate per disattivare completamente MCP.
157 157
158<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">158<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">
159 Consentire i connettori claude.ai insieme al set gestito159 Consentire i connettori claude.ai insieme al set gestito
160</h3>160</h3>
161 161
162Per impostazione predefinita, la distribuzione di `managed-mcp.json` sopprime i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) che Claude Code recupera da solo, inclusi i connettori che un amministratore ha configurato per l'organizzazione nella console di amministrazione claude.ai. Per caricare quei connettori insieme ai server in `managed-mcp.json`, imposta `"allowAllClaudeAiMcps": true` in una [fonte di impostazioni gestite](/docs/it/admin-setup#decide-how-settings-reach-devices).162Per impostazione predefinita, la distribuzione di `managed-mcp.json` sopprime i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) che Claude Code recupera autonomamente, inclusi i connettori che un amministratore ha configurato per l'organizzazione nella console di amministrazione di claude.ai. Per caricare quei connettori insieme ai server in `managed-mcp.json`, imposta `"allowAllClaudeAiMcps": true` in una [fonte di impostazioni gestite](/docs/it/admin-setup#decide-how-settings-reach-devices).
163 163
164Con l'impostazione abilitata, Claude Code carica gli stessi connettori claude.ai che caricherrebbe se `managed-mcp.json` non fosse distribuito. [Allowlist e denylists](#policy-based-control-with-allowlists-and-denylists) si applicano comunque a quei connettori, quindi puoi bloccare quelli specifici con `deniedMcpServers`. L'impostazione influisce solo sui connettori claude.ai che Claude Code recupera da solo; i server forniti dai plugin rimangono soppressi.164Con l'impostazione attivata, Claude Code carica gli stessi connettori claude.ai che caricherebbe se `managed-mcp.json` non fosse distribuito. [Allowlist e denylist](#policy-based-control-with-allowlists-and-denylists) si applicano comunque a quei connettori, quindi puoi bloccarne alcuni specifici con `deniedMcpServers`. L'impostazione riguarda solo i connettori claude.ai che Claude Code recupera autonomamente; i server forniti dai plugin restano soppressi.
165 165
166Le sessioni cloud e le sessioni locali e SSH dell'app desktop ricevono i connettori in un altro modo, descritto in [Come i connettori raggiungono Claude Code](/docs/it/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sull'host che esegue una sessione cloud, come un [host runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), sopprime i connettori di quella sessione indipendentemente dal fatto che tu imposti `allowAllClaudeAiMcps`. Nessun `managed-mcp.json` raggiunge i connettori che l'app desktop fornisce alle sue sessioni locali e SSH.166Le sessioni cloud e le sessioni locali e SSH dell'app desktop ricevono i connettori in un altro modo, descritto in [Come i connettori raggiungono Claude Code](/docs/it/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sull'host che esegue una sessione cloud, come un [host di runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), sopprime i connettori di quella sessione indipendentemente dal fatto che tu imposti `allowAllClaudeAiMcps`. Nessun `managed-mcp.json` raggiunge i connettori che l'app desktop fornisce alle proprie sessioni locali e SSH.
167 167
168Claude Code legge `allowAllClaudeAiMcps` solo dai livelli di policy controllati dall'amministratore: impostazioni gestite dal server, una chiave plist distribuita da MDM o una chiave di registro HKLM, o un file `managed-settings.json` di sistema. Posizionarlo nelle impostazioni utente o progetto non ha effetto, quindi gli utenti non possono riabilitare i connettori che il controllo esclusivo ha soppresso.168Claude Code legge `allowAllClaudeAiMcps` solo dai livelli di policy controllati dall'amministratore: impostazioni gestite dal server, un plist distribuito tramite MDM o una chiave di registro HKLM, oppure un file `managed-settings.json` di sistema. Inserirla nelle impostazioni utente o di progetto non ha alcun effetto, quindi gli utenti non possono riattivare i connettori soppressi dal controllo esclusivo.
169 169
170<h3 id="allow-claude-in-chrome-alongside-the-managed-set">170<h3 id="allow-claude-in-chrome-alongside-the-managed-set">
171 Consentire Claude in Chrome insieme al set gestito171 Consentire Claude in Chrome insieme al set gestito
172</h3>172</h3>
173 173
174Per impostazione predefinita, quando distribuisci `managed-mcp.json`, Claude Code blocca il server integrato [Claude in Chrome](/docs/it/chrome) nelle sessioni di terminale. Gli utenti non ricevono il [prompt di installazione dell'estensione](/docs/it/chrome#install-the-extension-when-claude-asks), e una sessione in cui l'utente ha [abilitato Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default) si avvia senza Chrome e non stampa alcun avviso. Quando un utente che potrebbe altrimenti eseguire Claude in Chrome lo avvia con `claude --chrome` o `CLAUDE_CODE_ENABLE_CFC=1`, Claude Code esce all'avvio con un errore che nomina l'impostazione `allowClaudeInChromeWithManagedMcp`.174Per impostazione predefinita, quando distribuisci `managed-mcp.json`, Claude Code blocca il server integrato [Claude in Chrome](/docs/it/chrome) nelle sessioni del terminale. Gli utenti non ricevono la [richiesta di installazione dell'estensione](/docs/it/chrome#install-the-extension-when-claude-asks), e una sessione in cui l'utente ha [attivato Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default) si avvia senza di esso e non mostra alcun avviso. Se un utente che altrimenti potrebbe eseguire Claude in Chrome avvia `claude --chrome`, Claude Code termina all'avvio con un errore che indica l'impostazione `allowClaudeInChromeWithManagedMcp`.
175 175
176Per consentire agli utenti di eseguire Claude in Chrome insieme ai server in `managed-mcp.json`, imposta `"allowClaudeInChromeWithManagedMcp": true` nelle impostazioni gestite del dispositivo. Inseriscilo in una chiave plist distribuita da MDM o una chiave di registro HKLM, o un file `managed-settings.json` di sistema, a seconda di quale Claude Code [seleziona](/docs/it/managed-settings#precedence-within-the-managed-tier) su quel dispositivo. Richiede Claude Code v2.1.282 o successivo. Prima della v2.1.282, Claude Code ignora l'impostazione, e il messaggio di errore all'avvio recita `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.176Per consentire agli utenti di eseguire Claude in Chrome insieme al set gestito, imposta `"allowClaudeInChromeWithManagedMcp": true` nelle impostazioni gestite proprie del dispositivo. Inseriscila in un plist distribuito tramite MDM, in una chiave di registro HKLM o in un file `managed-settings.json` di sistema, a seconda di quale di queste fonti Claude Code [seleziona](/docs/it/managed-settings#precedence-within-the-managed-tier) su quel dispositivo. Richiede Claude Code v2.1.282 o successiva. Claude Code legge l'impostazione solo da queste fonti del dispositivo, anche quando le [impostazioni gestite dal server](/docs/it/server-managed-settings) forniscono il resto della tua policy. Una voce di [`deniedMcpServers`](#policy-based-control-with-allowlists-and-denylists) per `claude-in-chrome` blocca comunque il server anche con l'impostazione attivata.
177
178Claude Code legge l'impostazione da quelle fonti di dispositivo anche quando [impostazioni gestite dal server](/docs/it/server-managed-settings) forniscono il resto della tua policy. Ignora l'impostazione nelle impostazioni gestite dal server stesse, nel registro HKCU scrivibile dall'utente, e nelle impostazioni utente o progetto. Una voce [`deniedMcpServers`](#policy-based-control-with-allowlists-and-denylists) per `claude-in-chrome` blocca comunque il server con l'impostazione attiva.
179 177
180<h2 id="provide-servers-through-managed-settings">178<h2 id="provide-servers-through-managed-settings">
181 Fornire server tramite impostazioni gestite179 Fornire server tramite impostazioni gestite