Claude Code SDK
Aprenda sobre a integração programática do Claude Code em suas aplicações com o Claude Code SDK.
O Claude Code SDK permite executar o Claude Code como um subprocesso, fornecendo uma maneira de construir assistentes de codificação e ferramentas alimentadas por IA que aproveitam as capacidades do Claude.
O SDK está disponível para uso em linha de comando, TypeScript e Python.
Autenticação
Para usar o Claude Code SDK, recomendamos criar uma chave de API dedicada:
- Crie uma chave de API da Anthropic no Console da Anthropic
- Em seguida, defina a variável de ambiente
ANTHROPIC_API_KEY
. Recomendamos armazenar esta chave de forma segura (ex. usando um segredo do Github)
Uso básico do SDK
O Claude Code SDK permite que você use o Claude Code em modo não interativo a partir de suas aplicações.
Linha de comando
Aqui estão alguns exemplos básicos para o SDK de linha de comando:
TypeScript
O SDK TypeScript está incluído no pacote principal @anthropic-ai/claude-code
no NPM:
O SDK TypeScript aceita todos os argumentos suportados pelo SDK de linha de comando, bem como:
Argumento | Descrição | Padrão |
---|---|---|
abortController | Controlador de aborto | new AbortController() |
cwd | Diretório de trabalho atual | process.cwd() |
executable | Qual runtime JavaScript usar | node quando executando com Node.js, bun quando executando com Bun |
executableArgs | Argumentos para passar ao executável | [] |
pathToClaudeCodeExecutable | Caminho para o executável Claude Code | Executável que vem com @anthropic-ai/claude-code |
Python
O SDK Python está disponível como claude-code-sdk
no PyPI:
Pré-requisitos:
- Python 3.10+
- Node.js
- Claude Code CLI:
npm install -g @anthropic-ai/claude-code
Uso básico:
O SDK Python aceita todos os argumentos suportados pelo SDK de linha de comando através da classe ClaudeCodeOptions
:
Uso avançado
A documentação abaixo usa o SDK de linha de comando como exemplo, mas também pode ser usada com os SDKs TypeScript e Python.
Conversas de múltiplas rodadas
Para conversas de múltiplas rodadas, você pode retomar conversas ou continuar a partir da sessão mais recente:
Prompts de sistema personalizados
Você pode fornecer prompts de sistema personalizados para orientar o comportamento do Claude:
Você também pode anexar instruções ao prompt de sistema padrão:
Configuração MCP
O Model Context Protocol (MCP) permite que você estenda o Claude Code com ferramentas e recursos adicionais de servidores externos. Usando a flag --mcp-config
, você pode carregar servidores MCP que fornecem capacidades especializadas como acesso a banco de dados, integrações de API ou ferramentas personalizadas.
Crie um arquivo de configuração JSON com seus servidores MCP:
Em seguida, use-o com o Claude Code:
Ao usar ferramentas MCP, você deve explicitamente permiti-las usando a flag --allowedTools
. Nomes de ferramentas MCP seguem o padrão mcp__<serverName>__<toolName>
onde:
serverName
é a chave do seu arquivo de configuração MCPtoolName
é a ferramenta específica fornecida por esse servidor
Esta medida de segurança garante que ferramentas MCP sejam usadas apenas quando explicitamente permitidas.
Se você especificar apenas o nome do servidor (ou seja, mcp__<serverName>
), todas as ferramentas desse servidor serão permitidas.
Padrões glob (ex., mcp__go*
) não são suportados.
Ferramenta de prompt de permissão personalizada
Opcionalmente, use --permission-prompt-tool
para passar uma ferramenta MCP que usaremos para verificar se o usuário concede ou não permissões ao modelo para invocar uma determinada ferramenta. Quando o modelo invoca uma ferramenta, o seguinte acontece:
- Primeiro verificamos as configurações de permissão: todos os arquivos settings.json, bem como
--allowedTools
e--disallowedTools
passados para o SDK; se uma dessas permite ou nega a chamada da ferramenta, prosseguimos com a chamada da ferramenta - Caso contrário, invocamos a ferramenta MCP que você forneceu em
--permission-prompt-tool
A ferramenta MCP --permission-prompt-tool
recebe o nome da ferramenta e entrada, e deve retornar um payload JSON-stringified com o resultado. O payload deve ser um dos seguintes:
Por exemplo, uma implementação de ferramenta de prompt de permissão MCP em TypeScript pode parecer assim:
Para usar esta ferramenta, adicione seu servidor MCP (ex. com --mcp-config
), então invoque o SDK assim:
Notas de uso:
- Use
updatedInput
para dizer ao modelo que o prompt de permissão mutou sua entrada; caso contrário, definaupdatedInput
para a entrada original, como no exemplo acima. Por exemplo, se a ferramenta mostra um diff de edição de arquivo para o usuário e permite que eles editem o diff manualmente, a ferramenta de prompt de permissão deve retornar essa edição atualizada. - O payload deve ser JSON-stringified
Opções CLI disponíveis
O SDK aproveita todas as opções CLI disponíveis no Claude Code. Aqui estão as principais para uso do SDK:
Flag | Descrição | Exemplo |
---|---|---|
--print , -p | Execute em modo não interativo | claude -p "consulta" |
--output-format | Especifique formato de saída (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Retome uma conversa por ID de sessão | claude --resume abc123 |
--continue , -c | Continue a conversa mais recente | claude --continue |
--verbose | Habilite log detalhado | claude --verbose |
--max-turns | Limite rodadas agênticas em modo não interativo | claude --max-turns 3 |
--system-prompt | Substitua prompt de sistema (apenas com --print ) | claude --system-prompt "Instrução personalizada" |
--append-system-prompt | Anexe ao prompt de sistema (apenas com --print ) | claude --append-system-prompt "Instrução personalizada" |
--allowedTools | Lista separada por espaços de ferramentas permitidas, ou string de lista separada por vírgulas de ferramentas permitidas | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Lista separada por espaços de ferramentas negadas, ou string de lista separada por vírgulas de ferramentas negadas | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | Carregue servidores MCP de um arquivo JSON | claude --mcp-config servers.json |
--permission-prompt-tool | Ferramenta MCP para lidar com prompts de permissão (apenas com --print ) | claude --permission-prompt-tool mcp__auth__prompt |
Para uma lista completa de opções CLI e recursos, veja a documentação de referência CLI.
Formatos de saída
O SDK suporta múltiplos formatos de saída:
Saída de texto (padrão)
Retorna apenas o texto de resposta:
Saída JSON
Retorna dados estruturados incluindo metadados:
Formato de resposta:
Saída JSON de streaming
Transmite cada mensagem conforme é recebida:
Cada conversa começa com uma mensagem de sistema init
inicial, seguida por uma lista de mensagens de usuário e assistente, seguida por uma mensagem de sistema result
final com estatísticas. Cada mensagem é emitida como um objeto JSON separado.
Esquema de mensagem
Mensagens retornadas da API JSON são estritamente tipadas de acordo com o seguinte esquema:
Em breve publicaremos esses tipos em um formato compatível com JSONSchema. Usamos versionamento semântico para o pacote principal Claude Code para comunicar mudanças que quebram compatibilidade neste formato.
Os tipos Message
e MessageParam
estão disponíveis nos SDKs da Anthropic. Por exemplo, veja os SDKs TypeScript e Python da Anthropic.
Formatos de entrada
O SDK suporta múltiplos formatos de entrada:
Entrada de texto (padrão)
Texto de entrada pode ser fornecido como um argumento:
Ou texto de entrada pode ser canalizado via stdin:
Entrada JSON de streaming
Um fluxo de mensagens fornecido via stdin
onde cada mensagem representa uma rodada do usuário. Isso permite múltiplas rodadas de uma conversa sem relançar o binário claude
e permite fornecer orientação ao modelo enquanto ele está processando uma solicitação.
Cada mensagem é um objeto JSON ‘Mensagem do usuário’, seguindo o mesmo formato que o esquema de mensagem de saída. Mensagens são formatadas usando o formato jsonl onde cada linha de entrada é um objeto JSON completo. Entrada JSON de streaming requer -p
e --output-format stream-json
.
Atualmente isso é limitado a mensagens de usuário apenas de texto.
Exemplos
Integração de script simples
Processando arquivos com Claude
Gerenciamento de sessão
Melhores práticas
-
Use formato de saída JSON para análise programática de respostas:
-
Trate erros graciosamente - verifique códigos de saída e stderr:
-
Use gerenciamento de sessão para manter contexto em conversas de múltiplas rodadas
-
Considere timeouts para operações de longa duração:
-
Respeite limites de taxa ao fazer múltiplas solicitações adicionando atrasos entre chamadas
Aplicações do mundo real
O Claude Code SDK permite integrações poderosas com seu fluxo de trabalho de desenvolvimento. Um exemplo notável são as GitHub Actions do Claude Code, que usa o SDK para fornecer revisão de código automatizada, criação de PR e capacidades de triagem de issues diretamente no seu fluxo de trabalho do GitHub.
Recursos relacionados
- Uso e controles CLI - Documentação completa da CLI
- Integração GitHub Actions - Automatize seu fluxo de trabalho GitHub com Claude
- Fluxos de trabalho comuns - Guias passo a passo para casos de uso comuns