SDK
Integra programmaticamente Claude Code nelle tue applicazioni utilizzando l’SDK.
L’SDK di Claude Code consente agli sviluppatori di integrare programmaticamente Claude Code nelle loro applicazioni. Permette di eseguire Claude Code come sottoprocesso, fornendo un modo per costruire assistenti di codifica e strumenti basati sull’IA che sfruttano le capacità di Claude.
L’SDK è disponibile per l’uso da riga di comando, TypeScript e Python.
Autenticazione
Per utilizzare l’SDK di Claude Code, consigliamo di creare una chiave API dedicata:
- Crea una chiave API Anthropic nella Console Anthropic
- Quindi, imposta la variabile d’ambiente
ANTHROPIC_API_KEY
. Consigliamo di memorizzare questa chiave in modo sicuro (ad esempio utilizzando un secret di Github)
Utilizzo base dell’SDK
L’SDK di Claude Code ti permette di utilizzare Claude Code in modalità non interattiva dalle tue applicazioni.
Riga di comando
Ecco alcuni esempi base per l’SDK da riga di comando:
TypeScript
L’SDK TypeScript è incluso nel pacchetto principale @anthropic-ai/claude-code
su NPM:
L’SDK TypeScript accetta tutti gli argomenti supportati dall’SDK da riga di comando, oltre a:
Argomento | Descrizione | Predefinito |
---|---|---|
abortController | Controller di interruzione | new AbortController() |
cwd | Directory di lavoro corrente | process.cwd() |
executable | Quale runtime JavaScript utilizzare | node quando si esegue con Node.js, bun quando si esegue con Bun |
executableArgs | Argomenti da passare all’eseguibile | [] |
pathToClaudeCodeExecutable | Percorso all’eseguibile Claude Code | Eseguibile fornito con @anthropic-ai/claude-code |
Python
L’SDK Python è disponibile come claude-code-sdk
su PyPI:
Prerequisiti:
- Python 3.10+
- Node.js
- CLI Claude Code:
npm install -g @anthropic-ai/claude-code
Utilizzo base:
L’SDK Python accetta tutti gli argomenti supportati dall’SDK da riga di comando attraverso la classe ClaudeCodeOptions
:
Utilizzo avanzato
La documentazione seguente utilizza l’SDK da riga di comando come esempio, ma può essere utilizzata anche con gli SDK TypeScript e Python.
Conversazioni multi-turno
Per conversazioni multi-turno, puoi riprendere conversazioni o continuare dalla sessione più recente:
Prompt di sistema personalizzati
Puoi fornire prompt di sistema personalizzati per guidare il comportamento di Claude:
Puoi anche aggiungere istruzioni al prompt di sistema predefinito:
Configurazione MCP
Il Model Context Protocol (MCP) ti permette di estendere Claude Code con strumenti e risorse aggiuntivi da server esterni. Utilizzando il flag --mcp-config
, puoi caricare server MCP che forniscono capacità specializzate come accesso al database, integrazioni API o strumenti personalizzati.
Crea un file di configurazione JSON con i tuoi server MCP:
Poi usalo con Claude Code:
Quando utilizzi strumenti MCP, devi consentirli esplicitamente utilizzando il flag --allowedTools
. I nomi degli strumenti MCP seguono il pattern mcp__<serverName>__<toolName>
dove:
serverName
è la chiave dal tuo file di configurazione MCPtoolName
è lo strumento specifico fornito da quel server
Questa misura di sicurezza garantisce che gli strumenti MCP vengano utilizzati solo quando esplicitamente autorizzati.
Se specifichi solo il nome del server (cioè, mcp__<serverName>
), tutti gli strumenti di quel server saranno consentiti.
I pattern glob (ad esempio, mcp__go*
) non sono supportati.
Strumento personalizzato per prompt di autorizzazione
Opzionalmente, usa --permission-prompt-tool
per passare uno strumento MCP che useremo per verificare se l’utente concede al modello i permessi per invocare un determinato strumento. Quando il modello invoca uno strumento, accade quanto segue:
- Prima controlliamo le impostazioni di autorizzazione: tutti i file settings.json, così come
--allowedTools
e--disallowedTools
passati all’SDK; se una di queste impostazioni consente o nega la chiamata allo strumento, procediamo con la chiamata allo strumento - Altrimenti, invochiamo lo strumento MCP che hai fornito in
--permission-prompt-tool
Lo strumento MCP --permission-prompt-tool
riceve il nome dello strumento e l’input, e deve restituire un payload JSON-stringificato con il risultato. Il payload deve essere uno dei seguenti:
Ad esempio, un’implementazione TypeScript di uno strumento MCP per prompt di autorizzazione potrebbe apparire così:
Per utilizzare questo strumento, aggiungi il tuo server MCP (ad es. con --mcp-config
), quindi invoca l’SDK in questo modo:
Note sull’utilizzo:
- Usa
updatedInput
per dire al modello che il prompt di autorizzazione ha mutato il suo input; altrimenti, impostaupdatedInput
all’input originale, come nell’esempio sopra. Ad esempio, se lo strumento mostra un diff di modifica del file all’utente e gli permette di modificare manualmente il diff, lo strumento di prompt di autorizzazione dovrebbe restituire quella modifica aggiornata. - Il payload deve essere JSON-stringificato
Opzioni CLI disponibili
L’SDK sfrutta tutte le opzioni CLI disponibili in Claude Code. Ecco quelle principali per l’utilizzo dell’SDK:
Flag | Descrizione | Esempio |
---|---|---|
--print , -p | Esegui in modalità non interattiva | claude -p "query" |
--output-format | Specifica il formato di output (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Riprendi una conversazione tramite ID sessione | claude --resume abc123 |
--continue , -c | Continua la conversazione più recente | claude --continue |
--verbose | Abilita il logging dettagliato | claude --verbose |
--max-turns | Limita i turni agentici in modalità non interattiva | claude --max-turns 3 |
--system-prompt | Sovrascrivi il prompt di sistema (solo con --print ) | claude --system-prompt "Istruzione personalizzata" |
--append-system-prompt | Aggiungi al prompt di sistema (solo con --print ) | claude --append-system-prompt "Istruzione personalizzata" |
--allowedTools | Lista separata da spazi di strumenti consentiti, o stringa di lista separata da virgole di strumenti consentiti | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Lista separata da spazi di strumenti negati, o stringa di lista separata da virgole di strumenti negati | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | Carica server MCP da un file JSON | claude --mcp-config servers.json |
--permission-prompt-tool | Strumento MCP per gestire i prompt di autorizzazione (solo con --print ) | claude --permission-prompt-tool mcp__auth__prompt |
Per un elenco completo delle opzioni CLI e delle funzionalità, consulta la documentazione Utilizzo CLI.
Formati di output
L’SDK supporta molteplici formati di output:
Output testuale (predefinito)
Restituisce solo il testo della risposta:
Output JSON
Restituisce dati strutturati inclusi i metadati:
Formato della risposta:
Output JSON in streaming
Trasmette ogni messaggio mentre viene ricevuto:
Ogni conversazione inizia con un messaggio di sistema iniziale init
, seguito da un elenco di messaggi utente e assistente, seguito da un messaggio di sistema finale result
con statistiche. Ogni messaggio viene emesso come un oggetto JSON separato.
Schema dei messaggi
I messaggi restituiti dall’API JSON sono rigorosamente tipizzati secondo il seguente schema:
Presto pubblicheremo questi tipi in un formato compatibile con JSONSchema. Utilizziamo il versionamento semantico per il pacchetto principale Claude Code per comunicare modifiche sostanziali a questo formato.
I tipi Message
e MessageParam
sono disponibili negli SDK Anthropic. Ad esempio, vedi gli SDK Anthropic TypeScript e Python.
Esempi
Integrazione semplice di script
Elaborazione di file con Claude
Gestione delle sessioni
Migliori pratiche
-
Usa il formato di output JSON per l’analisi programmatica delle risposte:
-
Gestisci gli errori con eleganza - controlla i codici di uscita e stderr:
-
Usa la gestione delle sessioni per mantenere il contesto nelle conversazioni multi-turno
-
Considera i timeout per operazioni di lunga durata:
-
Rispetta i limiti di frequenza quando effettui più richieste aggiungendo ritardi tra le chiamate
Applicazioni nel mondo reale
L’SDK di Claude Code consente potenti integrazioni con il tuo flusso di lavoro di sviluppo. Un esempio notevole sono le GitHub Actions di Claude Code, che utilizzano l’SDK per fornire funzionalità automatizzate di revisione del codice, creazione di PR e triage dei problemi direttamente nel tuo flusso di lavoro GitHub.
Risorse correlate
- Utilizzo e controlli CLI - Documentazione CLI completa
- Integrazione GitHub Actions - Automatizza il tuo flusso di lavoro GitHub con Claude
- Tutorial - Guide passo-passo per casi d’uso comuni