1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Connetti Claude Code ai tuoi strumenti tramite MCP
6
7> Scopri come connettere Claude Code ai tuoi strumenti con il Model Context Protocol.
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code può connettersi a centinaia di strumenti e fonti di dati esterni attraverso il [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), uno standard open source per le integrazioni AI-tool. I server MCP danno a Claude Code accesso ai tuoi strumenti, database e API.
216
217Connetti un server quando ti trovi a copiare dati in chat da un altro strumento, come un issue tracker o un dashboard di monitoraggio. Una volta connesso, Claude può leggere e agire su quel sistema direttamente invece di lavorare da quello che incolla.
218
219## Cosa puoi fare con MCP
220
221Con i server MCP connessi, puoi chiedere a Claude Code di:
222
223* **Implementare funzionalità da issue tracker**: "Aggiungi la funzionalità descritta nel ticket JIRA ENG-4521 e crea una PR su GitHub."
224* **Analizzare dati di monitoraggio**: "Controlla Sentry e Statsig per verificare l'utilizzo della funzionalità descritta in ENG-4521."
225* **Interrogare database**: "Trova gli indirizzi email di 10 utenti casuali che hanno utilizzato la funzionalità ENG-4521, in base al nostro database PostgreSQL."
226* **Integrare design**: "Aggiorna il nostro modello di email standard in base ai nuovi design Figma che sono stati pubblicati su Slack"
227* **Automatizzare flussi di lavoro**: "Crea bozze Gmail invitando questi 10 utenti a una sessione di feedback sulla nuova funzionalità."
228* **Reagire a eventi esterni**: Un server MCP può anche agire come un [canale](/it/channels) che invia messaggi nella tua sessione, in modo che Claude reagisca ai messaggi Telegram, chat Discord o eventi webhook mentre sei assente.
229
230## Server MCP popolari
231
232Ecco alcuni server MCP comunemente utilizzati che puoi connettere a Claude Code:
233
234<Warning>
235 Utilizza server MCP di terze parti a tuo rischio - Anthropic non ha verificato
236 la correttezza o la sicurezza di tutti questi server.
237 Assicurati di fidarti dei server MCP che stai installando.
238 Fai particolare attenzione quando utilizzi server MCP che potrebbero recuperare
239 contenuti non attendibili, poiché questi possono esporti al rischio di prompt injection.
240</Warning>
241
242<MCPServersTable platform="claudeCode" />
243
244<Note>
245 **Hai bisogno di un'integrazione specifica?** [Trova centinaia di altri server MCP su GitHub](https://github.com/modelcontextprotocol/servers), oppure crea il tuo utilizzando l'[MCP SDK](https://modelcontextprotocol.io/quickstart/server).
246</Note>
247
248## Installazione dei server MCP
249
250I server MCP possono essere configurati in tre modi diversi a seconda delle tue esigenze:
251
252### Opzione 1: Aggiungi un server HTTP remoto
253
254I server HTTP sono l'opzione consigliata per connettersi ai server MCP remoti. Questo è il trasporto più ampiamente supportato per i servizi basati su cloud.
255
256```bash theme={null}
257# Sintassi di base
258claude mcp add --transport http <name> <url>
259
260# Esempio reale: Connessione a Notion
261claude mcp add --transport http notion https://mcp.notion.com/mcp
262
263# Esempio con token Bearer
264claude mcp add --transport http secure-api https://api.example.com/mcp \
265 --header "Authorization: Bearer your-token"
266```
267
268### Opzione 2: Aggiungi un server SSE remoto
269
270<Warning>
271 Il trasporto SSE (Server-Sent Events) è deprecato. Utilizza server HTTP invece, dove disponibili.
272</Warning>
273
274```bash theme={null}
275# Sintassi di base
276claude mcp add --transport sse <name> <url>
277
278# Esempio reale: Connessione ad Asana
279claude mcp add --transport sse asana https://mcp.asana.com/sse
280
281# Esempio con header di autenticazione
282claude mcp add --transport sse private-api https://api.company.com/sse \
283 --header "X-API-Key: your-key-here"
284```
285
286### Opzione 3: Aggiungi un server stdio locale
287
288I server stdio vengono eseguiti come processi locali sulla tua macchina. Sono ideali per strumenti che necessitano di accesso diretto al sistema o script personalizzati.
289
290```bash theme={null}
291# Sintassi di base
292claude mcp add [options] <name> -- <command> [args...]
293
294# Esempio reale: Aggiungi server Airtable
295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
296 -- npx -y airtable-mcp-server
297```
298
299<Note>
300 **Importante: Ordine delle opzioni**
301
302 Tutte le opzioni (`--transport`, `--env`, `--scope`, `--header`) devono venire **prima** del nome del server. Il `--` (doppio trattino) separa quindi il nome del server dal comando e dagli argomenti che vengono passati al server MCP.
303
304 Per esempio:
305
306 * `claude mcp add --transport stdio myserver -- npx server` → esegue `npx server`
307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → esegue `python server.py --port 8080` con `KEY=value` nell'ambiente
308
309 Questo previene conflitti tra i flag di Claude e i flag del server.
310</Note>
311
312### Gestione dei tuoi server
313
314Una volta configurati, puoi gestire i tuoi server MCP con questi comandi:
315
316```bash theme={null}
317# Elenca tutti i server configurati
318claude mcp list
319
320# Ottieni dettagli per un server specifico
321claude mcp get github
322
323# Rimuovi un server
324claude mcp remove github
325
326# (all'interno di Claude Code) Controlla lo stato del server
327/mcp
328```
329
330### Aggiornamenti dinamici degli strumenti
331
332Claude Code supporta le notifiche `list_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.
333
334### Riconnessione automatica
335
336Se 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 puoi riprovare manualmente da `/mcp`. I server stdio sono processi locali e non vengono riconnessi automaticamente.
337
338Lo 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.
339
340### Invia messaggi con canali
341
342Un server MCP può anche inviare messaggi direttamente nella tua 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 tuo server dichiara la capacità `claude/channel` e tu la abiliti con il flag `--channels` all'avvio. Vedi [Canali](/it/channels) per utilizzare un canale ufficialmente supportato, oppure [Riferimento canali](/it/channels-reference) per costruire il tuo.
343
344<Tip>
345 Suggerimenti:
346
347 * Utilizza il flag `--scope` per specificare dove viene archiviata la configurazione:
348 * `local` (predefinito): Disponibile solo per te nel progetto corrente (era chiamato `project` nelle versioni precedenti)
349 * `project`: Condiviso con tutti nel progetto tramite il file `.mcp.json`
350 * `user`: Disponibile per te in tutti i progetti (era chiamato `global` nelle versioni precedenti)
351 * Imposta le variabili di ambiente con i flag `--env` (per esempio, `--env KEY=value`)
352 * Configura il timeout di avvio del server MCP utilizzando la variabile di ambiente MCP\_TIMEOUT (per esempio, `MCP_TIMEOUT=10000 claude` imposta un timeout di 10 secondi)
353 * Claude Code visualizzerà un avviso quando l'output dello strumento MCP supera 10.000 token. Per aumentare questo limite, imposta la variabile di ambiente `MAX_MCP_OUTPUT_TOKENS` (per esempio, `MAX_MCP_OUTPUT_TOKENS=50000`)
354 * Utilizza `/mcp` per autenticarti con server remoti che richiedono l'autenticazione OAuth 2.0
355</Tip>
356
357### Server MCP forniti da plugin
358
359I [plugin](/it/plugins) 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.
360
361**Come funzionano i server MCP dei plugin**:
362
363* I plugin definiscono i server MCP in `.mcp.json` nella radice del plugin o inline in `plugin.json`
364* Quando un plugin è abilitato, i suoi server MCP si avviano automaticamente
365* Gli strumenti MCP del plugin appaiono insieme agli strumenti MCP configurati manualmente
366* I server dei plugin vengono gestiti tramite l'installazione del plugin (non tramite comandi `/mcp`)
367
368**Esempio di configurazione MCP del plugin**:
369
370In `.mcp.json` nella radice del plugin:
371
372```json theme={null}
373{
374 "mcpServers": {
375 "database-tools": {
376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
378 "env": {
379 "DB_URL": "${DB_URL}"
380 }
381 }
382 }
383}
384```
385
386O inline in `plugin.json`:
387
388```json theme={null}
389{
390 "name": "my-plugin",
391 "mcpServers": {
392 "plugin-api": {
393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
394 "args": ["--port", "8080"]
395 }
396 }
397}
398```
399
400**Funzionalità MCP del plugin**:
401
402* **Ciclo di vita automatico**: All'avvio della sessione, i server per i plugin abilitati si connettono automaticamente. Se abiliti o disabiliti un plugin durante una sessione, esegui `/reload-plugins` per connettere o disconnettere i suoi server MCP
403* **Variabili di ambiente**: Utilizza `${CLAUDE_PLUGIN_ROOT}` per i file del plugin raggruppati e `${CLAUDE_PLUGIN_DATA}` per lo [stato persistente](/it/plugins-reference#persistent-data-directory) che sopravvive agli aggiornamenti del plugin
404* **Accesso alle variabili di ambiente dell'utente**: Accesso alle stesse variabili di ambiente dei server configurati manualmente
405* **Tipi di trasporto multipli**: Supporto per trasporti stdio, SSE e HTTP (il supporto del trasporto può variare a seconda del server)
406
407**Visualizzazione dei server MCP del plugin**:
408
409```bash theme={null}
410# All'interno di Claude Code, vedi tutti i server MCP inclusi quelli dei plugin
411/mcp
412```
413
414I server dei plugin appaiono nell'elenco con indicatori che mostrano che provengono dai plugin.
415
416**Vantaggi dei server MCP dei plugin**:
417
418* **Distribuzione raggruppata**: Strumenti e server confezionati insieme
419* **Configurazione automatica**: Nessuna configurazione MCP manuale necessaria
420* **Coerenza del team**: Tutti ottengono gli stessi strumenti quando il plugin è installato
421
422Vedi il [riferimento dei componenti del plugin](/it/plugins-reference#mcp-servers) per i dettagli su come raggruppare i server MCP con i plugin.
423
424## Ambiti di installazione MCP
425
426I 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.
427
428| Ambito | Carica in | Condiviso con il team | Archiviato in |
429| -------------------------- | ------------------------- | ------------------------------------ | ------------------------------------- |
430| [Locale](#local-scope) | Solo il progetto corrente | No | `~/.claude.json` |
431| [Progetto](#project-scope) | Solo il progetto corrente | Sì, tramite controllo della versione | `.mcp.json` nella radice del progetto |
432| [Utente](#user-scope) | Tutti i tuoi progetti | No | `~/.claude.json` |
433
434### Ambito locale
435
436L'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.
437
438<Note>
439 Il termine "ambito locale" per i server MCP differisce dalle impostazioni locali generali. I server MCP con ambito locale vengono archiviati in `~/.claude.json` (la tua directory home), mentre le impostazioni locali generali utilizzano `.claude/settings.local.json` (nella directory del progetto). Vedi [Impostazioni](/it/settings#settings-files) per i dettagli sui percorsi dei file di impostazioni.
440</Note>
441
442```bash theme={null}
443# Aggiungi un server con ambito locale (predefinito)
444claude mcp add --transport http stripe https://mcp.stripe.com
445
446# Specifica esplicitamente l'ambito locale
447claude mcp add --transport http stripe --scope local https://mcp.stripe.com
448```
449
450Il comando scrive il server nella voce per il tuo progetto corrente all'interno di `~/.claude.json`. L'esempio seguente mostra il risultato quando lo esegui da `/path/to/your/project`:
451
452```json theme={null}
453{
454 "projects": {
455 "/path/to/your/project": {
456 "mcpServers": {
457 "stripe": {
458 "type": "http",
459 "url": "https://mcp.stripe.com"
460 }
461 }
462 }
463 }
464}
465```
466
467### Ambito del progetto
468
469I 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.
470
471```bash theme={null}
472# Aggiungi un server con ambio del progetto
473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
474```
475
476Il file `.mcp.json` risultante segue un formato standardizzato:
477
478```json theme={null}
479{
480 "mcpServers": {
481 "shared-server": {
482 "command": "/path/to/server",
483 "args": [],
484 "env": {}
485 }
486 }
487}
488```
489
490Per motivi di sicurezza, Claude Code richiede l'approvazione prima di utilizzare server con ambito del progetto dai file `.mcp.json`. Se devi ripristinare queste scelte di approvazione, utilizza il comando `claude mcp reset-project-choices`.
491
492### Ambito utente
493
494I 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.
495
496```bash theme={null}
497# Aggiungi un server utente
498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
499```
500
501### Gerarchia e precedenza dell'ambito
502
503Quando 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:
504
5051. Ambito locale
5062. Ambito del progetto
5073. Ambito utente
5084. [Server forniti da plugin](/it/plugins)
5095. [Connettori claude.ai](#use-mcp-servers-from-claude-ai)
510
511I tre ambiti corrispondono ai duplicati per nome. I plugin e i connettori corrispondono per endpoint, quindi uno che punta allo stesso URL o comando di un server sopra è trattato come un duplicato.
512
513### Espansione delle variabili di ambiente in `.mcp.json`
514
515Claude 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.
516
517**Sintassi supportata:**
518
519* `${VAR}` - Si espande al valore della variabile di ambiente `VAR`
520* `${VAR:-default}` - Si espande a `VAR` se impostato, altrimenti utilizza `default`
521
522**Posizioni di espansione:**
523Le variabili di ambiente possono essere espanse in:
524
525* `command` - Il percorso dell'eseguibile del server
526* `args` - Argomenti della riga di comando
527* `env` - Variabili di ambiente passate al server
528* `url` - Per i tipi di server HTTP
529* `headers` - Per l'autenticazione del server HTTP
530
531**Esempio con espansione di variabili:**
532
533```json theme={null}
534{
535 "mcpServers": {
536 "api-server": {
537 "type": "http",
538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
539 "headers": {
540 "Authorization": "Bearer ${API_KEY}"
541 }
542 }
543 }
544}
545```
546
547Se una variabile di ambiente richiesta non è impostata e non ha un valore predefinito, Claude Code non riuscirà ad analizzare la configurazione.
548
549## Esempi pratici
550
551{/* ### Example: Automate browser testing with Playwright
552
553```bash
554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
555```
556
557Then write and run browser tests:
558
559```text
560Test if the login flow works with test@example.com
561```
562```text
563Take a screenshot of the checkout page on mobile
564```
565```text
566Verify that the search feature returns results
567``` */}
568
569### Esempio: Monitora gli errori con Sentry
570
571```bash theme={null}
572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
573```
574
575Autenticati con il tuo account Sentry:
576
577```text theme={null}
578/mcp
579```
580
581Quindi esegui il debug dei problemi di produzione:
582
583```text theme={null}
584Quali sono gli errori più comuni nelle ultime 24 ore?
585```
586
587```text theme={null}
588Mostrami la stack trace per l'errore ID abc123
589```
590
591```text theme={null}
592Quale deployment ha introdotto questi nuovi errori?
593```
594
595### Esempio: Connettiti a GitHub per le revisioni del codice
596
597Il 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](https://github.com/settings/personal-access-tokens), genera un nuovo token con granularità fine con accesso ai repository con cui desideri che Claude lavori, quindi aggiungi il server:
598
599```bash theme={null}
600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
601 --header "Authorization: Bearer YOUR_GITHUB_PAT"
602```
603
604Quindi lavora con GitHub:
605
606```text theme={null}
607Rivedi la PR #456 e suggerisci miglioramenti
608```
609
610```text theme={null}
611Crea un nuovo issue per il bug che abbiamo appena trovato
612```
613
614```text theme={null}
615Mostrami tutte le PR aperte assegnate a me
616```
617
618### Esempio: Interroga il tuo database PostgreSQL
619
620```bash theme={null}
621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
623```
624
625Quindi interroga il tuo database naturalmente:
626
627```text theme={null}
628Qual è il nostro ricavo totale questo mese?
629```
630
631```text theme={null}
632Mostrami lo schema per la tabella orders
633```
634
635```text theme={null}
636Trova i clienti che non hanno effettuato un acquisto negli ultimi 90 giorni
637```
638
639## Autenticazione con server MCP remoti
640
641Molti server MCP basati su cloud richiedono l'autenticazione. Claude Code supporta OAuth 2.0 per connessioni sicure.
642
643<Steps>
644 <Step title="Aggiungi il server che richiede l'autenticazione">
645 Per esempio:
646
647 ```bash theme={null}
648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
649 ```
650 </Step>
651
652 <Step title="Utilizza il comando /mcp all'interno di Claude Code">
653 In Claude Code, utilizza il comando:
654
655 ```text theme={null}
656 /mcp
657 ```
658
659 Quindi segui i passaggi nel tuo browser per accedere.
660 </Step>
661</Steps>
662
663<Tip>
664 Suggerimenti:
665
666 * I token di autenticazione vengono archiviati in modo sicuro e aggiornati automaticamente
667 * Utilizza "Clear authentication" nel menu `/mcp` per revocare l'accesso
668 * Se il tuo browser non si apre automaticamente, copia l'URL fornito e aprilo manualmente
669 * Se il reindirizzamento del browser non riesce con un errore di connessione dopo l'autenticazione, incolla l'URL di callback completo dalla barra degli indirizzi del tuo browser nel prompt dell'URL che appare in Claude Code
670 * L'autenticazione OAuth funziona con i server HTTP
671</Tip>
672
673### Utilizza una porta di callback OAuth fissa
674
675Alcuni 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`.
676
677Puoi utilizzare `--callback-port` da solo (con registrazione dinamica del client) o insieme a `--client-id` (con credenziali pre-configurate).
678
679```bash theme={null}
680# Porta di callback fissa con registrazione dinamica del client
681claude mcp add --transport http \
682 --callback-port 8080 \
683 my-server https://mcp.example.com/mcp
684```
685
686### Utilizza credenziali OAuth pre-configurate
687
688Alcuni 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.
689
690<Steps>
691 <Step title="Registra un'app OAuth con il server">
692 Crea un'app tramite il portale degli sviluppatori del server e annota il tuo ID client e il segreto client.
693
694 Molti server richiedono anche un URI di reindirizzamento. Se è così, scegli una porta e registra un URI di reindirizzamento nel formato `http://localhost:PORT/callback`. Utilizza quella stessa porta con `--callback-port` nel passaggio successivo.
695 </Step>
696
697 <Step title="Aggiungi il server con le tue credenziali">
698 Scegli uno dei seguenti metodi. La porta utilizzata per `--callback-port` può essere qualsiasi porta disponibile. Deve solo corrispondere all'URI di reindirizzamento che hai registrato nel passaggio precedente.
699
700 <Tabs>
701 <Tab title="claude mcp add">
702 Utilizza `--client-id` per passare l'ID client della tua app. Il flag `--client-secret` richiede il segreto con input mascherato:
703
704 ```bash theme={null}
705 claude mcp add --transport http \
706 --client-id your-client-id --client-secret --callback-port 8080 \
707 my-server https://mcp.example.com/mcp
708 ```
709 </Tab>
710
711 <Tab title="claude mcp add-json">
712 Includi l'oggetto `oauth` nella configurazione JSON e passa `--client-secret` come flag separato:
713
714 ```bash theme={null}
715 claude mcp add-json my-server \
716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
717 --client-secret
718 ```
719 </Tab>
720
721 <Tab title="claude mcp add-json (solo porta di callback)">
722 Utilizza `--callback-port` senza un ID client per fissare la porta mentre utilizzi la registrazione dinamica del client:
723
724 ```bash theme={null}
725 claude mcp add-json my-server \
726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
727 ```
728 </Tab>
729
730 <Tab title="CI / env var">
731 Imposta il segreto tramite variabile di ambiente per saltare il prompt interattivo:
732
733 ```bash theme={null}
734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
735 --client-id your-client-id --client-secret --callback-port 8080 \
736 my-server https://mcp.example.com/mcp
737 ```
738 </Tab>
739 </Tabs>
740 </Step>
741
742 <Step title="Autenticati in Claude Code">
743 Esegui `/mcp` in Claude Code e segui il flusso di accesso del browser.
744 </Step>
745</Steps>
746
747<Tip>
748 Suggerimenti:
749
750 * Il segreto client viene archiviato in modo sicuro nel tuo portachiavi di sistema (macOS) o in un file di credenziali, non nella tua configurazione
751 * Se il server utilizza un client OAuth pubblico senza segreto, utilizza solo `--client-id` senza `--client-secret`
752 * `--callback-port` può essere utilizzato con o senza `--client-id`
753 * Questi flag si applicano solo ai trasporti HTTP e SSE. Non hanno effetto sui server stdio
754 * Utilizza `claude mcp get <name>` per verificare che le credenziali OAuth siano configurate per un server
755</Tip>
756
757### Sovrascrivi la scoperta dei metadati OAuth
758
759Indirizza Claude Code a un URL di metadati OAuth specifico per bypassare la catena di scoperta predefinita. Imposta `authServerMetadataUrl` 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`.
760
761Imposta `authServerMetadataUrl` nell'oggetto `oauth` della configurazione del tuo server in `.mcp.json`:
762
763```json theme={null}
764{
765 "mcpServers": {
766 "my-server": {
767 "type": "http",
768 "url": "https://mcp.example.com/mcp",
769 "oauth": {
770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
771 }
772 }
773 }
774}
775```
776
777L'URL deve utilizzare `https://`. `authServerMetadataUrl` richiede Claude Code v2.1.64 o successiva. L'`scopes_supported` dell'URL dei metadati sovrascrive gli ambiti che il server upstream pubblicizza.
778
779### Limita gli ambiti OAuth
780
781Imposta `oauth.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.
782
783```json theme={null}
784{
785 "mcpServers": {
786 "slack": {
787 "type": "http",
788 "url": "https://mcp.slack.com/mcp",
789 "oauth": {
790 "scopes": "channels:read chat:write search:read"
791 }
792 }
793 }
794}
795```
796
797`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.
798
799Se 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.
800
801Se 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.
802
803### Utilizza intestazioni dinamiche per l'autenticazione personalizzata
804
805Se il tuo server MCP utilizza uno schema di autenticazione diverso da OAuth (come Kerberos, token di breve durata o un SSO interno), utilizza `headersHelper` per generare intestazioni di richiesta al momento della connessione. Claude Code esegue il comando e unisce il suo output alle intestazioni di connessione.
806
807```json theme={null}
808{
809 "mcpServers": {
810 "internal-api": {
811 "type": "http",
812 "url": "https://mcp.internal.example.com",
813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
814 }
815 }
816}
817```
818
819Il comando può anche essere inline:
820
821```json theme={null}
822{
823 "mcpServers": {
824 "internal-api": {
825 "type": "http",
826 "url": "https://mcp.internal.example.com",
827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
828 }
829 }
830}
831```
832
833**Requisiti:**
834
835* Il comando deve scrivere un oggetto JSON di coppie chiave-valore stringa su stdout
836* Il comando viene eseguito in una shell con un timeout di 10 secondi
837* Le intestazioni dinamiche sovrascrivono qualsiasi `headers` statico con lo stesso nome
838
839L'helper viene eseguito di nuovo ad ogni connessione (all'avvio della sessione e alla riconnessione). Non c'è caching, quindi il tuo script è responsabile di qualsiasi riutilizzo di token.
840
841Claude Code imposta queste variabili di ambiente quando esegue l'helper:
842
843| Variabile | Valore |
844| :---------------------------- | :--------------------- |
845| `CLAUDE_CODE_MCP_SERVER_NAME` | il nome del server MCP |
846| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL del server MCP |
847
848Utilizza questi per scrivere un singolo script helper che serve più server MCP.
849
850<Note>
851 `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.
852</Note>
853
854## Aggiungi server MCP dalla configurazione JSON
855
856Se hai una configurazione JSON per un server MCP, puoi aggiungerla direttamente:
857
858<Steps>
859 <Step title="Aggiungi un server MCP da JSON">
860 ```bash theme={null}
861 # Sintassi di base
862 claude mcp add-json <name> '<json>'
863
864 # Esempio: Aggiunta di un server HTTP con configurazione JSON
865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
866
867 # Esempio: Aggiunta di un server stdio con configurazione JSON
868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
869
870 # Esempio: Aggiunta di un server HTTP con credenziali OAuth pre-configurate
871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
872 ```
873 </Step>
874
875 <Step title="Verifica che il server sia stato aggiunto">
876 ```bash theme={null}
877 claude mcp get weather-api
878 ```
879 </Step>
880</Steps>
881
882<Tip>
883 Suggerimenti:
884
885 * Assicurati che il JSON sia correttamente sfuggito nella tua shell
886 * Il JSON deve conformarsi allo schema di configurazione del server MCP
887 * Puoi utilizzare `--scope user` per aggiungere il server alla tua configurazione utente invece di quella specifica del progetto
888</Tip>
889
890## Importa server MCP da Claude Desktop
891
892Se hai già configurato server MCP in Claude Desktop, puoi importarli:
893
894<Steps>
895 <Step title="Importa server da Claude Desktop">
896 ```bash theme={null}
897 # Sintassi di base
898 claude mcp add-from-claude-desktop
899 ```
900 </Step>
901
902 <Step title="Seleziona quali server importare">
903 Dopo aver eseguito il comando, vedrai una finestra di dialogo interattiva che ti consente di selezionare quali server desideri importare.
904 </Step>
905
906 <Step title="Verifica che i server siano stati importati">
907 ```bash theme={null}
908 claude mcp list
909 ```
910 </Step>
911</Steps>
912
913<Tip>
914 Suggerimenti:
915
916 * Questa funzionalità funziona solo su macOS e Windows Subsystem for Linux (WSL)
917 * Legge il file di configurazione di Claude Desktop dalla sua posizione standard su quelle piattaforme
918 * Utilizza il flag `--scope user` per aggiungere server alla tua configurazione utente
919 * I server importati avranno gli stessi nomi di Claude Desktop
920 * Se server con gli stessi nomi esistono già, riceveranno un suffisso numerico (per esempio, `server_1`)
921</Tip>
922
923## Utilizza server MCP da Claude.ai
924
925Se hai effettuato l'accesso a Claude Code con un account [Claude.ai](https://claude.ai), i server MCP che hai aggiunto in Claude.ai sono automaticamente disponibili in Claude Code:
926
927<Steps>
928 <Step title="Configura server MCP in Claude.ai">
929 Aggiungi server su [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Nei piani Team ed Enterprise, solo gli amministratori possono aggiungere server.
930 </Step>
931
932 <Step title="Autentica il server MCP">
933 Completa eventuali passaggi di autenticazione richiesti in Claude.ai.
934 </Step>
935
936 <Step title="Visualizza e gestisci i server in Claude Code">
937 In Claude Code, utilizza il comando:
938
939 ```text theme={null}
940 /mcp
941 ```
942
943 I server Claude.ai appaiono nell'elenco con indicatori che mostrano che provengono da Claude.ai.
944 </Step>
945</Steps>
946
947Per disabilitare i server MCP di claude.ai in Claude Code, imposta la variabile di ambiente `ENABLE_CLAUDEAI_MCP_SERVERS` su `false`:
948
949```bash theme={null}
950ENABLE_CLAUDEAI_MCP_SERVERS=false claude
951```
952
953## Utilizza Claude Code come server MCP
954
955Puoi utilizzare Claude Code stesso come server MCP a cui altre applicazioni possono connettersi:
956
957```bash theme={null}
958# Avvia Claude come server MCP stdio
959claude mcp serve
960```
961
962Puoi utilizzarlo in Claude Desktop aggiungendo questa configurazione a claude\_desktop\_config.json:
963
964```json theme={null}
965{
966 "mcpServers": {
967 "claude-code": {
968 "type": "stdio",
969 "command": "claude",
970 "args": ["mcp", "serve"],
971 "env": {}
972 }
973 }
974}
975```
976
977<Warning>
978 **Configurazione del percorso dell'eseguibile**: Il campo `command` deve fare riferimento all'eseguibile di Claude Code. Se il comando `claude` non è nel PATH del tuo sistema, dovrai specificare il percorso completo dell'eseguibile.
979
980 Per trovare il percorso completo:
981
982 ```bash theme={null}
983 which claude
984 ```
985
986 Quindi utilizza il percorso completo nella tua configurazione:
987
988 ```json theme={null}
989 {
990 "mcpServers": {
991 "claude-code": {
992 "type": "stdio",
993 "command": "/full/path/to/claude",
994 "args": ["mcp", "serve"],
995 "env": {}
996 }
997 }
998 }
999 ```
1000
1001 Senza il percorso dell'eseguibile corretto, incontrerai errori come `spawn claude ENOENT`.
1002</Warning>
1003
1004<Tip>
1005 Suggerimenti:
1006
1007 * Il server fornisce accesso agli strumenti di Claude come View, Edit, LS, ecc.
1008 * In Claude Desktop, prova a chiedere a Claude di leggere file in una directory, fare modifiche e altro ancora.
1009 * Nota che questo server MCP sta solo esponendo gli strumenti di Claude Code al tuo client MCP, quindi il tuo client è responsabile dell'implementazione della conferma dell'utente per le singole chiamate di strumenti.
1010</Tip>
1011
1012## Limiti di output MCP e avvisi
1013
1014Quando gli strumenti MCP producono output di grandi dimensioni, Claude Code aiuta a gestire l'utilizzo dei token per evitare di sovraccaricare il contesto della tua conversazione:
1015
1016* **Soglia di avviso di output**: Claude Code visualizza un avviso quando l'output di qualsiasi strumento MCP supera 10.000 token
1017* **Limite configurabile**: Puoi regolare il massimo di token di output MCP consentiti utilizzando la variabile di ambiente `MAX_MCP_OUTPUT_TOKENS`
1018* **Limite predefinito**: Il massimo predefinito è 25.000 token
1019* **Ambito**: La variabile di ambiente si applica agli strumenti che non dichiarano il loro limite. Gli strumenti che impostano [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilizzano quel valore invece per il contenuto di testo, indipendentemente da ciò che `MAX_MCP_OUTPUT_TOKENS` è impostato. Gli strumenti che restituiscono dati di immagine sono ancora soggetti a `MAX_MCP_OUTPUT_TOKENS`
1020
1021Per aumentare il limite per gli strumenti che producono output di grandi dimensioni:
1022
1023```bash theme={null}
1024export MAX_MCP_OUTPUT_TOKENS=50000
1025claude
1026```
1027
1028Questo è particolarmente utile quando si lavora con server MCP che:
1029
1030* Interrogano grandi set di dati o database
1031* Generano report o documentazione dettagliati
1032* Elaborano file di log estesi o informazioni di debug
1033
1034### Aumenta il limite per uno strumento specifico
1035
1036Se stai costruendo un server MCP, puoi 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.
1037
1038Questo è 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.
1039
1040```json theme={null}
1041{
1042 "name": "get_schema",
1043 "description": "Returns the full database schema",
1044 "_meta": {
1045 "anthropic/maxResultSizeChars": 200000
1046 }
1047}
1048```
1049
1050L'annotazione si applica indipendentemente da `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.
1051
1052<Warning>
1053 Se incontri frequentemente avvisi di output con server MCP specifici che non controlli, considera di aumentare il limite `MAX_MCP_OUTPUT_TOKENS`. Puoi anche chiedere all'autore del server di aggiungere l'annotazione `anthropic/maxResultSizeChars` o di impaginare le loro risposte. L'annotazione non ha effetto sugli strumenti che restituiscono contenuto di immagine; per quelli, aumentare `MAX_MCP_OUTPUT_TOKENS` è l'unica opzione.
1054</Warning>
1055
1056## Rispondi alle richieste di elicitazione MCP
1057
1058I 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.
1059
1060I server possono richiedere input in due modi:
1061
1062* **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.
1063* **Modalità URL**: Claude Code apre un URL del browser per l'autenticazione o l'approvazione. Completa il flusso nel browser, quindi conferma nella CLI.
1064
1065Per rispondere automaticamente alle richieste di elicitazione senza mostrare una finestra di dialogo, utilizza l'[hook `Elicitation`](/it/hooks#elicitation).
1066
1067Se stai costruendo un server MCP che utilizza l'elicitazione, vedi la [specifica di elicitazione MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) per i dettagli del protocollo e gli esempi di schema.
1068
1069## Utilizza risorse MCP
1070
1071I server MCP possono esporre risorse che puoi referenziare utilizzando menzioni @, simile a come referenzi i file.
1072
1073### Referenzia risorse MCP
1074
1075<Steps>
1076 <Step title="Elenca le risorse disponibili">
1077 Digita `@` 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.
1078 </Step>
1079
1080 <Step title="Referenzia una risorsa specifica">
1081 Utilizza il formato `@server:protocol://resource/path` per referenziare una risorsa:
1082
1083 ```text theme={null}
1084 Puoi analizzare @github:issue://123 e suggerire una correzione?
1085 ```
1086
1087 ```text theme={null}
1088 Per favore rivedi la documentazione API su @docs:file://api/authentication
1089 ```
1090 </Step>
1091
1092 <Step title="Referenze di risorse multiple">
1093 Puoi referenziare più risorse in un singolo prompt:
1094
1095 ```text theme={null}
1096 Confronta @postgres:schema://users con @docs:file://database/user-model
1097 ```
1098 </Step>
1099</Steps>
1100
1101<Tip>
1102 Suggerimenti:
1103
1104 * Le risorse vengono recuperate automaticamente e incluse come allegati quando referenziate
1105 * I percorsi delle risorse sono ricercabili con fuzzy search nel completamento automatico della menzione @
1106 * Claude Code fornisce automaticamente strumenti per elencare e leggere risorse MCP quando i server le supportano
1107 * Le risorse possono contenere qualsiasi tipo di contenuto fornito dal server MCP (testo, JSON, dati strutturati, ecc.)
1108</Tip>
1109
1110## Scala con MCP Tool Search
1111
1112Tool 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 vengono caricati all'avvio della sessione, quindi aggiungere più server MCP ha un impatto minimo sulla tua finestra di contesto.
1113
1114### Come funziona
1115
1116Tool 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.
1117
1118Se preferisci il caricamento basato su soglia, imposta `ENABLE_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](#configure-tool-search) per tutte le opzioni.
1119
1120### Per gli autori di server MCP
1121
1122Se 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](/it/skills).
1123
1124Aggiungi istruzioni del server chiare e descrittive che spieghino:
1125
1126* Quale categoria di attività gestiscono i tuoi strumenti
1127* Quando Claude dovrebbe cercare i tuoi strumenti
1128* Capacità chiave che il tuo server fornisce
1129
1130Claude Code tronca le descrizioni degli strumenti e le istruzioni del server a 2KB ciascuna. Mantienile concise per evitare il troncamento e metti i dettagli critici all'inizio.
1131
1132### Configura tool search
1133
1134Tool search è abilitato per impostazione predefinita: gli strumenti MCP vengono rimandati e scoperti su richiesta. È disabilitato per impostazione predefinita su Vertex AI, che non accetta l'intestazione beta tool search, e quando `ANTHROPIC_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 opt-in. Questa funzionalità richiede modelli che supportano blocchi `tool_reference`: Sonnet 4 e successivi, oppure Opus 4 e successivi. I modelli Haiku non supportano tool search.
1135
1136Controlla il comportamento di tool search con la variabile di ambiente `ENABLE_TOOL_SEARCH`:
1137
1138| Valore | Comportamento |
1139| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1140| (non impostato) | Tutti gli strumenti MCP rimandati e caricati su richiesta. Ricade al caricamento in anticipo su Vertex AI o quando `ANTHROPIC_BASE_URL` è un host non di prima parte |
1141| `true` | Tutti gli strumenti MCP rimandati, incluso su Vertex AI e per `ANTHROPIC_BASE_URL` non di prima parte |
1142| `auto` | Modalità soglia: gli strumenti vengono caricati in anticipo se si adattano entro il 10% della finestra di contesto, rimandati altrimenti |
1143| `auto:<N>` | Modalità soglia con una percentuale personalizzata, dove `<N>` è 0-100 (ad es. `auto:5` per il 5%) |
1144| `false` | Tutti gli strumenti MCP caricati in anticipo, nessun rinvio |
1145
1146```bash theme={null}
1147# Utilizza una soglia personalizzata del 5%
1148ENABLE_TOOL_SEARCH=auto:5 claude
1149
1150# Disabilita completamente tool search
1151ENABLE_TOOL_SEARCH=false claude
1152```
1153
1154Oppure imposta il valore nel campo `env` del tuo [settings.json](/it/settings#available-settings).
1155
1156Puoi anche disabilitare lo strumento `ToolSearch` specificamente:
1157
1158```json theme={null}
1159{
1160 "permissions": {
1161 "deny": ["ToolSearch"]
1162 }
1163}
1164```
1165
1166### Esentare un server dal rinvio
1167
1168Se gli strumenti di un server dovrebbero essere sempre visibili a Claude senza un passaggio di ricerca, imposta `alwaysLoad` 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.
1169
1170La seguente voce `.mcp.json` esentare un server HTTP mentre lascia gli altri server rimandati:
1171
1172```json theme={null}
1173{
1174 "mcpServers": {
1175 "core-tools": {
1176 "type": "http",
1177 "url": "https://mcp.example.com/mcp",
1178 "alwaysLoad": true
1179 }
1180 }
1181}
1182```
1183
1184Il campo `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.
1185
1186## Utilizza i prompt MCP come comandi
1187
1188I server MCP possono esporre prompt che diventano disponibili come comandi in Claude Code.
1189
1190### Esegui i prompt MCP
1191
1192<Steps>
1193 <Step title="Scopri i prompt disponibili">
1194 Digita `/` per vedere tutti i comandi disponibili, inclusi quelli dai server MCP. I prompt MCP appaiono con il formato `/mcp__servername__promptname`.
1195 </Step>
1196
1197 <Step title="Esegui un prompt senza argomenti">
1198 ```text theme={null}
1199 /mcp__github__list_prs
1200 ```
1201 </Step>
1202
1203 <Step title="Esegui un prompt con argomenti">
1204 Molti prompt accettano argomenti. Passali separati da spazi dopo il comando:
1205
1206 ```text theme={null}
1207 /mcp__github__pr_review 456
1208 ```
1209
1210 ```text theme={null}
1211 /mcp__jira__create_issue "Bug nel flusso di accesso" high
1212 ```
1213 </Step>
1214</Steps>
1215
1216<Tip>
1217 Suggerimenti:
1218
1219 * I prompt MCP vengono scoperti dinamicamente dai server connessi
1220 * Gli argomenti vengono analizzati in base ai parametri definiti del prompt
1221 * I risultati del prompt vengono iniettati direttamente nella conversazione
1222 * I nomi del server e del prompt vengono normalizzati (gli spazi diventano trattini bassi)
1223</Tip>
1224
1225## Configurazione MCP gestita
1226
1227Per le organizzazioni che necessitano di un controllo centralizzato sui server MCP, Claude Code supporta due opzioni di configurazione:
1228
12291. **Controllo esclusivo con `managed-mcp.json`**: Distribuisci un set fisso di server MCP che gli utenti non possono modificare o estendere
12302. **Controllo basato su policy con allowlist/denylist**: Consenti agli utenti di aggiungere i propri server, ma limita quali sono consentiti
1231
1232Queste opzioni consentono agli amministratori IT di:
1233
1234* **Controllare a quali server MCP i dipendenti possono accedere**: Distribuisci un set standardizzato di server MCP approvati in tutta l'organizzazione
1235* **Prevenire server MCP non autorizzati**: Limita gli utenti dall'aggiungere server MCP non approvati
1236* **Disabilitare completamente MCP**: Rimuovi completamente la funzionalità MCP se necessario
1237
1238### Opzione 1: Controllo esclusivo con managed-mcp.json
1239
1240Quando distribuisci un file `managed-mcp.json`, assume il **controllo esclusivo** su tutti i server MCP. Gli utenti non possono aggiungere, modificare o utilizzare alcun server MCP diverso da quelli definiti in questo file. Questo è l'approccio più semplice per le organizzazioni che desiderano un controllo completo.
1241
1242Gli amministratori di sistema distribuiscono il file di configurazione a una directory a livello di sistema:
1243
1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`
1245* Linux e WSL: `/etc/claude-code/managed-mcp.json`
1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`
1247
1248<Note>
1249 Questi sono percorsi a livello di sistema (non directory home dell'utente come `~/Library/...`) che richiedono privilegi di amministratore. Sono progettati per essere distribuiti dagli amministratori IT.
1250</Note>
1251
1252Il file `managed-mcp.json` utilizza lo stesso formato di un file `.mcp.json` standard:
1253
1254```json theme={null}
1255{
1256 "mcpServers": {
1257 "github": {
1258 "type": "http",
1259 "url": "https://api.githubcopilot.com/mcp/"
1260 },
1261 "sentry": {
1262 "type": "http",
1263 "url": "https://mcp.sentry.dev/mcp"
1264 },
1265 "company-internal": {
1266 "type": "stdio",
1267 "command": "/usr/local/bin/company-mcp-server",
1268 "args": ["--config", "/etc/company/mcp-config.json"],
1269 "env": {
1270 "COMPANY_API_URL": "https://internal.company.com"
1271 }
1272 }
1273 }
1274}
1275```
1276
1277### Opzione 2: Controllo basato su policy con allowlist e denylist
1278
1279Invece di assumere il controllo esclusivo, gli amministratori possono consentire agli utenti di configurare i propri server MCP mentre applicano restrizioni su quali server sono consentiti. Questo approccio utilizza `allowedMcpServers` e `deniedMcpServers` nel [file di impostazioni gestite](/it/settings#settings-files).
1280
1281<Note>
1282 **Scelta tra le opzioni**: Utilizza l'Opzione 1 (`managed-mcp.json`) quando desideri distribuire un set fisso di server senza personalizzazione dell'utente. Utilizza l'Opzione 2 (allowlist/denylist) quando desideri consentire agli utenti di aggiungere i propri server entro i vincoli della policy.
1283</Note>
1284
1285#### Opzioni di restrizione
1286
1287Ogni voce nell'allowlist o denylist può limitare i server in tre modi:
1288
12891. **Per nome del server** (`serverName`): Corrisponde al nome configurato del server
12902. **Per comando** (`serverCommand`): Corrisponde al comando esatto e agli argomenti utilizzati per avviare i server stdio
12913. **Per pattern URL** (`serverUrl`): Corrisponde agli URL dei server remoti con supporto per i caratteri jolly
1292
1293**Importante**: Ogni voce deve avere esattamente uno tra `serverName`, `serverCommand` o `serverUrl`.
1294
1295#### Configurazione di esempio
1296
1297```json theme={null}
1298{
1299 "allowedMcpServers": [
1300 // Consenti per nome del server
1301 { "serverName": "github" },
1302 { "serverName": "sentry" },
1303
1304 // Consenti per comando esatto (per server stdio)
1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1307
1308 // Consenti per pattern URL (per server remoti)
1309 { "serverUrl": "https://mcp.company.com/*" },
1310 { "serverUrl": "https://*.internal.corp/*" }
1311 ],
1312 "deniedMcpServers": [
1313 // Blocca per nome del server
1314 { "serverName": "dangerous-server" },
1315
1316 // Blocca per comando esatto (per server stdio)
1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1318
1319 // Blocca per pattern URL (per server remoti)
1320 { "serverUrl": "https://*.untrusted.com/*" }
1321 ]
1322}
1323```
1324
1325#### Come funzionano le restrizioni basate su comando
1326
1327**Corrispondenza esatta**:
1328
1329* Gli array di comando devono corrispondere **esattamente** - sia il comando che tutti gli argomenti nell'ordine corretto
1330* Esempio: `["npx", "-y", "server"]` NON corrisponderà a `["npx", "server"]` o `["npx", "-y", "server", "--flag"]`
1331
1332**Comportamento del server stdio**:
1333
1334* Quando l'allowlist contiene **qualsiasi** voce `serverCommand`, i server stdio **devono** corrispondere a uno di quei comandi
1335* I server stdio non possono passare solo per nome quando sono presenti restrizioni di comando
1336* Questo assicura che gli amministratori possono applicare quali comandi sono consentiti di eseguire
1337
1338**Comportamento del server non-stdio**:
1339
1340* I server remoti (HTTP, SSE, WebSocket) utilizzano la corrispondenza basata su URL quando esistono voci `serverUrl` nell'allowlist
1341* Se non esistono voci URL, i server remoti ricadono sulla corrispondenza basata su nome
1342* Le restrizioni di comando non si applicano ai server remoti
1343
1344#### Come funzionano le restrizioni basate su URL
1345
1346I pattern URL supportano i caratteri jolly utilizzando `*` per corrispondere a qualsiasi sequenza di caratteri. Questo è utile per consentire interi domini o sottodomini.
1347
1348**Esempi di caratteri jolly**:
1349
1350* `https://mcp.company.com/*` - Consenti tutti i percorsi su un dominio specifico
1351* `https://*.example.com/*` - Consenti qualsiasi sottodominio di example.com
1352* `http://localhost:*/*` - Consenti qualsiasi porta su localhost
1353
1354**Comportamento del server remoto**:
1355
1356* Quando l'allowlist contiene **qualsiasi** voce `serverUrl`, i server remoti **devono** corrispondere a uno di quei pattern URL
1357* I server remoti non possono passare solo per nome quando sono presenti restrizioni URL
1358* Questo assicura che gli amministratori possono applicare quali endpoint remoti sono consentiti
1359
1360<Accordion title="Esempio: Allowlist solo URL">
1361 ```json theme={null}
1362 {
1363 "allowedMcpServers": [
1364 { "serverUrl": "https://mcp.company.com/*" },
1365 { "serverUrl": "https://*.internal.corp/*" }
1366 ]
1367 }
1368 ```
1369
1370 **Risultato**:
1371
1372 * Server HTTP su `https://mcp.company.com/api`: ✅ Consentito (corrisponde al pattern URL)
1373 * Server HTTP su `https://api.internal.corp/mcp`: ✅ Consentito (corrisponde al sottodominio jolly)
1374 * Server HTTP su `https://external.com/mcp`: ❌ Bloccato (non corrisponde a nessun pattern URL)
1375 * Server stdio con qualsiasi comando: ❌ Bloccato (nessuna voce di nome o comando per corrispondere)
1376</Accordion>
1377
1378<Accordion title="Esempio: Allowlist solo comando">
1379 ```json theme={null}
1380 {
1381 "allowedMcpServers": [
1382 { "serverCommand": ["npx", "-y", "approved-package"] }
1383 ]
1384 }
1385 ```
1386
1387 **Risultato**:
1388
1389 * Server stdio con `["npx", "-y", "approved-package"]`: ✅ Consentito (corrisponde al comando)
1390 * Server stdio con `["node", "server.js"]`: ❌ Bloccato (non corrisponde al comando)
1391 * Server HTTP denominato "my-api": ❌ Bloccato (nessuna voce di nome per corrispondere)
1392</Accordion>
1393
1394<Accordion title="Esempio: Allowlist misto di nome e comando">
1395 ```json theme={null}
1396 {
1397 "allowedMcpServers": [
1398 { "serverName": "github" },
1399 { "serverCommand": ["npx", "-y", "approved-package"] }
1400 ]
1401 }
1402 ```
1403
1404 **Risultato**:
1405
1406 * Server stdio denominato "local-tool" con `["npx", "-y", "approved-package"]`: ✅ Consentito (corrisponde al comando)
1407 * Server stdio denominato "local-tool" con `["node", "server.js"]`: ❌ Bloccato (le voci di comando esistono ma non corrisponde)
1408 * Server stdio denominato "github" con `["node", "server.js"]`: ❌ Bloccato (i server stdio devono corrispondere ai comandi quando le voci di comando esistono)
1409 * Server HTTP denominato "github": ✅ Consentito (corrisponde al nome)
1410 * Server HTTP denominato "other-api": ❌ Bloccato (il nome non corrisponde)
1411</Accordion>
1412
1413<Accordion title="Esempio: Allowlist solo nome">
1414 ```json theme={null}
1415 {
1416 "allowedMcpServers": [
1417 { "serverName": "github" },
1418 { "serverName": "internal-tool" }
1419 ]
1420 }
1421 ```
1422
1423 **Risultato**:
1424
1425 * Server stdio denominato "github" con qualsiasi comando: ✅ Consentito (nessuna restrizione di comando)
1426 * Server stdio denominato "internal-tool" con qualsiasi comando: ✅ Consentito (nessuna restrizione di comando)
1427 * Server HTTP denominato "github": ✅ Consentito (corrisponde al nome)
1428 * Qualsiasi server denominato "other": ❌ Bloccato (il nome non corrisponde)
1429</Accordion>
1430
1431#### Comportamento dell'allowlist (`allowedMcpServers`)
1432
1433* `undefined` (predefinito): Nessuna restrizione - gli utenti possono configurare qualsiasi server MCP
1434* Array vuoto `[]`: Blocco completo - gli utenti non possono configurare alcun server MCP
1435* Elenco di voci: Gli utenti possono configurare solo server che corrispondono per nome, comando o pattern URL
1436
1437#### Comportamento della denylist (`deniedMcpServers`)
1438
1439* `undefined` (predefinito): Nessun server è bloccato
1440* Array vuoto `[]`: Nessun server è bloccato
1441* Elenco di voci: I server specificati sono esplicitamente bloccati in tutti gli ambiti
1442
1443#### Note importanti
1444
1445* **L'Opzione 1 e l'Opzione 2 possono essere combinate**: Se `managed-mcp.json` esiste, ha il controllo esclusivo e gli utenti non possono aggiungere server. Gli allowlist/denylist si applicano comunque ai server gestiti stessi.
1446* **La denylist ha precedenza assoluta**: Se un server corrisponde a una voce della denylist (per nome, comando o URL), sarà bloccato anche se è nell'allowlist
1447* **Le restrizioni basate su nome, comando e URL funzionano insieme**: un server passa se corrisponde a **una** voce di nome, una voce di comando o un pattern URL (a meno che non sia bloccato dalla denylist)
1448
1449<Note>
1450 **Quando utilizzi `managed-mcp.json`**: Gli utenti non possono aggiungere server MCP tramite `claude mcp add` o file di configurazione. Le impostazioni `allowedMcpServers` e `deniedMcpServers` si applicano comunque per filtrare quali server gestiti vengono effettivamente caricati.
1451</Note>