Cosa puoi fare con MCP
Con i server MCP connessi, puoi chiedere a Claude Code di:- Implementare funzionalità da issue tracker: “Aggiungi la funzionalità descritta nel ticket JIRA ENG-4521 e crea una PR su GitHub.”
- Analizzare dati di monitoraggio: “Controlla Sentry e Statsig per verificare l’utilizzo della funzionalità descritta in ENG-4521.”
- Interrogare database: “Trova gli indirizzi email di 10 utenti casuali che hanno utilizzato la funzionalità ENG-4521, in base al nostro database PostgreSQL.”
- Integrare design: “Aggiorna il nostro modello di email standard in base ai nuovi design Figma che sono stati pubblicati su Slack”
- Automatizzare flussi di lavoro: “Crea bozze Gmail invitando questi 10 utenti a una sessione di feedback sulla nuova funzionalità.”
- Reagire a eventi esterni: Un server MCP può anche agire come un canale che invia messaggi nella tua sessione, in modo che Claude reagisca ai messaggi Telegram, chat Discord o eventi webhook mentre sei assente.
Trovare e costruire server MCP
Sfoglia i connettori verificati nella Anthropic Directory. I connettori della Directory utilizzano la stessa infrastruttura MCP di Claude Code, quindi puoi aggiungere qualsiasi server remoto elencato lì conclaude mcp add.
Per costruire il tuo server, consulta la guida al server MCP per i fondamenti del protocollo e la documentazione sulla creazione di connettori Claude per l’autenticazione, i test e l’invio alla Directory.
Puoi anche far scaffoldare un server da Claude con il plugin ufficiale mcp-server-dev.
Installa il plugin
/plugin marketplace add anthropics/claude-plugins-official, quindi riprova l’installazione. Una volta installato, esegui /reload-plugins per attivarlo nella sessione corrente.Esegui lo skill di compilazione
Installazione dei server MCP
I server MCP possono essere configurati in diversi modi a seconda delle vostre esigenze:Opzione 1: Aggiungi un server HTTP remoto
I server HTTP sono l’opzione consigliata per connettersi ai server MCP remoti. Questo è il trasporto più ampiamente supportato per i servizi basati su cloud..mcp.json, ~/.claude.json, o claude mcp add-json, il campo type accetta streamable-http come alias per http. La specifica MCP utilizza il nome streamable-http per questo trasporto, quindi le configurazioni copiate dalla documentazione del server funzionano senza modifiche.
Una voce JSON che ha un url ma nessun type è un errore di configurazione, perché Claude Code legge una voce senza type come un server stdio. Claude Code salta quel server e segnala MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry. Prima della v2.1.202, Claude Code segnalava questa configurazione errata come command: expected string, received undefined.
Opzione 2: Aggiungi un server SSE remoto
Opzione 3: Aggiungi un server stdio locale
I server stdio vengono eseguiti come processi locali sulla vostra macchina. Sono ideali per strumenti che necessitano di accesso diretto al sistema o script personalizzati. Claude Code impostaCLAUDE_PROJECT_DIR nell’ambiente del server generato alla radice del progetto, in modo che il vostro server possa risolvere i percorsi relativi al progetto senza dipendere dalla directory di lavoro. Questa è la stessa directory che gli hook ricevono nella loro variabile CLAUDE_PROJECT_DIR. Leggetela dall’interno del vostro processo server, ad esempio process.env.CLAUDE_PROJECT_DIR in Node o os.environ["CLAUDE_PROJECT_DIR"] in Python.
CLAUDE_PROJECT_DIR è la radice stabile del progetto e non cambia quando aggiungete o rimuovete directory di lavoro durante la sessione. Un server che limita il proprio accesso al filesystem a un insieme di directory consentite dovrebbe implementare la richiesta MCP roots/list. Claude Code risponde a roots/list con la directory di avvio della sessione più ogni directory di lavoro aggiuntiva che avete concesso con --add-dir, /add-dir, o l’impostazione additionalDirectories. Claude Code invia notifications/roots/list_changed quando tale insieme cambia. Prima della v2.1.203, roots/list restituiva solo la directory di avvio e Claude Code non inviava notifications/roots/list_changed.
Questa variabile è impostata nell’ambiente del server, non nell’ambiente di Claude Code stesso, quindi farvi riferimento tramite l’espansione ${VAR} in un .mcp.json con ambito progetto o utente command o args richiede un valore predefinito come ${CLAUDE_PROJECT_DIR:-.}. Le configurazioni MCP fornite da plugin sostituiscono ${CLAUDE_PROJECT_DIR} direttamente e non hanno bisogno del valore predefinito.
--Per i server stdio, il -- (doppio trattino) separa le opzioni di Claude, come --transport, --env, e --scope, dal comando e dagli argomenti che eseguono il server. Tutto ciò che viene dopo -- viene passato al server senza modifiche.Per esempio:claude mcp add --transport stdio myserver -- npx server→ eseguenpx serverclaude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080→ eseguepython server.py --port 8080conKEY=valuenell’ambiente
--, Claude Code cercherebbe di analizzare i flag del server, come --port sopra, come proprie opzioni.--env accetta più coppie KEY=value. Se il nome del server viene direttamente dopo --env, la CLI legge il nome come un’altra coppia e lo rifiuta, quindi posizionate almeno un’altra opzione tra --env e il nome del server, come negli esempi sopra.Opzione 4: Aggiungi un server WebSocket remoto
I server WebSocket mantengono una connessione bidirezionale persistente, che si adatta ai server MCP remoti che inviano eventi a Claude senza sollecitazione. Utilizza HTTP invece quando il vostro server risponde solo alle richieste, poiché HTTP supporta OAuth e il flagclaude mcp add --transport, mentre WebSocket non supporta nessuno dei due.
Configura i server WebSocket in .mcp.json o con claude mcp add-json:
type: "ws" accetta gli stessi campi url, headers, headersHelper, timeout, e alwaysLoad di http. L’autenticazione è solo tramite header, quindi passa un token statico in headers o generane uno al momento della connessione con headersHelper. Il flag claude mcp add --transport non accetta ws.
Gestione dei vostri server
Una volta configurati, potete gestire i vostri server MCP con questi comandi:.mcp.json che sono in attesa della vostra approvazione appaiono in claude mcp list come ⏸ Pending approval. Esegui claude in modo interattivo per esaminarli e approvarli. claude mcp get <name> mostra i server in sospeso come ⏸ Pending approval e i server rifiutati come ✗ Rejected.
A partire dalla v2.1.196, claude mcp list e claude mcp get leggono le approvazioni .mcp.json solo dai file di impostazioni che non sono archiviati nel repository finché non fidate dell’area di lavoro eseguendo claude in essa e accettando la finestra di dialogo di trust dell’area di lavoro. Un repository clonato non può approvare i propri server: enableAllProjectMcpServers o enabledMcpjsonServers committati nel .claude/settings.json del progetto vengono ignorati in una cartella non attendibile, e il server rimane a ⏸ Pending approval invece di essere connesso e sottoposto a health-check.
Le approvazioni da queste fonti si applicano ancora in una cartella non attendibile:
- il vostro
~/.claude/settings.jsonutente - impostazioni gestite
- impostazioni passate con
--settings
.claude/settings.local.json non tracciato si applicano anche, ma solo dopo che accettate una finestra di dialogo di trust per quella cartella o una delle sue directory padre: Claude Code esegue git per verificare se il file è tracciato, ed esegue quel controllo solo in una cartella attendibile. In una cartella che non avete mai fidata, le approvazioni del file attendono la finestra di dialogo di trust a meno che la cartella non sia la vostra home di configurazione: la vostra home directory, o una directory il cui .claude avete impostato come CLAUDE_CONFIG_DIR. Prima della v2.1.207, un .claude/settings.local.json non tracciato approvava i server in una cartella che non avete mai fidata.
Una voce disabledMcpjsonServers in qualsiasi file di impostazioni rifiuta comunque il server.
Il pannello /mcp mostra il conteggio degli strumenti accanto a ogni server connesso e contrassegna i server che pubblicizzano la capacità degli strumenti ma non espongono alcuno strumento.
Un server remoto la cui configurazione ha un url vuoto appare come not configured in /mcp, in claude mcp list, e nel gestore /plugin, e Claude Code non tenta di connettersi ad esso. Un plugin può includere una voce segnaposto come questa per un connettore che configurate in seguito, in modo che Claude Code non lo segnali come un errore o un problema di configurazione. La vista dei dettagli del server in /mcp legge No URL configured for this server; impostare l’url della voce per connettersi. Prima della v2.1.208, Claude Code segnalava un url vuoto come un problema di configurazione con un prompt per riconnettersi.
Se la vostra richiesta ha bisogno di strumenti da un server che è ancora in fase di connessione in background, Claude attende quel server prima di continuare. Con la ricerca degli strumenti abilitata, che è l’impostazione predefinita, l’attesa avviene all’interno della chiamata ToolSearch. Nelle configurazioni senza ricerca degli strumenti, come Google Cloud’s Agent Platform, un ANTHROPIC_BASE_URL personalizzato, o ENABLE_TOOL_SEARCH=false, Claude utilizza lo strumento WaitForMcpServers invece.
Alcuni nomi di server sono riservati per i server integrati di Claude Code: workspace, claude-in-chrome, computer-use, Claude Preview, e Claude Browser. Se la vostra configurazione definisce un server con un nome riservato, Claude Code lo salta al momento del caricamento e mostra un avviso chiedendovi di rinominarlo. claude mcp add rifiuta un nome riservato con un errore.
Claude Preview e Claude Browser denominano entrambi il server integrato che il riquadro di anteprima dell’app desktop Claude Code utilizza. Prima della v2.1.205, Claude Browser non era riservato, quindi un server configurato dall’utente poteva registrarsi con quel nome.
Aggiornamenti dinamici degli strumenti
Claude Code supporta le notifichelist_changed di MCP, consentendo ai server MCP di aggiornare dinamicamente i loro strumenti, prompt e risorse disponibili senza richiedere di disconnettersi e riconnettersi. Quando un server MCP invia una notifica list_changed, Claude Code aggiorna automaticamente le capacità disponibili da quel server.
Riconnessione automatica
Se un server HTTP o SSE si disconnette durante una sessione, Claude Code si riconnette automaticamente con backoff esponenziale: fino a cinque tentativi, a partire da un ritardo di un secondo e raddoppiando ogni volta. Il server appare come in sospeso in/mcp mentre la riconnessione è in corso. Dopo cinque tentativi falliti il server è contrassegnato come non riuscito e potete riprovare manualmente da /mcp. I server stdio sono processi locali e non vengono riconnessi automaticamente.
Lo stesso backoff si applica quando un server HTTP o SSE non riesce la sua connessione iniziale all’avvio. A partire dalla v2.1.121, Claude Code ritenta la connessione iniziale fino a tre volte su errori transitori come una risposta 5xx, una connessione rifiutata o un timeout, quindi contrassegna il server come non riuscito se ancora non riesce a connettersi. Gli errori di autenticazione e di non trovato non vengono ritentati perché richiedono una modifica della configurazione per essere risolti.
Quando un server configurato non riesce a connettersi, Claude Code dice a Claude quale server non ha avuto successo e il suo errore di connessione, incluso nei risultati ToolSearch che non trovano alcuno strumento corrispondente, in modo che Claude segnali l’errore di connessione nella sua risposta. Richiede la ricerca degli strumenti, che è abilitata per impostazione predefinita. Nelle configurazioni senza ricerca degli strumenti, come un ANTHROPIC_BASE_URL personalizzato, ENABLE_TOOL_SEARCH=false, o un modello che non supporta la ricerca degli strumenti, e su Amazon Bedrock, Google Cloud’s Agent Platform, e Microsoft Foundry, Claude Code non segnala gli errori di connessione del server fallito a Claude. Prima della v2.1.205, Claude Code non passava gli errori di connessione a Claude, e Claude poteva rispondere come se gli strumenti del server fallito non fossero mai stati configurati.
A partire dalla v2.1.191, le richieste di scoperta delle capacità che vengono eseguite dopo una connessione riuscita, come tools/list, prompts/list, e resources/list, ritentano anche gli errori di rete transitori e del server fino a tre volte con backoff breve. Gli errori di autenticazione, le risposte 4xx e i timeout delle richieste non vengono ritentati.
Invia messaggi con canali
Un server MCP può anche inviare messaggi direttamente nella vostra sessione in modo che Claude possa reagire a eventi esterni come risultati CI, avvisi di monitoraggio o messaggi di chat. Per abilitare questa funzionalità, il vostro server dichiara la capacitàclaude/channel e voi la abilitate con il flag --channels all’avvio. Vedi Channels per utilizzare un canale ufficialmente supportato, oppure Channels reference per costruire il vostro.
Il timeout per server è un limite rigido di wall-clock per chiamata dello strumento, e le notifiche di progresso dal server non lo estendono. I valori inferiori a 1000 sono ignorati e ricadono in MCP_TOOL_TIMEOUT, o nel suo valore predefinito di circa 28 ore quando quella variabile non è impostata. Per un server HTTP, SSE, o connettore claude.ai c’è anche un secondo timer per richiesta che copre ogni richiesta fino al primo byte di risposta del server. Quel timer è di 60 secondi a meno che non impostiate il timeout per server o MCP_TOOL_TIMEOUT; impostare uno di essi a 60 secondi o superiore aumenta il timer per richiesta a quel valore, un valore inferiore non lo accorcia, e il valore predefinito di 28 ore di un MCP_TOOL_TIMEOUT non impostato non lo alimenta mai. I server stdio e WebSocket non hanno un timer per richiesta. Prima della v2.1.162, i valori inferiori a 1000 erano arrotondati a un secondo.
Un timeout per server di almeno 1000 agisce anche come limite inferiore sul timeout di inattività descritto di seguito: Claude Code non interrompe mai le chiamate dello strumento di quel server per inattività prima del timeout per server. Richiede Claude Code v2.1.203 o successivo.
Una chiamata dello strumento a un server MCP che non invia alcuna risposta e nessuna notifica di progresso per la finestra di inattività si interrompe con un errore invece di attendere il limite di wall-clock. Il timeout di inattività richiede Claude Code v2.1.187 o successivo. Si applica a ogni tipo di server tranne i server IDE e i server in-process SDK. La finestra di inattività è predefinita a cinque minuti per i server HTTP, SSE, WebSocket, e connettore claude.ai, e a 30 minuti per i server stdio. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività.
Imposta la variabile di ambiente CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT in millisecondi per modificare la finestra di inattività, o impostala su 0 per disabilitare il controllo.
Server MCP forniti da plugin
I plugin possono raggruppare server MCP, fornendo automaticamente strumenti e integrazioni quando il plugin è abilitato. I server MCP dei plugin funzionano in modo identico ai server configurati dall’utente. Come funzionano i server MCP dei plugin:- I plugin definiscono i server MCP in
.mcp.jsonnella radice del plugin o inline inplugin.json - Quando un plugin è abilitato, i suoi server MCP si avviano automaticamente
- Gli strumenti MCP del plugin appaiono insieme agli strumenti MCP configurati manualmente
- I server dei plugin vengono gestiti tramite l’installazione del plugin, non tramite comandi
/mcp
.mcp.json nella radice del plugin:
plugin.json:
- Ciclo di vita automatico: all’avvio della sessione, i server per i plugin abilitati si connettono automaticamente. Se abilitate o disabilitate un plugin durante una sessione, eseguite
/reload-pluginsper connettere o disconnettere i suoi server MCP - Variabili di percorso:
${CLAUDE_PLUGIN_ROOT}si risolve nella directory di installazione del plugin,${CLAUDE_PLUGIN_DATA}nella sua directory di stato persistente, e${CLAUDE_PROJECT_DIR}nella radice stabile del progetto. La sostituzione si applica a:- server
stdio:command,args,env - server
http,sse, ews:url,headers, eheadersHelper. Prima della v2.1.195,headersHelperpassava il segnaposto come una stringa letterale
- server
- Accesso alle variabili di ambiente dell’utente: accesso alle stesse variabili di ambiente dei server configurati manualmente
- Tipi di trasporto multipli: supporto per trasporti stdio, SSE, HTTP e WebSocket, anche se il supporto del trasporto può variare a seconda del server
mcp__plugin_<plugin-name>_<server-name>__<tool-name>, dove qualsiasi carattere al di fuori di A-Z, a-z, 0-9, _, e - viene sostituito con _. Per il server database-tools raggruppato in un plugin denominato my-plugin, uno strumento query è richiamabile come:
allowed-tools di una skill, nel campo tools di un subagent, o in un matcher di hook. Un matcher di hook scritto rispetto alla chiave del server nuda, come mcp__database-tools__.*, non si attiva mai per un server raggruppato in un plugin.
Il server stesso si registra sotto il nome con ambito plugin:<plugin-name>:<server-name>, come plugin:my-plugin:database-tools. Utilizza quel nome dove è previsto un nome di server configurato, come il campo server di un hook mcp_tool.
Vantaggi dei server MCP dei plugin:
- Distribuzione raggruppata: strumenti e server confezionati insieme
- Configurazione automatica: nessuna configurazione MCP manuale necessaria
- Coerenza del team: tutti ottengono gli stessi strumenti quando il plugin è installato
Ambiti di installazione MCP
I server MCP possono essere configurati a tre ambiti diversi. L’ambito che scegli controlla in quali progetti il server viene caricato e se la configurazione è condivisa con il tuo team. Gli amministratori possono anche distribuire server a livello aziendale tramite configurazione gestita.Ambito locale
L’ambito locale è il predefinito. Un server con ambito locale viene caricato solo nel progetto in cui lo hai aggiunto e rimane privato per te. Claude Code lo archivia in~/.claude.json nel percorso di quel progetto, quindi lo stesso server non apparirà nei tuoi altri progetti. Utilizza l’ambito locale per server di sviluppo personali, configurazioni sperimentali o server con credenziali che non desideri nel controllo della versione.
~/.claude.json (la tua directory home), mentre le impostazioni locali generali utilizzano .claude/settings.local.json (nella directory del progetto). Vedi Impostazioni per i dettagli sui percorsi dei file di impostazioni.~/.claude.json. L’esempio seguente mostra il risultato quando lo esegui da /path/to/your/project:
Ambito del progetto
I server con ambito del progetto abilitano la collaborazione del team archiviando le configurazioni in un file.mcp.json nella directory radice del tuo progetto. Questo file è progettato per essere archiviato nel controllo della versione, assicurando che tutti i membri del team abbiano accesso agli stessi strumenti e servizi MCP. Quando aggiungi un server con ambito del progetto, Claude Code crea o aggiorna automaticamente questo file con la struttura di configurazione appropriata.
.mcp.json risultante segue un formato standardizzato:
.mcp.json. Se devi ripristinare queste scelte di approvazione, utilizza il comando claude mcp reset-project-choices.
Ambito utente
I server con ambito utente vengono archiviati in~/.claude.json e forniscono accessibilità tra progetti, rendendoli disponibili in tutti i progetti sulla tua macchina mentre rimangono privati al tuo account utente. Questo ambito funziona bene per server di utilità personali, strumenti di sviluppo o servizi che utilizzi frequentemente in diversi progetti.
Gerarchia e precedenza dell’ambito
Quando lo stesso server è definito in più di un posto, Claude Code si connette ad esso una volta, utilizzando la definizione dalla fonte con la precedenza più alta. L’intera voce del server da quella fonte viene utilizzata; i campi non vengono uniti tra gli ambiti.- Ambito locale
- Ambito del progetto
- Ambito utente
- Server forniti da plugin
- Connettori claude.ai
Espansione delle variabili di ambiente in .mcp.json
Claude Code supporta l’espansione delle variabili di ambiente nei file .mcp.json, consentendo ai team di condividere configurazioni mantenendo flessibilità per i percorsi specifici della macchina e i valori sensibili come le chiavi API.
Sintassi supportata:
${VAR}: si espande al valore della variabile di ambienteVAR${VAR:-default}: si espande aVARse impostato, altrimenti utilizzadefault
command: il percorso dell’eseguibile del serverargs: argomenti della riga di comandoenv: variabili di ambiente passate al serverurl: per i tipi di server HTTPheaders: per l’autenticazione del server HTTP
${VAR} nel valore e segnala un avviso di variabile mancante per quel server. La configurazione viene comunque caricata, quindi imposta la variabile o aggiungi un fallback :-default in modo che il server si avvii con il valore che intendi.
Esempi pratici
Esempio: Monitora gli errori con Sentry
Esempio: Connettiti a GitHub per le revisioni del codice
Il server MCP remoto di GitHub si autentica con un token di accesso personale GitHub passato come header. Per ottenerne uno, apri le impostazioni del token GitHub, genera un nuovo token con granularità fine con accesso ai repository con cui desideri che Claude lavori, quindi aggiungi il server:Esempio: Interroga il tuo database PostgreSQL
Autenticazione con server MCP remoti
Molti server MCP basati su cloud richiedono l’autenticazione. Claude Code supporta OAuth 2.0 per connessioni sicure. Claude Code contrassegna un server remoto come richiedente autenticazione quando il server risponde con401 Unauthorized o 403 Forbidden. Per un server a cui non hai effettuato l’accesso, uno di questi codici di stato lo contrassegna in /mcp in modo che tu possa completare il flusso OAuth.
Quando una richiesta a un server OAuth a cui hai già effettuato l’accesso restituisce 401 Unauthorized, Claude Code aggiorna il token archiviato, si riconnette e ritenta la richiesta una volta. Contrassegna il server in /mcp solo se anche quel tentativo non riesce. Prima della v2.1.206, un aggiornamento del token che non riusciva per un motivo transitorio, come un errore di rete, contrassegnava un server OAuth come richiedente autenticazione per il resto della sessione anche se il suo token di aggiornamento era ancora valido.
A partire da v2.1.195, quando un aggiornamento del token non riesce perché il server rifiuta il token di aggiornamento archiviato, Claude Code mostra immediatamente un avviso che punta a /mcp. Il menu del server connesso lì offre Re-authenticate, in modo che tu possa accedere di nuovo prima che la prossima chiamata dello strumento non riesca.
Un server personalizzato che restituisce un’intestazione WWW-Authenticate che punta al suo server di autorizzazione ottiene la stessa scoperta automatica di qualsiasi altro server remoto.
A partire da v2.1.193, Claude Code mostra anche un avviso di avvio quando uno o più server configurati richiedono l’autenticazione, quindi non è necessario aprire /mcp per scoprire quali server richiedono l’accesso.
In modalità non interattiva non c’è un pannello /mcp, quindi Claude Code non può eseguire il flusso OAuth per te. A partire da v2.1.196, quando un server configurato richiede l’autenticazione durante un’esecuzione claude -p o Agent SDK con ricerca degli strumenti abilitata, che è l’impostazione predefinita, Claude Code comunica a Claude che gli strumenti del server non sono disponibili fino a quando non lo autorizzi. Claude può quindi nominare il server che richiede l’accesso invece di rispondere come se il server non fosse configurato. Completa l’accesso da una sessione interattiva con /mcp o claude mcp login <name>.
Se hai configurato headers.Authorization per il server e il server rifiuta quell’intestazione, Claude Code segnala la connessione come non riuscita invece di ricorrere a OAuth. Verifica che il token sia valido per l’endpoint MCP, oppure rimuovi l’intestazione per utilizzare il flusso OAuth.
Aggiungi il server che richiede l'autenticazione
Utilizza il comando /mcp all'interno di Claude Code
Autenticazione dalla riga di comando
Da v2.1.186,claude mcp login <name> esegue il flusso OAuth di un server configurato direttamente dalla tua shell, quindi non è necessario aprire il pannello /mcp all’interno di una sessione.
claude mcp logout <name>.
A partire da v2.1.191, il comando rileva quando nessun browser locale è disponibile, ad esempio durante una sessione SSH o su Linux senza un server di visualizzazione, e stampa l’URL di autorizzazione invece di provare ad aprire un browser. Apri l’URL sulla tua macchina locale, quindi incolla l’URL di reindirizzamento completo dalla barra degli indirizzi del tuo browser al prompt. Il comando ha bisogno di un terminale interattivo per il passaggio di incollamento, quindi connettiti con ssh -t. Passa --no-browser per forzare il prompt dell’URL anche quando viene rilevato un browser locale.
Utilizza una porta di callback OAuth fissa
Alcuni server MCP richiedono un URI di reindirizzamento specifico registrato in anticipo. Per impostazione predefinita, Claude Code sceglie una porta disponibile casuale per il callback OAuth. Utilizza--callback-port per fissare la porta in modo che corrisponda a un URI di reindirizzamento pre-registrato della forma http://localhost:PORT/callback.
Puoi utilizzare --callback-port da solo (con registrazione dinamica del client) o insieme a --client-id (con credenziali pre-configurate).
Utilizza credenziali OAuth pre-configurate
Alcuni server MCP non supportano la configurazione OAuth automatica tramite Dynamic Client Registration. Se vedi un errore come “Incompatible auth server: does not support dynamic client registration,” il server richiede credenziali pre-configurate. Claude Code supporta anche server che utilizzano un Client ID Metadata Document (CIMD) invece di Dynamic Client Registration e li scopre automaticamente. Se la scoperta automatica non riesce, registra prima un’app OAuth tramite il portale degli sviluppatori del server, quindi fornisci le credenziali quando aggiungi il server.Registra un'app OAuth con il server
http://localhost:PORT/callback. Utilizza quella stessa porta con --callback-port nel passaggio successivo.Aggiungi il server con le tue credenziali
--callback-port può essere qualsiasi porta disponibile. Deve solo corrispondere all’URI di reindirizzamento che hai registrato nel passaggio precedente.- claude mcp add
- claude mcp add-json
- claude mcp add-json (solo porta di callback)
- CI / env var
--client-id per passare l’ID client della tua app. Il flag --client-secret richiede il segreto con input mascherato:Autenticati in Claude Code
/mcp in Claude Code e segui il flusso di accesso del browser.Sovrascrivi la scoperta dei metadati OAuth
Indirizza Claude Code a un URL di metadati OAuth specifico per bypassare la catena di scoperta predefinita. ImpostaauthServerMetadataUrl quando gli endpoint standard del server MCP generano errori, o quando desideri instradare la scoperta attraverso un proxy interno. Per impostazione predefinita, Claude Code controlla prima i metadati della risorsa protetta RFC 9728 su /.well-known/oauth-protected-resource, quindi ricade sui metadati del server di autorizzazione RFC 8414 su /.well-known/oauth-authorization-server.
Imposta authServerMetadataUrl nell’oggetto oauth della configurazione del tuo server in .mcp.json:
https://. L’scopes_supported dell’URL dei metadati sovrascrive gli ambiti che il server upstream pubblicizza.
Limita gli ambiti OAuth
Impostaoauth.scopes per fissare gli ambiti che Claude Code richiede durante il flusso di autorizzazione. Questo è il modo supportato per limitare un server MCP a un sottoinsieme approvato dal team di sicurezza quando il server di autorizzazione upstream pubblicizza più ambiti di quelli che desideri concedere. Il valore è una singola stringa separata da spazi, corrispondente al formato del parametro scope in RFC 6749 §3.3.
oauth.scopes ha la precedenza sia su authServerMetadataUrl che sugli ambiti che il server scopre su /.well-known. Lascialo non impostato per consentire al server MCP di determinare l’insieme di ambiti richiesti.
A partire da v2.1.196, quando oauth.scopes non è impostato, Claude Code richiede l’ambito fornito dall’intestazione WWW-Authenticate del server o dai suoi metadati della risorsa protetta, e non invia alcun parametro scope quando nessuno dei due lo fornisce. Non richiede più il catalogo completo di scopes_supported dai metadati del server di autorizzazione scoperto automaticamente. La richiesta di quel catalogo ha fatto sì che i provider di identità che pubblicizzano ambiti solo amministratore o modello rifiutassero la richiesta di autorizzazione con un errore invalid_scope. I metadati recuperati da un authServerMetadataUrl configurato forniscono comunque il loro scopes_supported come ambiti richiesti.
Se il server di autorizzazione pubblicizza offline_access in scopes_supported, Claude Code lo aggiunge agli ambiti fissati in modo che il token di accesso possa essere aggiornato senza un nuovo accesso al browser.
Se il server successivamente restituisce un 403 insufficient_scope per una chiamata di strumento, Claude Code si autentica di nuovo con gli stessi ambiti fissati. Amplia oauth.scopes quando uno strumento di cui hai bisogno richiede un ambito al di fuori del pin.
Utilizza intestazioni dinamiche per l’autenticazione personalizzata
Se il tuo server MCP utilizza uno schema di autenticazione diverso da OAuth, come Kerberos, token di breve durata o un SSO interno, utilizzaheadersHelper per generare intestazioni di richiesta al momento della connessione. Claude Code esegue il comando e unisce il suo output alle intestazioni di connessione.
- Il comando deve scrivere un oggetto JSON di coppie chiave-valore stringa su stdout
- Il comando viene eseguito in una shell con un timeout di 10 secondi, dalla directory di lavoro corrente della sessione. Utilizza un percorso assoluto o un comando su
PATHper lo script - Le intestazioni dinamiche sovrascrivono qualsiasi
headersstatico con lo stesso nome
401 Unauthorized o 403 Forbidden, Claude Code esegue automaticamente di nuovo l’helper, si riconnette con le intestazioni aggiornate e ritenta la chiamata una volta. Claude Code contrassegna il server come richiedente autenticazione in /mcp solo se anche quel tentativo non riesce.
Claude Code imposta queste variabili di ambiente quando esegue l’helper:
headersHelper relativo si risolve all’interno della directory del plugin piuttosto che rispetto alla directory di lavoro della sessione. Richiede Claude Code v2.1.195 o successiva.
Un headersHelper fornito da un plugin non può fare riferimento ai valori ${user_config.*} del plugin, perché il comando viene eseguito attraverso una shell. Claude Code segnala il server come non configurato correttamente con un errore e non sostituisce il valore. Metti ${user_config.KEY} nel campo headers del server, che non viene analizzato dalla shell, oppure fai in modo che lo script helper legga il valore dal suo ambiente o da un file di configurazione. Prima della v2.1.207, headersHelper sostituiva i valori ${user_config.*}.
headersHelper esegue comandi shell arbitrari. Quando definito a livello di progetto o locale, viene eseguito solo dopo che accetti la finestra di dialogo di fiducia dell’area di lavoro.Aggiungi server MCP dalla configurazione JSON
Se hai una configurazione JSON per un server MCP, puoi aggiungerla direttamente:Aggiungi un server MCP da JSON
Verifica che il server sia stato aggiunto
Importa server MCP da Claude Desktop
Se hai già configurato server MCP in Claude Desktop, puoi importarli:Importa server da Claude Desktop
Seleziona quali server importare
Verifica che i server siano stati importati
claude mcp possono contenere solo lettere, numeri, trattini e caratteri di sottolineatura. Claude Desktop non applica questa restrizione, quindi un server Claude Desktop il cui nome contiene qualsiasi altro carattere, come uno spazio, non può essere importato. L’importazione segnala ogni nome che rifiuta e continua comunque a importare gli altri server che hai selezionato. Prima della versione 2.1.205, il primo nome non valido interrompeva l’importazione e nessuno dei server selezionati veniva aggiunto.
Utilizza server MCP da claude.ai
Se hai effettuato l’accesso a Claude Code con un account claude.ai, i server MCP che hai aggiunto in claude.ai, noti come connectors, sono automaticamente disponibili in Claude Code:Configura server MCP in claude.ai
Autentica il server MCP
Visualizza e gestisci i server in Claude Code
Show unused connectors alla fine della sezione claude.ai, in modo che un elenco fornito dall’organizzazione non riempia il pannello. Seleziona la riga per espanderli. Un connettore a cui hai effettuato l’accesso in precedenza rimane visibile anche quando attualmente necessita di una nuova autenticazione.
I connettori da claude.ai vengono recuperati solo quando il tuo metodo di autenticazione attivo è il tuo abbonamento claude.ai. Non vengono caricati quando ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, apiKeyHelper, o un provider di terze parti come Amazon Bedrock o Google Cloud’s Agent Platform è attivo, anche se in precedenza hai eseguito /login.
Se /mcp non elenca un connettore che hai aggiunto, esegui /status per confermare quale metodo di autenticazione è attivo, annulla l’impostazione di quella variabile di ambiente o rimuovi l’impostazione apiKeyHelper, quindi esegui /login per selezionare il tuo account claude.ai.
Un server che hai aggiunto in Claude Code ha precedenza rispetto a un connettore claude.ai che punta allo stesso URL. Quando ciò accade, /mcp elenca il connettore come nascosto e mostra come rimuovere il duplicato se preferisci utilizzare il connettore.
Alcuni connettori ospitati da Anthropic, come Microsoft 365, Gmail e Google Calendar, non supportano OAuth locale da Claude Code perché il provider di identità upstream accetta solo l’URL di reindirizzamento registrato da claude.ai. A partire dalla v2.1.162, l’autenticazione di uno di questi host in /mcp mostra un messaggio che ti indirizza a collegarlo in Impostazioni → Connettori su claude.ai. Una volta collegato lì, il connettore appare in Claude Code automaticamente.
Controlli organizzativi sugli strumenti dei connettori
La tua organizzazione può impostare controlli per singolo strumento sui connettori claude.ai. Claude Code legge queste impostazioni all’avvio e le applica localmente. Esegui/mcp per vedere quale impostazione si applica a ogni strumento su un connettore.
- Strumento impostato su
ask: Claude Code richiede un’approvazione ad ogni chiamata con il motivoYour organization requires approval for this tool. La richiesta appare anche nelle modalità di autorizzazioneacceptEdits,autoebypassPermissions, e non offre mai un’opzione per ricordare la tua scelta. Le regole di autorizzazione che corrispondono allo strumento non saltano nemmeno la richiesta. In modalitàdontAsk, che non richiede mai, Claude Code nega la chiamata. - Strumento impostato su
blocked: Claude Code filtra lo strumento prima che Claude lo veda, quindi non appare mai nell’elenco degli strumenti.
Disabilita connettori claude.ai
Per disabilitare i server MCP di claude.ai in Claude Code, impostadisableClaudeAiConnectors su true in qualsiasi ambito di impostazioni:
true in qualsiasi fonte di impostazioni ha la precedenza. Un file .claude/settings.json del progetto archiviato può escludere un repository dai connettori cloud, ma un false a livello di progetto non può riabilitare i connettori che un true a livello di utente o di policy ha disabilitato. I server passati esplicitamente tramite --mcp-config non sono interessati.
Puoi anche impostare la variabile di ambiente ENABLE_CLAUDEAI_MCP_SERVERS su false, che ha lo stesso effetto per la sessione shell corrente:
deniedMcpServers per nome o per modello di URL. Ad esempio, una voce serverName di "claude.ai Slack" blocca il connettore Slack. Per attivare o disattivare un connettore solo per il progetto corrente, utilizza il pannello /mcp.
--mcp-config, quindi disableClaudeAiConnectors non si applica lì. Gli URL dei connettori vengono anche riscritti attraverso il proxy della sessione, quindi un modello serverUrl di deniedMcpServers che punta all’URL del fornitore non corrisponderà. Gestisci quali connettori una sessione cloud può utilizzare dalle impostazioni dell’organizzazione claude.ai.Utilizza Claude Code come server MCP
Puoi utilizzare Claude Code stesso come server MCP a cui altre applicazioni possono connettersi:Limiti di output MCP e avvisi
Quando gli strumenti MCP producono output di grandi dimensioni, Claude Code aiuta a gestire l’utilizzo dei token per evitare di sovraccaricare il contesto della vostra conversazione:- Soglia di avviso di output: Claude Code visualizza un avviso quando l’output di qualsiasi strumento MCP supera 10.000 token
- Limite configurabile: potete regolare il massimo di token di output MCP consentiti utilizzando la variabile di ambiente
MAX_MCP_OUTPUT_TOKENS - Limite predefinito: il massimo predefinito è 25.000 token
- Ambito: la variabile di ambiente si applica agli strumenti che non dichiarano il loro limite. Gli strumenti che impostano
anthropic/maxResultSizeCharsutilizzano quel valore invece per il contenuto di testo, indipendentemente da ciò cheMAX_MCP_OUTPUT_TOKENSè impostato. Gli strumenti che restituiscono dati di immagine sono ancora soggetti aMAX_MCP_OUTPUT_TOKENS
- interrogano grandi set di dati o database
- generano report o documentazione dettagliati
- elaborano file di log estesi o informazioni di debug
Aumenta il limite per uno strumento specifico
Se state costruendo un server MCP, potete consentire ai singoli strumenti di restituire risultati più grandi della soglia predefinita impostando_meta["anthropic/maxResultSizeChars"] nella voce dello strumento nella risposta tools/list. Claude Code aumenta la soglia di quello strumento al valore annotato, fino a un limite massimo di 500.000 caratteri.
Questo è utile per strumenti che restituiscono output intrinsecamente grandi ma necessari, come schemi di database o alberi di file completi. Senza l’annotazione, i risultati che superano la soglia predefinita vengono persistiti su disco e sostituiti con un riferimento a file nella conversazione.
MAX_MCP_OUTPUT_TOKENS per il contenuto di testo, quindi gli utenti non hanno bisogno di aumentare la variabile di ambiente per gli strumenti che la dichiarano. Gli strumenti che restituiscono dati di immagine sono ancora soggetti al limite di token.
Schemi di input degli strumenti con un combinatore a livello di radice
Alcuni server MCP dichiarano lo schema di input di uno strumento come un’unione JSON Schema, conanyOf, oneOf, o allOf al livello superiore dello schema. L’API Claude non accetta queste parole chiave alla radice dello schema. Accetta combinatori annidati all’interno di properties, che Claude Code invia senza modifiche.
A partire da Claude Code v2.1.195, gli strumenti con un combinatore a livello di radice rimangono disponibili. Prima di inviare lo strumento all’API, Claude Code appiattisce lo schema in un singolo oggetto e antepone una frase alla descrizione dello strumento che dice a Claude quali gruppi di parametri appartengono insieme:
allOf: le proprietà di ogni ramo vengono unite, e l’elencorequireddi ogni ramo si applica ancoraanyOfeoneOf: le proprietà di ogni ramo vengono unite, e l’elencorequireddi ogni ramo viene descritto nella descrizione dello strumento invece di essere applicato dallo schema
anyOf, oneOf, o allOf a livello di radice.
Richiedi approvazione per uno strumento specifico
Se stai costruendo un server MCP, puoi contrassegnare uno strumento come richiedente approvazione esplicita ad ogni chiamata impostando_meta["anthropic/requiresUserInteraction"] su true nella voce dello strumento nella risposta tools/list. Il valore deve essere il booleano JSON true; qualsiasi altro valore viene ignorato.
Claude Code mostra il prompt di autorizzazione di quello strumento ad ogni chiamata, anche in modalità acceptEdits, auto, e bypassPermissions permission modes, e non offre un’opzione “non chiedere di nuovo” per esso. Le regole di autorizzazione che corrispondono allo strumento non saltano il prompt neanche. In modalità dontAsk, che non chiede mai, Claude Code nega la chiamata invece.
Il prompt deve raggiungere una persona. In modalità non interattiva con --permission-prompt-tool, un risultato allow dal prompt tool per uno strumento contrassegnato viene convertito in un deny con il messaggio MCP tool requires user interaction; not supported via --permission-prompt-tool. Il callback canUseTool dell’Agent SDK riceve queste chiamate e può approvarle, perché l’host SDK dovrebbe mostrarle a un utente.
Utilizza questo per strumenti il cui prompt di autorizzazione è il punto stesso, come un passaggio di consenso o concessione di accesso dove l’approvazione automatica significherebbe che nessun umano ha mai accettato. Gli altri strumenti dello stesso server mantengono il loro comportamento di autorizzazione normale.
La seguente voce tools/list contrassegna uno strumento come sempre richiedente approvazione.
anthropic/requiresUserInteraction richiede Claude Code v2.1.199 o successiva. Le versioni precedenti la ignorano e applicano il flusso di autorizzazione standard.
Quando una sessione è connessa a Remote Control o a un host SDK, Claude Code contrassegna il prompt di autorizzazione come richiedente interazione dell’utente, in modo che il client mostri il prompt di autorizzazione dello strumento per te di rispondere invece di un’azione di approvazione con un tocco.
Rispondi alle richieste di elicitazione MCP
I server MCP possono richiedere input strutturato da te durante un’attività utilizzando l’elicitazione. Quando un server ha bisogno di informazioni che non può ottenere da solo, Claude Code visualizza una finestra di dialogo interattiva e passa la tua risposta al server. Non è richiesta alcuna configurazione da parte tua: le finestre di dialogo di elicitazione appaiono automaticamente quando un server le richiede. I server possono richiedere input in due modi:- Modalità modulo: Claude Code mostra una finestra di dialogo con campi modulo definiti dal server (per esempio, un prompt di nome utente e password). Compila i campi e invia.
- Modalità URL: Claude Code apre un URL del browser per l’autenticazione o l’approvazione. Completa il flusso nel browser, quindi conferma nella CLI.
Elicitation.
Se stai costruendo un server MCP che utilizza l’elicitazione, vedi la specifica di elicitazione MCP per i dettagli del protocollo e gli esempi di schema.
Utilizza risorse MCP
I server MCP possono esporre risorse che puoi referenziare utilizzando menzioni @, simile a come referenzi i file.Referenzia risorse MCP
Elenca le risorse disponibili
@ nel tuo prompt per vedere le risorse disponibili da tutti i server MCP connessi. Le risorse appaiono insieme ai file nel menu di completamento automatico.Referenzia una risorsa specifica
@server:protocol://resource/path per referenziare una risorsa:Referenze di risorse multiple
Scala con MCP Tool Search
Tool search mantiene l’utilizzo del contesto MCP basso rimandando le definizioni degli strumenti fino a quando Claude ne ha bisogno. Solo i nomi degli strumenti e le istruzioni del server vengono caricati all’avvio della sessione, quindi aggiungere più server MCP ha un impatto minimo sulla tua finestra di contesto. Claude Code non impone un limite fisso di strumenti per server; il limite pratico è il tuo budget della finestra di contesto.Come funziona
Tool search è abilitato per impostazione predefinita. Gli strumenti MCP vengono rimandati piuttosto che caricati nel contesto in anticipo, e Claude utilizza uno strumento di ricerca per scoprire quelli rilevanti quando un’attività ne ha bisogno. Solo gli strumenti che Claude effettivamente utilizza entrano nel contesto. Dal tuo punto di vista, gli strumenti MCP funzionano esattamente come prima. Se preferisci il caricamento basato su soglia, impostaENABLE_TOOL_SEARCH=auto per caricare gli schemi in anticipo quando si adattano entro il 10% della finestra di contesto e rimanda solo l’overflow. Vedi Configura tool search per tutte le opzioni.
Per gli autori di server MCP
Se stai costruendo un server MCP, il campo delle istruzioni del server diventa più utile con tool search abilitato. Le istruzioni del server aiutano Claude a capire quando cercare i tuoi strumenti, simile a come funzionano le skills. Aggiungi istruzioni del server chiare e descrittive che spieghino:- Quale categoria di attività gestiscono i tuoi strumenti
- Quando Claude dovrebbe cercare i tuoi strumenti
- Capacità chiave che il tuo server fornisce
Configura tool search
Tool search è abilitato per impostazione predefinita: gli strumenti MCP vengono rimandati e scoperti su richiesta. Claude Code lo disabilita per impostazione predefinita su Google Cloud’s Agent Platform. È anche disabilitato quandoANTHROPIC_BASE_URL punta a un host non di prima parte, poiché la maggior parte dei proxy non inoltrano blocchi tool_reference. Imposta ENABLE_TOOL_SEARCH esplicitamente per ignorare uno qualsiasi dei fallback.
Setting CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS mantiene tool search disabilitato, e ENABLE_TOOL_SEARCH non può ignorarlo. La variabile rimuove l’intestazione beta che le definizioni degli strumenti defer_loading e i blocchi di contenuto tool_reference richiedono.
Tool search richiede un modello che supporta blocchi tool_reference: Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5 e modelli successivi. Vedi compatibilità dei modelli nella documentazione API per l’elenco attuale. Su Google Cloud’s Agent Platform, tool search è supportato per Claude Sonnet 4.5 e successivi e Claude Opus 4.5 e successivi.
Controlla il comportamento di tool search con la variabile di ambiente ENABLE_TOOL_SEARCH:
env del tuo settings.json.
Puoi anche disabilitare lo strumento ToolSearch specificamente:
Esentare un server dal rinvio
Se gli strumenti di un server dovrebbero essere sempre visibili a Claude senza un passaggio di ricerca, impostaalwaysLoad su true nella configurazione di quel server. Ogni strumento da quel server viene quindi caricato nel contesto all’avvio della sessione indipendentemente dall’impostazione ENABLE_TOOL_SEARCH. Utilizza questa opzione per un piccolo numero di strumenti che Claude necessita ad ogni turno, poiché ogni strumento in anticipo consuma contesto che altrimenti sarebbe disponibile per la tua conversazione.
La seguente voce .mcp.json esentare un server HTTP mentre lascia gli altri server rimandati:
alwaysLoad è disponibile su tutti i tipi di server e richiede Claude Code v2.1.121 o successivo. Un server MCP può anche contrassegnare singoli strumenti come sempre caricati includendo "anthropic/alwaysLoad": true nell’oggetto _meta dello strumento, che ha lo stesso effetto solo per quello strumento.
L’impostazione di alwaysLoad: true blocca anche l’avvio fino a quando il server non si connette, limitato al timeout di connessione standard di 5 secondi. Questo si applica anche se MCP startup è altrimenti non-blocking per impostazione predefinita, poiché gli strumenti devono essere presenti quando viene costruito il primo prompt. Gli altri server continuano a connettersi in background.
Utilizza i prompt MCP come comandi
I server MCP possono esporre prompt che diventano disponibili come comandi in Claude Code.Esegui i prompt MCP
Scopri i prompt disponibili
/ per vedere tutti i comandi disponibili, inclusi quelli dai server MCP. I prompt MCP appaiono con il formato /mcp__servername__promptname.Esegui un prompt senza argomenti
Esegui un prompt con argomenti
Configurazione MCP gestita
Per le organizzazioni che necessitano di un controllo centralizzato su quali server MCP gli utenti possono connettere, consulta Configurazione MCP gestita. Copre la distribuzione di un set fisso di server conmanaged-mcp.json, la restrizione dei server con allowedMcpServers e deniedMcpServers, e cosa vedono gli utenti quando un server è bloccato.