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
Marketplace "claude-plugins-official" non trovato: aggiungi il marketplace con/plugin marketplace add anthropics/claude-plugins-official, quindi riprova l’installazione.- Il plugin non è trovato nel marketplace: controlla il nome del plugin.
Run /reload-plugins to activate., Claude Code esegue quindi quel ricaricamento per te. Se il ricaricamento avverte che il tuo prossimo messaggio rileggerebbe la conversazione, esegui /reload-plugins --force.Esegui lo skill di compilazione
Installazione di server MCP
I server MCP possono essere configurati in diversi modi a seconda delle vostre esigenze:Opzione 1: Aggiungere un server HTTP remoto
I server HTTP sono l’opzione consigliata per connettersi a 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 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.
Solo un’applicazione host SDK, come un’applicazione Agent SDK o l’app desktop, può registrare un server in-process "type": "sdk". Claude Code salta una voce "type": "sdk" in .mcp.json, ~/.claude.json, o impostazioni e segnala Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register.
Nelle esecuzioni --output-format stream-json, Claude Code segnala anche una voce --mcp-config saltata nell’evento system/init nel campo mcp_server_errors, in modo che gli script possano rilevare che il server non è mai stato caricato. Questo richiede Claude Code v2.1.219 o successivo.
Opzione 2: Aggiungere un server SSE remoto
Alcuni servizi espongono ancora solo un endpoint SSE. Aggiungili con lo stesso comandoclaude mcp add --transport http <name> <url> di un server HTTP. Claude Code prova prima il trasporto HTTP e passa a SSE quando il server non lo accetta. Il passaggio automatico richiede Claude Code v2.1.265 o successivo.
Su una versione precedente, o per connettersi direttamente su SSE, passa --transport sse invece:
Opzione 3: Aggiungere 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 processo del vostro server, ad esempio process.env.CLAUDE_PROJECT_DIR in Node o os.environ["CLAUDE_PROJECT_DIR"] in Python.
CLAUDE_PROJECT_DIR è la radice del progetto stabile e non cambia quando aggiungete o rimuovete directory di lavoro a metà sessione. Un server che limita il proprio accesso al file system 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 quel set 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} nel command o args di una voce .mcp.json con ambito di progetto o una voce server con ambito locale o utente in ~/.claude.json 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.Ad 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 le sue stesse 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, come --transport stdio, tra --env e il nome del server.Opzione 4: Aggiungere 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. Utilizzate HTTP 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.
Configurate 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 intestazione, quindi passate un token statico in headers o generatene uno al momento della connessione con headersHelper. Il flag claude mcp add --transport non accetta ws.
Aggiungere un server da istruzioni di configurazione scritte per un altro client
I server MCP non sono specifici di Claude Code, quindi le istruzioni di configurazione di un server potrebbero essere scritte per Claude Desktop, Cursor, o un altro client MCP e non fornire alcun comandoclaude mcp add. Per aggiungere comunque il server, cercate in quelle istruzioni un URL, un comando di avvio, o un blocco JSON:
- Un URL come
https://mcp.example.com/mcp: il server è remoto. - Un comando di avvio come
npx -y @example/mcp-server: il server viene eseguito sulla vostra macchina. - Un blocco JSON
mcpServers: configurazione scritta per il file di impostazioni di un altro client.
--scope project o --scope user.
Da un URL
Un URL significa che il server è remoto. Per un endpointhttps://, aggiungetelo con --transport http, o seguite Opzione 2 quando le istruzioni dicono che l’endpoint utilizza SSE. Per un endpoint wss://, utilizzate Opzione 4 invece, poiché --transport non accetta ws:
--header come mostrato in Opzione 1.
Da un comando npx, uvx, o binario
Un comando di avvio significa che il server viene eseguito come processo stdio locale. Mettete l’intero comando dopo --, in modo che Claude Code passi flag come -y al comando che avvia il server invece di leggerli come le sue stesse opzioni. Passate tutte le variabili di ambiente che le istruzioni richiedono con --env, dopo il nome del server e prima di --:
-- completamente.
Da un blocco JSON mcpServers
Un blocco mcpServers scritto per un altro client MCP, come Claude Desktop, utilizza la chiave wrapper e la forma di voce che Claude Code legge. Passate a claude mcp add-json l’oggetto all’interno di mcpServers, non il wrapper. Due voci hanno bisogno di una riparazione prima:
- Un
urlsenzatype: aggiungete"type": "http","type": "sse", o"type": "ws"per corrispondere all’endpoint. Claude Code legge una voce senzatypecome server stdio, quindi una voceurlsenzatypefallisce. - Una chiave con caratteri diversi da lettere, numeri, trattini e sottolineature: scegliete un nome di server che utilizza solo quei caratteri. Altrimenti la chiave è il nome del server.
--scope per add-json. Per condividere il server con il vostro team, aggiungete --scope project, o aggiungete la voce sotto mcpServers in .mcp.json alla radice del vostro progetto e committala. Ambito di progetto copre come Claude Code carica e approva quel file.
Ogni comando claude mcp add e claude mcp add-json stampa una riga Added .... Per verificare che Claude Code si sia connesso, eseguite claude mcp get <name>; Stato del server copre gli stati che mostra e il passaggio di approvazione per i server .mcp.json.
Gestione dei vostri server
Una volta configurati, potete gestire i vostri server MCP con questi comandi:Stato del server
claude mcp add conferma un’aggiunta riuscita stampando una riga Added ..., il che significa che la configurazione è stata scritta. claude mcp list mostra quindi uno stato di salute accanto a ogni server che elenca, come ✔ Connected, ! Needs authentication, o ✘ Failed to connect. Uno stato di fallimento significa che Claude Code non poteva connettersi a quel server, non che il comando list sia fallito.
Gli stati in questo elenco segnalano una decisione di configurazione piuttosto che un tentativo di connessione, quindi Claude Code li stampa senza connettersi al server:
⏸ Pending approval (run `claude` to approve): un server con ambito di progetto da.mcp.jsonche non avete ancora approvato. Claude Code lo mostra sia inclaude mcp listche inclaude mcp get <name>. Eseguiteclaudein modo interattivo per rivederlo e approvarlo.✘ Rejected (see disabledMcpjsonServers in settings): un server.mcp.jsonche una vocedisabledMcpjsonServersrifiuta. Claude Code lo mostra solo inclaude mcp get <name>.⊘ Disabled for this project (re-enable via /mcp): un server che l’elencodisabledMcpServersdel progetto nomina. Claude Code lo mostra sia inclaude mcp listche inclaude mcp get <name>. Riattivate il server dal pannello/mcp. Prima della v2.1.238, entrambi i comandi si connettevano a un server disabilitato per verificarne lo stato di salute e segnalano il risultato della connessione.
claude mcp list. Utilizzate claude mcp get <name> o il pannello /mcp per controllarli.
Approvazioni del server di progetto e fiducia dell’area di lavoro
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 sottoposti a commit nel repository finché non fidate dell’area di lavoro eseguendo claude in essa e accettando la finestra di dialogo di fiducia dell’area di lavoro. Un repository clonato non può approvare i suoi stessi server: enableAllProjectMcpServers o enabledMcpjsonServers sottoposti a commit 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 verificato.
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, ma esegue git per verificare se il file è tracciato, ed esegue quel controllo solo in una cartella attendibile. In una cartella che non avete mai fidato, Claude Code attende la finestra di dialogo di fiducia prima di applicare le approvazioni del file, 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, Claude Code applicava le approvazioni da un .claude/settings.local.json non tracciato anche in una cartella che non avevate mai fidato.
Una voce disabledMcpjsonServers in qualsiasi file di impostazioni rifiuta comunque il server.
Dettaglio dello stato del server
In/mcp, incluso il menu di un server lì, e nel gestore /plugin, un server HTTP o SSE remoto che avete usato prima può mostrare uno stato cached come cached 2h ago · connects on first use · 5 tools. Claude Code ha caricato l’elenco degli strumenti del server dalla sua cache di scoperta, salvata in una sessione precedente, invece di connettersi all’avvio, e Claude Code connette il server la prima volta che Claude chiama uno degli strumenti del server. Gli strumenti sono disponibili dal vostro primo messaggio, quindi non dovete fare nulla. La cache di scoperta e il suo stato cached richiedono Claude Code v2.1.221 o successivo.
La cache di scoperta è disattivata per impostazione predefinita a meno che un rollout graduale non l’abbia abilitata per il vostro account. Impostate MCP_DISCOVERY_CACHE=1 per attivarla, o 0 per mantenerla disattivata anche quando il rollout l’ha abilitata. Prima della v2.1.238, la cache era attivata per impostazione predefinita.
Quando selezionate Disable o Clear authentication dal menu di un server in /mcp, Claude Code scarta anche la voce della cache di quel server. Reconnect la scarta anche su un server connesso o fallito; su un server cached, Reconnect connette il server ora e mantiene la voce. La prossima volta che Claude Code si connette al server dopo aver scartato la voce, recupera l’elenco degli strumenti dal server invece che dalla cache.
Quando lo stato di un server è ✘ Failed to connect, claude mcp list aggiunge il dettaglio del fallimento a quella riga di stato, e claude mcp get <name> lo mostra su una riga Issue:: il codice di stato HTTP o il codice di errore, più qualsiasi testo di errore che il server ha restituito. La vista dei dettagli del server in /mcp include lo stesso testo segnalato dal server nella sua riga Issue:. Claude Code redige il testo simile a credenziali da questo dettaglio e non include mai l’URL del server espanso, che può contenere segreti. Claude Code non aggiunge dettagli a uno stato ✘ Connection error, perché il testo dell’eccezione che stamperebbe lì può incorporare quell’URL. Prima della v2.1.219, entrambi i comandi mostravano solo lo stato di fallimento nudo, senza il codice di stato o il testo di errore del server.
Quando completate l’autenticazione da /mcp e la connessione fallisce ancora con uno stato HTTP o un codice di errore di trasporto, Claude Code aggiunge quel codice e l’origine dell’URL del server al messaggio che stampa dopo il tentativo. L’origine è lo schema e l’host, più la porta quando l’URL ne nomina una, come https://mcp.example.com.
- Il percorso e la query non appaiono mai in quel messaggio.
- Per un server nell’ambito locale, di progetto, o utente scope o nella configurazione MCP gestita, l’origine mostra l’host come scritto in quella configurazione, quindi un riferimento
${VAR}nell’host non viene espanso nel messaggio. - Per un fallimento senza codice di stato o di errore, Claude Code mostra il testo di errore senza l’origine.
url vuoto viene mostrato 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, quindi Claude Code non lo segnala come un errore o un problema di configurazione. La vista dei dettagli del server in /mcp legge No URL configured for this server; impostate l’url della voce per connetterla. Prima della v2.1.208, Claude Code segnalava un url vuoto come un problema di configurazione con un prompt per riconnettersi.
Avvisi di configurazione
Claude Code avverte sui problemi di configurazione di seguito. Ogni voce dice cosa Claude Code controlla e come cancellare l’avviso:- Spazi bianchi nascosti: Claude Code avverte quando un valore di configurazione MCP contiene spazi bianchi nascosti iniziali o finali, che spesso provengono dall’incollamento di un token con una nuova riga finale. Claude Code controlla
command,url, ogni voceargs, e i valori e i nomi delle chiavi sottoenveheaders. Claude Code mostra l’avviso nell’output diclaude mcp liste in/mcp, nominando i campi interessati senza echeggiare i loro valori, ad esempioLeading or trailing whitespace in: headers.Authorization. Claude Code non taglia gli spazi bianchi e utilizza i valori esattamente come scritti, quindi modificate la configurazione per rimuoverli. - Stesso nome in più di un ambito: se definite lo stesso nome di server in più di un scope con endpoint diversi, Claude Code avverte del conflitto nell’output di
claude mcp liste in/mcp. Claude Code memorizza gli accessi OAuth per endpoint, quindi quando autenticate la definizione che si carica in un progetto, dovete comunque accedere separatamente in un progetto dove si carica una definizione diversa. Mantenete l’endpoint che desiderate e rimuovete gli altri conclaude mcp remove <name> --scope <scope>. Nell’avviso, Claude Code cita l’endpoint di ogni ambito come scritto nella vostra configurazione, con i riferimenti${VAR}non espansi, quindi non mostra mai un valore risolto come una chiave API. - Nomi riservati: Claude Code riserva i nomi dei suoi server integrati, inclusi
workspace,claude-in-chrome,computer-use,Claude Preview, eClaude 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 addrifiuta un nome riservato con un errore.Claude PrevieweClaude Browserentrambi nominano il server integrato che il pannello di anteprima dell’app desktop Claude Code utilizza. Prima della v2.1.205,Claude Browsernon era riservato, quindi un server configurato dall’utente poteva registrarsi con quel nome. - Variabile di ambiente mancante: se un riferimento
${VAR}nella configurazione di un server nomina una variabile che non è impostata e non ha:-default, Claude Code avverte nell’output diclaude mcp liste in/mcp, nominando la variabile, e carica comunque il server con il testo${VAR}non espanso. Impostate la variabile o aggiungete un fallback${VAR:-default}. In unurleheadersdi un server remoto, alcune variabili di credenziali leggono come vuote invece, senza avviso.
Disponibilità degli strumenti
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 strumenti.
Se la vostra richiesta ha bisogno di strumenti da un server che si sta ancora connettendo in background, Claude attende quel server prima di continuare. Come avviene l’attesa dipende dalla vostra configurazione:
- Con ricerca degli strumenti, l’impostazione predefinita: l’attesa avviene all’interno della chiamata
ToolSearch. - Senza ricerca degli strumenti: Claude utilizza lo strumento
WaitForMcpServersinvece. Le configurazioni senza ricerca degli strumenti includono unANTHROPIC_BASE_URLpersonalizzato,ENABLE_TOOL_SEARCH=false, e un modello precedente alla generazione Claude 4.5 su Google Cloud’s Agent Platform. - Su una distribuzione Microsoft Foundry ospitata su Azure: Claude inizia sul percorso di ricerca degli strumenti piuttosto che con
WaitForMcpServers, poiché Claude Code scopre il rifiuto lato server della distribuzione solo dall’API. Dopo che Claude Code passa quella distribuzione al caricamento anticipato, gli strumenti da un server che finisce di connettersi diventano disponibili sulla richiesta successiva di Claude.
Disabilitare un server senza rimuoverlo
Attivate/disattivate un server nel pannello/mcp per impedire a Claude Code di connettersi ad esso senza perdere la sua configurazione. Claude Code elenca comunque il server in /mcp, contrassegnato come disabilitato.
Quando attivate/disattivate un server, Claude Code registra la vostra scelta per progetto in ~/.claude.json, in uno di due elenchi che coprono insiemi disgiunti di server:
disabledMcpServers: un elenco di esclusione per server configurati dall’utente, server di plugin, server che la vostra organizzazione fornisce tramite impostazioni gestite, i connettori claude.ai che Claude Code recupera da solo, e server integrati che sono attivati per impostazione predefinita. Claude Code non si connette a un server che elencate qui. Quando disabilitate un connettore claude.ai con l’attivazione/disattivazione/mcpper progetto descritta in Disabilitare connettori claude.ai, Claude Code lo scrive in questo elenco con il suo nome di visualizzazione, ad esempioclaude.ai Slack.enabledMcpServers: un elenco di consenso per server integrati che sono disabilitati per impostazione predefinita, comecomputer-use. Claude Code si connette a un server disabilitato per impostazione predefinita solo quando lo elencate qui.
enabledMcpServers, o un server integrato disabilitato per impostazione predefinita a disabledMcpServers, Claude Code ignora la voce.
disabledMcpServers e enabledMcpServers non sono correlati a enabledMcpjsonServers e disabledMcpjsonServers, che controllano l’approvazione dei server definiti nel file .mcp.json di un progetto.
Runtime client MCP
Claude Code si connette ai server MCP attraverso uno di due runtime client. Il runtime v1 è costruito su MCP TypeScript SDK 1.x. Il runtime v2 è lo stesso codice su MCP TypeScript SDK 2.0, che aggiunge la revisione del protocollo MCP 2026-07-28. Il resto di questa pagina si applica a entrambi i runtime, tranne dove una sezione nomina il runtime v2. Claude Code sceglie un runtime ogni volta che lo avviate e lo mantiene fino a quando non uscite. Nelle sessioni in cui recupera flag di funzionalità, utilizza il runtime v2 su Claude Code v2.1.232 o successivo. Nelle sessioni in cui non recupera flag di funzionalità, Claude Code utilizza il runtime v2 per impostazione predefinita su Claude Code v2.1.274 o successivo:- Sessioni su Amazon Bedrock, Claude Platform su AWS, Google Cloud’s Agent Platform, o Microsoft Foundry, a meno che una piattaforma host che incorpora Claude Code non imposti
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST - Sessioni accedute tramite un gateway di app Claude
- Sessioni in cui disattivate la telemetria o il recupero dei flag di funzionalità, ad esempio con
DISABLE_TELEMETRY
- Chiede ai server HTTP se supportano la revisione più recente, e la utilizza con quelli che lo fanno. Chiede anche ai server connettori claude.ai nelle sessioni in cui recupera flag di funzionalità. Per fargli chiedere ai server stdio, o ai server connettori in ogni sessione, impostate
MCP_PROTOCOL_NEGOTIATIONsuauto. Si connette a ogni altro server come v1 fa. - Riceve notifiche
list_changeddai server sulla revisione più recente su un flusso che mantiene aperto. - Non registra un server channel che si connette sulla revisione più recente, perché quella revisione non può portare messaggi di canale.
- Fallisce un accesso OAuth MCP la cui risposta di autorizzazione nomina un emittente inaspettato.
MCP_SDK_GENERATION su v1 o v2. Per decidere se Claude Code chiede, impostate MCP_PROTOCOL_NEGOTIATION su auto o legacy.
Aggiornamenti dinamici degli strumenti
Claude Code supporta le notifiche MCPlist_changed, 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.
Se una richiesta di aggiornamento fallisce, Claude Code mantiene gli strumenti, i prompt, e le risorse precedentemente scoperti del server fino a quando un aggiornamento successivo non riesce. Prima della v2.1.214, un errore transitorio durante l’aggiornamento sostituiva gli strumenti, i prompt, e le risorse del server con un elenco vuoto.
Flussi di notifica sul runtime v2
Sul runtime v2, Claude Code riceve notifichelist_changed da un server sulla revisione del protocollo più recente su un flusso che mantiene aperto. Quando il flusso si chiude, Claude Code lo riapre, con due limiti:
- Il flusso si chiude di nuovo entro 10 secondi: Claude Code lo riapre fino a tre volte, quindi si ferma per quella connessione.
- Il flusso rimane aperto più a lungo di 10 secondi, poi si chiude, come i flussi agli host serverless comunemente fanno: dopo cinque riaperture in un’ora, Claude Code attende circa sei ore prima della prossima.
/mcp.
Riconnessione automatica
Claude Code riconnette un server remoto che cade a metà sessione e ritenta la prima connessione di un server HTTP o SSE dopo un errore transitorio. I server stdio sono processi locali, e Claude Code non li riconnette automaticamente.Cadute a metà sessione di un server remoto
Claude Code riconnette un server remoto caduto con backoff esponenziale: fino a cinque tentativi, iniziando con un ritardo di un secondo e raddoppiandolo ogni volta. Quello che vedete dipende da come state eseguendo Claude Code:- In una sessione interattiva:
/mcpmostra il server come in sospeso mentre Claude Code si riconnette. Dopo cinque tentativi falliti, Claude Code contrassegna il server come fallito, o come necessitante di autenticazione quando il server ha bisogno di autorizzazione di nuovo. Quando lo contrassegna come fallito, vedete una notificaMCP server "<name>" disconnected · open /mcp to reconnect. Potete ritentare manualmente da/mcp. - In esecuzioni
claude -pe sessioni Agent SDK: Claude Code si riconnette sulla stessa pianificazione, senza pannello/mcpper mostrare i tentativi.
Connessioni iniziali fallite
Quando la prima connessione di un server HTTP o SSE fallisce con un errore transitorio, come una risposta 5xx, una connessione rifiutata, o un timeout, Claude Code ritenta fino a tre volte. Se la connessione fallisce ancora, Claude Code contrassegna il server come fallito. Claude Code ritenta in questo modo all’avvio e quando un server viene aggiunto a metà sessione. Questo include un server che Claude Code aggiunge a una sessione cloud dalla sua configurazione e un server che aggiungete con il metodosetMcpServers() dell’Agent SDK.
Claude Code non ritenta in questi casi:
- La prima connessione di un server WebSocket
- Un errore di autenticazione o non trovato, perché richiede una modifica della configurazione per risolvere. Quando un
headersHelperè l’unica fonte dell’intestazioneAuthorizationdel server, Claude Code ritenta comunque un errore di autenticazione, perché riesegue l’helper ad ogni tentativo e può raccogliere una credenziale fresca
Richieste di scoperta fallite
Dopo che un server si connette, Claude Code gli invia richieste di scoperta delle capacità cometools/list, prompts/list, e resources/list. Claude Code ritenta quelle richieste fino a tre volte con backoff breve dopo un errore di rete o server transitorio. Non ritenta errori di autenticazione, risposte 4xx, o timeout delle richieste.
Come Claude apprende che un server è fallito
Se Claude Code dice a Claude di un server configurato che non si è connesso dipende dalla ricerca degli strumenti, che è attivata per impostazione predefinita:- Con ricerca degli strumenti, Claude Code dice a Claude quale server è fallito e il suo errore di connessione, quindi Claude segnala il fallimento della connessione nella sua risposta. Claude Code include le stesse informazioni nei risultati di
ToolSearchche non trovano strumenti corrispondenti. - In qualsiasi configurazione senza ricerca degli strumenti, Claude Code non segnala i fallimenti di connessione del server remoto a Claude.
Inviare 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 questo, il vostro server dichiara la capacitàclaude/channel e voi lo attivate con il flag --channels all’avvio. Vedete Canali per utilizzare un canale ufficialmente supportato, o Riferimento canali per costruire il vostro.
Sul runtime v2, se impostate MCP_PROTOCOL_NEGOTIATION su auto e un server di canale negozia la revisione del protocollo MCP 2026-07-28, non può consegnare messaggi di canale, quindi Claude Code non lo registra come canale. Lasciate la variabile non impostata, o impostatela su legacy, mantiene i server stdio sul handshake precedente.
Il timeout per server è un limite di wall-clock duro per chiamata di strumento, e le notifiche di progresso dal server non lo estendono. I valori inferiori a 1000 vengono 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. Claude Code imposta quel timer al massimo di tre valori: 60 secondi, il timeout dello strumento che si applica al server, e MCP_TIMEOUT. Il valore predefinito di 28 ore di un MCP_TOOL_TIMEOUT non impostato non entra in quel confronto, e un valore inferiore a 60 secondi non accorcia il timer. I server stdio e WebSocket non hanno un timer per richiesta.
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 di strumento di quel server per inattività prima del timeout per server. Richiede Claude Code v2.1.203 o successivo.
Una chiamata di strumento a un server MCP che non invia risposta e nessuna notifica di progresso per la finestra di inattività interrompe con un errore invece di attendere il limite di wall-clock. 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 server HTTP, SSE, WebSocket, e connettore claude.ai, e a 30 minuti per server stdio. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività.
Impostate la variabile di ambiente CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT in millisecondi per cambiare la finestra di inattività, o impostatela su 0 per disabilitare il controllo.
Questi timeout limitano quanto a lungo una chiamata può essere eseguita, non sempre quanto a lungo blocca la sessione: una chiamata di conversazione principale che viene eseguita oltre due minuti si sposta prima a un’attività in background. Vedete Backgrounding automatico di lunghe chiamate di strumento.
Backgrounding automatico di lunghe chiamate di strumento
Una chiamata di strumento MCP nella conversazione principale che è ancora in esecuzione dopo due minuti si sposta a un’attività in background invece di bloccare la sessione. Claude riceve l’ID dell’attività immediatamente e continua a lavorare, e il risultato arriva come notifica di attività quando la chiamata si risolve. Il backgrounding automatico richiede Claude Code v2.1.212 o successivo. L’attività appare in/tasks, dove potete anche fermarla, e non sopravvive all’uscita dalla sessione. I limiti per chiamata si applicano ancora mentre la chiamata viene eseguita in background: il limite di wall-clock impostato dal timeout per server o MCP_TOOL_TIMEOUT, e il timeout di inattività impostato da CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT.
Impostate la variabile di ambiente CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS in millisecondi per cambiare la soglia, o impostatela su 0 per disattivare il backgrounding automatico. Impostare CLAUDE_CODE_DISABLE_BACKGROUND_TASKS su 1 lo disattiva anche, insieme a tutte le altre funzionalità di attività in background.
Alcune chiamate non si spostano mai in background:
- Chiamate da subagenti; Claude Code mette in background solo le chiamate della conversazione principale
- Chiamate ai server IDE
- Chiamate in modalità non interattiva, a meno che
CLAUDE_AUTO_BACKGROUND_TASKSnon sia impostato su1, poiché un’esecuzione una tantum può terminare prima che il risultato arrivi
Server MCP forniti da plugin
I plugin possono raggruppare server MCP che forniscono strumenti e integrazioni quando abilitate il plugin. I server MCP del plugin funzionano in modo identico ai server configurati dall’utente. Come funzionano i server MCP del plugin:- I plugin definiscono i server MCP in
.mcp.jsonalla radice del plugin o inline inplugin.json - Quando abilitate un plugin, Claude Code avvia automaticamente i suoi server MCP
- Claude Code offre gli strumenti MCP del plugin insieme agli strumenti MCP configurati manualmente
- Aggiungete e rimuovete i server del plugin installando o disinstallando il plugin, non con i comandi
/mcp. Potete comunque attivare/disattivare un server del plugin installato in/mcp, che impedisce a Claude Code di connettersi ad esso senza rimuovere il plugin
.mcp.json alla radice del plugin:
plugin.json:
- Ciclo di vita automatico: i server si connettono e disconnettono in questi punti:
- All’avvio della sessione, Claude Code connette automaticamente i server per i plugin abilitati. In
/mcp, un server plugin remoto (HTTP o SSE) che avete usato prima può mostrare lo statocachedinvece; Claude Code lo connette quando Claude chiama per la prima volta uno dei suoi strumenti - Se abilitate o disabilitate un plugin durante una sessione, Claude Code connette o disconnette i suoi server MCP quando il cambiamento si applica. Applicare i cambiamenti del plugin senza riavviare descrive quando è. In una sessione senza un terminale interattivo,
/reload-pluginsnon connette o disconnette i server MCP del plugin; quei cambiamenti hanno effetto nella vostra prossima sessione - Quando ricaricate, Claude Code mantiene le connessioni live dei server del plugin la cui configurazione è invariata, e fa lo stesso quando sostituite l’elenco dei server MCP della sessione dall’Agent SDK senza nominarli
- Quando spostate la sessione con
/cdsu v2.1.246 o successivo, Claude Code connette i server dei plugin che le impostazioni della nuova directory abilitano e disconnette i server dei plugin che non sono più abilitati, quindi non dovete eseguire/reload-pluginsdopo lo spostamento - Nelle sessioni cloud, una chiamata MCP a un server del plugin che non è ancora connesso, come subito dopo il risveglio di una sessione inattiva, avvia il server su richiesta e attende che si connetta
- All’avvio della sessione, Claude Code connette automaticamente i server per i plugin abilitati. In
- Segnaposti 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 del progetto stabile. La sostituzione si applica a:- server
stdio:command,args,env - server
http,sse, ews:url,headers, eheadersHelper
- server
- Accesso all’ambiente 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 per server
/mcp con indicatori che mostrano che provengono dai plugin.
Nomi degli strumenti MCP del plugin:
Gli strumenti da un server MCP raggruppato nel plugin includono sia il nome del plugin che la chiave del server nel loro nome richiamabile. La forma completa è 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 subagente, o in un matcher di hook. Un matcher di hook scritto contro la chiave del server nudo, come mcp__database-tools__.*, non si attiva mai per un server raggruppato nel plugin.
Il server stesso si registra con il nome con ambito plugin:<plugin-name>:<server-name>, come plugin:my-plugin:database-tools. Utilizzate quel nome dove è previsto un nome di server configurato, come il campo server di un hook mcp_tool.
Vedete il riferimento dei componenti del plugin per i dettagli sul raggruppamento dei server MCP con i plugin.
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 o fornire server a ogni utente 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. Quando aggiungi un server con ambito del progetto, Claude Code crea o aggiorna automaticamente questo file con la struttura di configurazione appropriata. Archivia .mcp.json nel controllo della versione in modo che tutti nel tuo team ottengano gli stessi strumenti e servizi MCP.
.mcp.json risultante segue un formato standardizzato:
.mcp.json. Per ripristinare queste scelte di approvazione, esegui claude mcp reset-project-choices.
Nelle esecuzioni claude -p, nelle sessioni Agent SDK e nelle sessioni cloud, Claude Code non può mostrare quel prompt: carica i server con ambito del progetto senza chiedere. Claude Code salta anche il prompt in una sessione che avvii in modalità bypassPermissions con skipDangerousModePermissionPrompt impostato nelle tue impostazioni utente o nelle impostazioni gestite. Per mantenere un server fuori comunque:
- Aggiungilo a
disabledMcpjsonServers, che lo blocca in ogni modalità di autorizzazione. - Escludi completamente le impostazioni del progetto con
--setting-sourceso l’opzionesettingSourcesdell’SDK. - Avvia la sessione con
--strict-mcp-config. Claude Code utilizza quindi solo i server MCP che passi con--mcp-config. Saltare il prompt di approvazione per i server con ambito del progetto che Claude Code non sta caricando richiede Claude Code v2.1.246 o successivo; prima di v2.1.246, una sessione ristretta attendeva comunque l’approvazione per loro, il che lasciava le sessioni in background in attesa all’avvio. Vedi Controllo esclusivo con managed-mcp.json per quello che il flag fa sotto un file MCP gestito.
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
:443 su https, o una barra finale. Un percorso diverso, una stringa di query, userinfo o una porta non predefinita rendono due server diversi.
Un server che la tua organizzazione fornisce tramite l’impostazione gestita managedMcpServers si classifica al di sopra di tutti questi, quindi quando uno di loro lo duplica, Claude Code si connette alla definizione dell’organizzazione. Richiede Claude Code v2.1.259 o successivo.
Se apri una sessione locale nella scheda Code dell’app Desktop con lo stesso nome di server stdio al livello superiore di ~/.claude.json (ambito utente) e in .mcp.json, la scheda Code utilizza la definizione ~/.claude.json.
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
Posizioni di espansione
Le variabili di ambiente possono essere espanse in: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
Esempio con espansione di variabili
Variabili non impostate senza un valore predefinito
Se una variabile di ambiente richiesta non è impostata e non ha un valore predefinito, la configurazione viene comunque caricata: Claude Code segnala un avviso di variabile mancante per quel server nell’output diclaude mcp list e utilizza il testo ${VAR} non espanso così com’è. Imposta la variabile o aggiungi un fallback :-default in modo che il server si avvii con il valore che intendi. In un URL remoto del server e negli header, alcune variabili di credenziali leggono come vuote invece, senza avviso.
Variabili di credenziali che leggono come vuote
In un URL remoto del server e negli header, Claude Code legge le variabili di credenziali dal tuo ambiente come vuote piuttosto che espanderle. Questo impedisce che il.mcp.json di un progetto o un plugin invii le tue credenziali di Claude Code o del provider cloud a un server che nomina. Se scrivi Bearer ${ANTHROPIC_AUTH_TOKEN}, il server riceve Bearer senza credenziale e rifiuta la richiesta, di solito con un 401. Claude Code lo segnala come una connessione non riuscita.
I nomi coperti sono:
- Le credenziali di Claude Code stesso, come
ANTHROPIC_API_KEYeANTHROPIC_AUTH_TOKEN - Le credenziali del tuo provider cloud, come
AWS_BEARER_TOKEN_BEDROCK - Altre credenziali che il tuo ambiente contiene, come
HTTPS_PROXYeNPM_TOKEN
:-default su di esso viene ignorato. Un URL di base del provider come ANTHROPIC_BASE_URL si espande comunque, quindi "url": "${ANTHROPIC_BASE_URL}/mcp" funziona, a meno che il valore dell’URL stesso non incorpori una credenziale come un nome utente e una password.
Un nome al di fuori di questo set, come API_KEY, si espande come scritto. Per dare al server una delle credenziali coperte, copiala in una variabile con un nome di tua scelta e fai riferimento a quel nome invece.
Quando l’URL o gli header di un server remoto fanno riferimento a una variabile coperta che hai impostato, Claude Code la nomina in una riga di log di debug. Per leggere la riga, esegui claude --debug-file /tmp/claude-debug.log e cerca in quel file never expanded toward a remote server.
Come i riferimenti appaiono in /mcp e nell’output CLI
Per un server negli ambiti locale, progetto o utente, le seguenti superfici mostrano un riferimento ${VAR} per nome piuttosto che come valore risolto:
- L’URL o la riga di comando nella vista dettagli
/mcpdi un server - Output di
claude mcp listeclaude mcp get
/mcp mostra i riferimenti in questo modo in Claude Code v2.1.268 o successivo.
Per un server che la tua organizzazione fornisce tramite l’impostazione managedMcpServers, queste superfici mostrano solo l’host dell’URL.
Per verificare cosa mostrano claude mcp list, claude mcp get e /mcp quando una connessione non riesce, vedi Dettagli dello stato del server.
Esempi pratici
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:YOUR_GITHUB_PAT con il tuo token di accesso personale. Il comando claude mcp add salva la configurazione senza convalidare le credenziali, quindi un valore segnaposto è accettato qui ma il server non riesce a connettersi in seguito. Per verificare la connessione, esegui /mcp e controlla che il server mostri connected. Un server con credenziali errate mostra failed, e il dettaglio dell’errore include lo stato HTTP che il server ha restituito, come un 401.
Quindi lavora con GitHub:
Esempio: Interroga il tuo database PostgreSQL
DBHub, il pacchetto@bytebase/dbhub, è un server MCP che connette Claude a un database relazionale attraverso la stringa di connessione che passi in --dsn. Utilizza un utente di database di sola lettura nella stringa di connessione in modo che le query che Claude esegue non possano modificare i dati:
/mcp e controlla che db mostri connected.
Quindi interroga il tuo database naturalmente:
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. Ciò che Claude Code mostra dipende dal server:
- Per un server a cui non hai effettuato l’accesso, uno di questi codici di stato lo contrassegna in
/mcpin modo che tu possa completare il flusso OAuth. - Per un connettore claude.ai, un
401causato dal rifiuto di claude.ai del tuo token di sessione non contrassegna il connettore, perché la riautorizzazione del connettore non può risolvere il tuo accesso. Claude Code mostra invece lo stato di rifiuto del token di sessione. - Per un server il cui header
Authorizationhai configurato, inheaderso tramite unheadersHelper, un401o403durante la connessione non contrassegna il server, perché la credenziale da correggere è quella che hai configurato. Claude Code segnala invece la connessione come non riuscita. Se hai impostato quell’header da un riferimento${VAR}, verifica se quella variabile è una che Claude Code legge come vuota. - Per un connettore consegnato a una sessione cloud, Claude Code non esegue un flusso di accesso, perché il proxy della sessione si autentica al connettore con l’autorizzazione che hai concesso in claude.ai. Quando un connettore lì ha bisogno di autorizzazione di nuovo, riconnettilo su claude.ai/customize/connectors piuttosto che dalla sessione.
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.
Quando il server rifiuta il token di aggiornamento archiviato, Claude Code mostra immediatamente un avviso che punta a /mcp. Apri /mcp e seleziona Re-authenticate sul server per accedere di nuovo prima che la prossima chiamata dello strumento non riesca.
Un server personalizzato che restituisce un header WWW-Authenticate che punta al suo server di autorizzazione ottiene la stessa scoperta automatica di qualsiasi altro server remoto.
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. L’avviso richiede Claude Code v2.1.193 o successiva. Conta solo i server a cui puoi accedere da Claude Code. Prima della v2.1.218, contava anche i connettori claude.ai che non erano connessi in claude.ai, che puoi connettere solo dalle impostazioni di claude.ai.
L’avviso annuncia ogni server una volta e lo esclude dal conteggio ai successivi avvii fino a quando quel server non si è connesso e ha bisogno di accesso di nuovo. /mcp elenca comunque ogni server che ha bisogno di 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’header, 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’header per utilizzare il flusso OAuth.
Aggiungi il server che richiede l'autenticazione
sentry nella guida rapida MCP, salta questo passaggio: eseguire di nuovo claude mcp add con lo stesso nome di server nello stesso ambito non riesce con MCP server sentry already exists in local config. Altrimenti, esegui:Utilizza il comando /mcp all'interno di Claude Code
Autenticazione dalla riga di comando
Il comandoclaude 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>.
claude mcp login 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. Se l’accesso su Claude Code v2.1.229 non riesce con una mancata corrispondenza dell’URI di reindirizzamento, vedi la nota sulla versione in Utilizza credenziali OAuth pre-configurate.
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 con quella porta. Utilizzerai la stessa porta nel passaggio successivo.In v2.1.229, Claude Code ha inviato http://127.0.0.1:PORT/callback invece, e i server che corrispondevano esattamente all’URI di reindirizzamento registrato hanno rifiutato l’accesso con una mancata corrispondenza dell’URI di reindirizzamento. Claude Code v2.1.231 ha ripristinato il modulo localhost. Per recuperare su v2.1.229, aggiorna Claude Code, oppure aggiungi temporaneamente il modulo http://127.0.0.1:PORT/callback agli URI di reindirizzamento registrati del server.Aggiungi il server con le tue credenziali
claude mcp add accetta il tuo ID client e la porta di callback come flag, e claude mcp add-json li accetta in un oggetto oauth. Se hai registrato un URI di reindirizzamento, imposta la porta di callback sulla porta in quell’URI.- 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’header 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, la chiamata non riesce con un messaggio needs additional permissions che nomina l’ambito che il server richiede. Il server viene mostrato come richiedente autenticazione in /mcp.
Se quell’ambito non è nei tuoi oauth.scopes fissati, aggiungilo, quindi esegui /mcp e autentica di nuovo il server. Claude Code richiede gli ambiti fissati piuttosto che l’ambito che il server ha nominato, quindi se ti autentichi di nuovo senza aggiungerlo, il token che ottieni ancora non lo ha.
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
- Claude Code esegue il comando in una shell e rinuncia dopo 10 secondi
- Claude Code sceglie la directory di lavoro del comando in base a dove hai configurato il server, quindi fornisci lo script come percorso assoluto o mettilo su
PATH - Le intestazioni dinamiche sovrascrivono qualsiasi
headersstatico con lo stesso nome
401 Unauthorized o 403 Forbidden, Claude Code esegue automaticamente di nuovo l’helper secondo la stessa regola, 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.
Quando l’output dell’helper include un header Authorization, Claude Code utilizza quella credenziale come autenticazione del server e non ricorre a OAuth per il server.
Se il server rifiuta la credenziale dell’helper durante la connessione, Claude Code segnala la connessione come non riuscita piuttosto che contrassegnare il server come richiedente autenticazione. Correggi la credenziale che il tuo helper restituisce, quindi riconnettiti da /mcp per eseguire di nuovo l’helper.
Claude Code imposta queste variabili di ambiente quando esegue l’helper:
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 da un file di configurazione. Prima della v2.1.207, headersHelper sostituiva i valori ${user_config.*}.
Dove l’helper viene eseguito
Claude Code sceglie la directory di lavoro del comandoheadersHelper dalla configurazione che dichiara il server. Un cd che Claude esegue in Bash non lo sposta, e /cd lo sposta solo per i server che vengono eseguiti dalla directory di lavoro primaria della sessione. Ogni riga di seguito fornisce la directory rispetto alla quale un percorso relativo nel tuo comando headersHelper si risolve.
Quali variabili un helper può leggere
UnheadersHelper che un repository o un plugin fornisce è un comando che non hai scritto, quindi Claude Code lo esegue senza le variabili di credenziale dal tuo ambiente, come ANTHROPIC_API_KEY. Dove hai configurato il server decide se questo si applica:
- Rimosso: un server in un
.mcp.jsondi progetto o in un plugin, e un server inline in un file agent dal tuo progetto o da una directory--add-dir - Non rimosso: un server di ambito utente o ambito locale, in MCP gestito, da un connettore claude.ai, o fornito dall’SDK o da
--mcp-config, e un server inline in un file agent da~/.claude/agents/, dalle impostazioni gestite, o passato con--agents
GIT_CONFIG_KEY_<n> di Git, Claude Code rimuove ogni variabile dal tuo ambiente il cui nome sembra una credenziale, come un nome con TOKEN, SECRET, PASSWORD, KEY, o AUTH in esso in entrambi i casi di lettera, quindi sia ANTHROPIC_API_KEY che MY_REGISTRY_TOKEN vengono rimossi. Claude Code rimuove anche un elenco fisso di variabili di credenziale i cui nomi non seguono quel modello, come ANTHROPIC_CUSTOM_HEADERS.
Quando questo si applica al tuo helper, fai in modo che lo script legga la sua credenziale da un file o da un archivio di credenziali. Se l’url del server espande una di queste variabili, il valore CLAUDE_CODE_MCP_SERVER_URL che l’helper riceve ha quella parte sostituita con REDACTED anche.
Affida una cartella prima che il suo headersHelper venga eseguito
Claude Code esegue unheadersHelper come comando shell arbitrario. Per un server in un .mcp.json di progetto o di ambito locale, lo esegue solo dopo che accetti la finestra di dialogo di fiducia per la directory del progetto in cui il server è dichiarato. Prima della v2.1.238, una sessione claude -p o SDK eseguiva questi helper senza controllare la fiducia, e una sessione interattiva li eseguiva una volta che avevi affidato una cartella genitore.
- Fiducia che non conta: la fiducia di una cartella genitore, e la fiducia automatica che una sessione
claude -po SDK ottiene per gli hook nei file di impostazioni - Fino a quando non affidi la cartella: Claude Code connette il server con i suoi soli
headersstatici. In una sessioneclaude -po SDK stampa anche una rigaheadersHelper not runper server su stderr, dicendoti come concedere la fiducia. - Fiducia senza una finestra di dialogo: imposta
projects["<path>"].hasTrustDialogAcceptedsutruein~/.claude.json.<path>è la cartella su cui Project allow rules and workspace trust dice che Claude Code basa la fiducia.
.claude/agents/, o una directory --add-dir. Fino a quando non affidi quel progetto o quella directory stessa, Claude Code non carica il server affatto, quindi il suo helper non viene mai eseguito nemmeno.
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.
Utilizzare i 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 connettori, sono automaticamente disponibili in Claude Code:Configurare i server MCP in claude.ai
Autenticare il server MCP
Visualizzare e gestire i server in Claude Code
/mcp elenca claude.ai Claude Docs senza configurazione, e Claude lo utilizza quando chiedi un documento destinato ad altre persone. Per disattivarlo, aggiungi una voce serverName di "claude.ai Claude Docs" a deniedMcpServers o utilizza l’interruttore /mcp, entrambi descritti in Disabilitare i connettori claude.ai.
Claude Code contrassegna un connettore come managed in /mcp e nel gestore /plugin quando la tua organizzazione gestisce la sua autenticazione in claude.ai. Lo stato managed non cambia il modo in cui Claude Code si connette al connettore o applica i controlli degli strumenti della tua organizzazione.
I connettori a cui non hai mai effettuato l’accesso sono compressi dietro una riga 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 è un accesso con abbonamento a claude.ai. Non vengono caricati, anche se hai precedentemente eseguito /login, quando:
ANTHROPIC_API_KEY,ANTHROPIC_AUTH_TOKEN, oapiKeyHelperè attivo- Un provider di terze parti come Amazon Bedrock o Agent Platform di Google Cloud è attivo
ANTHROPIC_PROFILE, le variabili di federazione, o un profilo Anthropic attivo fornisce le credenzialiCLAUDE_CODE_OAUTH_TOKENcontiene un token daclaude setup-token, che può solo effettuare richieste di modello
/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, rimuovi l’impostazione apiKeyHelper, o disattiva il profilo, quindi esegui /login per selezionare il tuo account claude.ai.
Se un problema di rete temporaneo impedisce il caricamento dell’elenco dei connettori all’avvio della sessione, Claude Code ritenta il recupero fino a tre volte in background, e i connettori vengono visualizzati una volta che un tentativo ha successo. Se ancora non sono apparsi, riavvia Claude Code per recuperare di nuovo l’elenco.
Se /mcp mostra un connettore come session token rejected, o la sua vista dettagliata mostra claude.ai rejected the session token, claude.ai ha rifiutato il token dal tuo accesso a Claude Code. Autorizzare di nuovo il connettore non cancella questo stato, perché l’autorizzazione propria del connettore in claude.ai non è quello che è stato rifiutato. Per cancellarlo:
- Esegui
/loginper accedere di nuovo. - Ricollega il connettore da
/mcp.
/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 che claude.ai ha registrato. Quando un server che hai aggiunto con claude mcp add o in .mcp.json punta a uno di questi host e accedi da /mcp o con claude mcp login, Claude Code mostra is Anthropic-hosted and doesn't support local OAuth, indirizzandoti a connettere il servizio su claude.ai/customize/connectors.
Dopo aver rimosso la tua voce con claude mcp remove <name> e aver connesso il servizio su claude.ai, il connettore viene visualizzato in Claude Code automaticamente.
Come i connettori raggiungono Claude Code
Quali impostazioni governano un connettore claude.ai dipende da dove viene eseguita la tua sessione, perché solo alcune sessioni recuperano i connettori da claude.ai stesse. Ogni riga sottostante nomina come i connettori arrivano in un tipo di sessione e cosa li controlla lì. Le sessioni WSL dell’app desktop non hanno una riga perché i connettori non sono ancora disponibili in esse.disableClaudeAiConnectors, ENABLE_CLAUDEAI_MCP_SERVERS, e allowAllClaudeAiMcps agiscono solo sulla prima riga, i connettori che Claude Code recupera da solo. Le altre due righe differiscono da essa in questi modi:
- Sessioni cloud: le voci
allowedMcpServersedeniedMcpServersche raggiungono la sessione, ad esempio attraverso impostazioni gestite dal server, filtrano anche i connettori forniti. Il proxy della sessione riscrive l’URL di ogni connettore, quindi un patternserverUrlscritto per l’URL del connettore stesso non lo corrisponde. Per ammettere i connettori forniti insieme a un allowlist di URL in un ambiente auto-ospitato, aggiungi le vociserverUrlelencate sotto Connector traffic leaves your network. Claude Code elimina i connettori forniti quando unmanaged-mcp.jsonè presente sull’host che esegue la sessione, come un host di runner auto-ospitato, indipendentemente dal fatto che tu impostiallowAllClaudeAiMcps. - Sessioni locali e SSH dell’app desktop: l’app desktop registra i connettori come server
type: "sdk"in-process, e nessuna impostazione MCP omanaged-mcp.jsonli raggiunge. Un utente mantiene un connettore fuori dalle proprie sessioni disconnettendolo su claude.ai/customize/connectors. Un’organizzazione blocca i strumenti di un connettore o disattiva completamente Claude Code nell’app desktop.
Controlli dell’organizzazione sugli strumenti del connettore
La tua organizzazione può impostare controlli per strumento sui connettori claude.ai. Claude Code legge queste impostazioni all’avvio e le applica localmente, tranne nelle sessioni locali e SSH dell’app desktop. Lì, l’app desktop trattiene gli strumentiblocked prima di fornire un connettore, e l’impostazione ask non raggiunge Claude Code, quindi applica le regole di autorizzazione ordinarie della sessione a quegli strumenti invece di richiedere su ogni chiamata. Nelle sessioni in cui Claude Code recupera i connettori da solo, esegui /mcp per vedere quale impostazione si applica a ogni strumento su un connettore.
- Strumento impostato su
ask: Claude Code richiede su ogni chiamata con il motivoYour organization requires approval for this tool. Il prompt appare anche in modalità permissionacceptEdits,auto, ebypassPermissions, e non offre mai un’opzione per ricordare la tua scelta. Le regole Allow che corrispondono allo strumento non saltano il prompt neanche. 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. L’app desktop e la chat claude.ai applicano la stessa impostazioneblocked, quindi Claude non può usare lo strumento neanche lì, e non puoi trattenere uno strumento dalle sessioni dell’app desktop mantenendolo disponibile in chat. L’app desktop salta un connettore i cui strumenti sono tutti bloccati.
Disabilitare i connettori claude.ai
Claude Code applicadisableClaudeAiConnectors solo ai connettori che recupera da solo, non ai connettori che un host cloud o l’app desktop fornisce. Per disattivare i connettori che recupera, imposta l’impostazione su true in qualsiasi ambito di impostazioni:
true in qualsiasi fonte di impostazioni ha la precedenza. Un .claude/settings.json di progetto archiviato può escludere un repository dai connettori che Claude Code recupera da solo, ma un false a livello di progetto non può riabilitare i connettori che un true a livello di utente o politica 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 pattern di URL. Ad esempio, una voce serverName di "claude.ai Slack" blocca il connettore Slack. Puoi anche eseguire /mcp per attivare o disattivare qualsiasi connettore che Claude Code recupera solo per il progetto corrente.
Usa Claude Code come server MCP
Puoi usare 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 conversazione:- Soglia di avviso di output: Claude Code visualizza un avviso quando l’output di qualsiasi strumento MCP supera 10.000 token
- Limite configurabile: è possibile regolare il massimo numero 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 proprio limite. Gli strumenti che impostano
anthropic/maxResultSizeCharsutilizzano invece quel valore per il contenuto di testo, indipendentemente da ciò cheMAX_MCP_OUTPUT_TOKENSè impostato. Gli strumenti che restituiscono dati di immagine sono comunque soggetti aMAX_MCP_OUTPUT_TOKENS - Oltre il limite: quando un risultato senza contenuto di immagine supera il limite, Claude Code lo salva in un file e lo sostituisce nella conversazione con un messaggio che nomina il percorso del file, in modo che Claude legga il file quando ha bisogno del contenuto. Il file si trova nella directory
tool-resultsdella sessione sotto~/.claude/projects/.
Aumentare il limite per uno strumento specifico
Se state creando un server MCP, potete consentire ai singoli strumenti di restituire risultati più grandi della soglia predefinita di persistenza su disco impostando_meta["anthropic/maxResultSizeChars"] nella voce di risposta tools/list dello strumento. Claude Code aumenta la soglia di quello strumento al valore annotato, fino a un limite massimo di 500.000 caratteri.
Questo è utile per gli 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 comunque soggetti al limite di token.
Immagini nei risultati degli strumenti
Quando uno strumento MCP restituisce un’immagine PNG, JPEG, GIF o WebP, Claude vede l’immagine inline nella conversazione. La copia inline può essere ridimensionata o compressa per adattarsi ai limiti di dimensione dell’immagine del modello. Claude Code salva anche i byte originali in un file nella directorytool-results della sessione sotto ~/.claude/projects/ e fornisce a Claude il percorso. Claude può quindi ritagliare, convertire o riutilizzare il file a risoluzione completa con strumenti come Bash.
Se disabilitate la persistenza della sessione con --no-session-persistence o CLAUDE_CODE_SKIP_PROMPT_HISTORY, Claude Code non scrive alcun file di immagine e Claude riceve solo la copia inline.
Il salvataggio dei risultati delle immagini MCP in un file richiede Claude Code v2.1.283 o versioni successive.
Tool input schemas con un combinatore a livello 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 invariati.
Gli strumenti con un combinatore a livello 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
Strumenti con schemi di input non validi
L’API Claude controlla lo schema di input di ogni strumento in una richiesta e rifiuta l’intera richiesta quando uno schema non supera il controllo, quindi un singolo strumento MCP con uno schema malformato farebbe fallire ogni richiesta che lo include con un errore 400. Claude Code esegue due dei controlli dell’API da solo quando carica gli strumenti di un server ed esclude ogni strumento che non li supererebbe, in modo che gli altri strumenti del server continuino a funzionare:- I nomi delle proprietà di primo livello devono essere lunghi da 1 a 64 caratteri e utilizzare solo lettere ASCII e cifre,
_,.e- - Lo schema deve essere valido rispetto al meta-schema JSON Schema draft 2020-12. Claude Code applica questo controllo agli schemi che non dichiarano alcun
$schemae agli schemi che dichiarano draft 2020-12. Uno schema che dichiara qualsiasi altro dialetto salta questo controllo, anche se il controllo del nome della proprietà sopra indicato si applica comunque
Richiedere approvazione per uno strumento specifico
Se state creando un server MCP, potete contrassegnare uno strumento come richiedente approvazione esplicita ad ogni chiamata impostando_meta["anthropic/requiresUserInteraction"] a true nella voce di risposta tools/list dello strumento. 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à di autorizzazione acceptEdits, auto e bypassPermissions permission modes, e non offre un’opzione “non chiedere di nuovo” per esso. Le Allow rules che corrispondono allo strumento non saltano il prompt neanche. In modalità dontAsk, che non chiede mai, Claude Code nega la chiamata.
Il prompt deve raggiungere una persona. In modalità non interattiva con --permission-prompt-tool, un risultato allow dal tool di prompt per uno strumento contrassegnato viene convertito in un rifiuto con il messaggio MCP tool requires user interaction; not supported via --permission-prompt-tool. Il callback canUseTool dell’Agent SDK riceve effettivamente queste chiamate e può approvarle, perché la vostra applicazione SDK è prevista che le mostri a un utente.
Utilizzate questa funzione per strumenti il cui prompt di autorizzazione è esso stesso il punto, come un passaggio di consenso o concessione di accesso dove l’approvazione automatica significherebbe che nessun essere umano ha mai acconsentito. 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 successivo. Le versioni precedenti la ignorano e applicano il flusso di autorizzazione standard.
Alcune superfici, come Remote Control e applicazioni costruite su Agent SDK, normalmente vi permettono di approvare le chiamate di strumenti con un tocco. Per uno strumento contrassegnato con questa annotazione, Claude Code trattiene l’azione a un tocco e mostra il prompt di autorizzazione completo dello strumento, così l’approvazione viene ancora da una persona che risponde al prompt piuttosto che da un tocco.
Claude Code trattiene l’approvazione a un tocco allo stesso modo per qualsiasi richiesta di autorizzazione che solo il dialogo del terminale può rendere completamente, come una che porta un avviso di sicurezza o un’opzione di sempre-consenti che la superficie remota non può mostrare. Rispondete a quella richiesta nel dialogo del terminale piuttosto che da Remote Control. Richiede Claude Code v2.1.214 o successivo.
Rispondere alle richieste di elicitazione MCP
I server MCP possono richiedere input strutturato da voi 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 trasmette la vostra risposta al server. Non è richiesta alcuna configurazione da parte vostra: le finestre di dialogo di elicitazione vengono visualizzate 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 (ad esempio, un prompt di nome utente e password). Compilate i campi e inviate.
- Modalità URL: Claude Code chiede se aprire un collegamento nel vostro browser e lo apre quando accettate. I server utilizzano questa modalità per un flusso che si conclude al di fuori del terminale, come l’accesso.
% o &, conta quattro volte verso il limite: il suo carattere più tre caratteri di escape. Un URL senza nessuno di essi raggiunge il limite a circa 8.000 caratteri. Un URL costruito principalmente con escape percentuali, dove ogni terzo carattere è un %, lo raggiunge a circa 4.000.
Per rispondere automaticamente alle richieste di elicitazione senza mostrare una finestra di dialogo, utilizzate l’hook Elicitation.
Se state creando un server MCP che utilizza l’elicitazione, consultate la specifica di elicitazione MCP per i dettagli del protocollo e gli esempi di schema.
Sulle connessioni che utilizzano revisione del protocollo 2026-07-28, Claude Code dichiara elicitation: {form: {}, url: {}} nelle sue capacità client, quindi un server lì può richiedere entrambe le modalità attraverso la richiesta di elicitazione standard del protocollo.
Utilizzare le risorse MCP
I server MCP possono esporre risorse che è possibile referenziare utilizzando menzioni @, in modo simile a come si referenziano i file.Referenziare le risorse MCP
Elencare le risorse disponibili
@ nel suo prompt per visualizzare le risorse disponibili da tutti i server MCP connessi. Le risorse vengono visualizzate insieme ai file nel menu di completamento automatico.Referenziare una risorsa specifica
@server:protocol://resource/path per referenziare una risorsa:Riferimenti a risorse multiple
ui:// o il tipo di media text/html;profile=mcp-app: pagine per un’applicazione host da renderizzare piuttosto che contenuti per Claude da leggere. Non vengono visualizzate nei suggerimenti @ o nei risultati dello strumento di elenco delle risorse, e un server che offre solo risorse dell’interfaccia utente mostra un elenco di risorse vuoto. La lettura di una risorsa dell’interfaccia utente tramite il suo URI funziona comunque.
Scalare con la ricerca di strumenti MCP
La ricerca di strumenti mantiene basso l’utilizzo del contesto MCP rimandando le definizioni degli strumenti fino a quando Claude non ne ha bisogno. Solo i nomi degli strumenti e le istruzioni del server si caricano all’inizio della sessione, quindi aggiungere più server MCP ha un impatto minimo sulla finestra di contesto. Claude Code non impone un limite fisso di strumenti per server; il limite pratico è il budget della finestra di contesto.ENABLE_TOOL_SEARCH non può ignorare questo, poiché il rifiuto proviene dalla distribuzione stessa.Per gli autori di server MCP
Se state creando un server MCP, il campo delle istruzioni del server diventa più utile con la ricerca di strumenti abilitata. Le istruzioni del server aiutano Claude a capire quando cercare i vostri strumenti, in modo simile a come funzionano le skills. Aggiungete istruzioni del server chiare e descrittive che spieghino:- Quale categoria di attività gestiscono i vostri strumenti
- Quando Claude dovrebbe cercare i vostri strumenti
- Capacità chiave che il vostro server fornisce
CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH a un numero di caratteri. Questa variabile richiede Claude Code v2.1.280 o successivo.
Configurare la ricerca di strumenti
La ricerca di strumenti è abilitata per impostazione predefinita: gli strumenti MCP vengono rimandati e scoperti su richiesta. Claude Code la disabilita quandoANTHROPIC_BASE_URL punta a un host non di prima parte, poiché la maggior parte dei proxy non inoltrano i blocchi tool_reference. Impostate ENABLE_TOOL_SEARCH esplicitamente per ignorare quel fallback.
L’impostazione CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS mantiene la ricerca di strumenti disattivata. Non potete ignorarla impostando ENABLE_TOOL_SEARCH voi stessi. La vostra organizzazione può mantenere la ricerca di strumenti attiva tramite impostazioni gestite, su Claude Code v2.1.227 o successivo. Disabilitare le capacità pre-release copre dove si applica l’override e cosa fa la variabile.
La ricerca di strumenti richiede un modello che supporti i blocchi tool_reference: Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5 e modelli successivi. Consultate la compatibilità dei modelli nella documentazione API per l’elenco attuale.
Su Google Cloud’s Agent Platform, Claude Code decide in base alla generazione del modello:
- Claude Opus 4.5, Sonnet 4.5, Haiku 4.5 e successivi: la ricerca di strumenti è attiva per impostazione predefinita, come su Anthropic API.
- Modelli precedenti di Agent Platform: Claude Code carica tutti gli strumenti MCP in anticipo, perché i loro stack di servizio rifiutano l’intestazione beta richiesta.
ENABLE_TOOL_SEARCH=truenon ignora questo.
ENABLE_TOOL_SEARCH=true.
Controllate il comportamento della ricerca di strumenti con la variabile di ambiente ENABLE_TOOL_SEARCH:
env di settings.json.
Potete 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, impostatealwaysLoad a true nella configurazione di quel server. Ogni strumento da quel server viene quindi caricato nel contesto all’inizio della sessione indipendentemente dall’impostazione ENABLE_TOOL_SEARCH. Usate questo per un piccolo numero di strumenti che Claude necessita ad ogni turno, poiché ogni strumento anticipato consuma contesto che altrimenti sarebbe disponibile per la vostra conversazione.
La seguente voce .mcp.json esentera un server HTTP mentre lascia gli altri server rimandati:
alwaysLoad è disponibile su tutti i tipi di server. 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 alwaysLoad: true fa anche sì che l’avvio attenda gli strumenti del server, limitato al timeout di connessione standard di 5 secondi, poiché devono essere presenti quando viene costruito il primo prompt. Un server remoto con una voce cached valida fornisce i suoi strumenti dalla cache senza connettersi, quindi non ritarda l’avvio. Gli altri server si connettono in background per impostazione predefinita; impostate MCP_CONNECTION_NONBLOCKING=0 per far sì che l’avvio li attenda anche.
Usa i prompt MCP come comandi
I server MCP possono esporre prompt che diventano disponibili come comandi in Claude Code. I prompt da un server denominatoanthropic-skills non vengono visualizzati, perché Claude Code riserva quel nome per le skills sincronizzate da claude.ai. Gli strumenti del server funzionano comunque. Rinomina il server nella tua configurazione MCP per elencare i suoi prompt.
Esegui i prompt MCP
Scopri i prompt disponibili
/ per vedere i comandi disponibili, inclusi quelli dai server MCP. Claude Code elenca ogni prompt MCP come /servername:promptname (MCP). Digitando /mcp__servername__promptname lo esegui anche.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, vedere Configurazione MCP gestita. Copre la distribuzione di un set di server fisso conmanaged-mcp.json, la fornitura di server a ogni utente con managedMcpServers, la restrizione dei server con allowedMcpServers e deniedMcpServers, e ciò che gli utenti vedono quando un server è bloccato.