Esta página abrange a configuração de MCP para o Agent SDK. Para adicionar servidores MCP ao Claude Code CLI para que sejam carregados em cada projeto, consulte escopos de instalação de MCP.
Início rápido
Este exemplo conecta ao servidor MCP de documentação do Claude Code usando transporte HTTP e usaallowedTools com um curinga para permitir todas as ferramentas do servidor.
Adicionar um servidor MCP
Você pode configurar servidores MCP em código ao chamarquery(), ou em um arquivo .mcp.json carregado via settingSources.
Em código
Passe servidores MCP diretamente na opçãomcpServers. Este exemplo inicia um servidor MCP de sistema de arquivos local para /Users/me/projects. Substitua esse caminho por um diretório em sua máquina:
De um arquivo de configuração
Crie um arquivo.mcp.json na raiz do seu projeto. O arquivo é detectado quando a fonte de configuração project está habilitada, o que é padrão para as opções query(). Se você definir settingSources explicitamente, inclua "project" para que este arquivo seja carregado. Substitua /Users/me/projects por um diretório em sua máquina:
Tempo de conexão
Claude Code registra os servidores que você passa emoptions.mcpServers na inicialização e emite a mensagem init uma vez que a espera da primeira volta, se houver, seja resolvida. Sem options.mcpServers, Claude Code aguarda 2 segundos por servidores pendentes antes da primeira volta, portanto servidores carregados de arquivos de configuração como .mcp.json geralmente mostram pending na inicialização. Quando cada servidor options.mcpServers se conecta, e se atrasa a primeira volta, depende do seu tipo:
Para bloquear a própria inicialização em uma fase separada e anterior à espera da primeira volta, antes da mensagem init ser enviada:
- Defina
MCP_CONNECTION_NONBLOCKINGcomo0para bloquear em todo o lote de conexão. Claude Code limita essa espera a 5 segundos por padrão. Ajuste o limite com a variável de ambienteMCP_CONNECT_TIMEOUT_MS, em milissegundos. Servidores ainda pendentes nesse prazo continuam se conectando em segundo plano. - Defina
alwaysLoad: truena configuração de um servidor para disponibilizar suas ferramentas em seus esquemas completos na primeira volta, isentos do adiamento de busca de ferramentas. Claude Code aguarda na inicialização pelas ferramentas desse servidor, limitado ao mesmo prazo, enquanto outros servidores continuam se conectando em segundo plano; um servidor remoto com uma lista de ferramentas em cache as fornece sem se conectar, conforme a tabela acima.
system com subtipo init relata o status de cada servidor no momento em que é emitida; consulte Tratamento de erros para ler esses status.
Permitir ferramentas MCP
As ferramentas MCP requerem permissão explícita antes que Claude possa usá-las. Sem permissão, Claude verá que as ferramentas estão disponíveis, mas não poderá chamá-las.Convenção de nomenclatura de ferramentas
As ferramentas MCP seguem o padrão de nomenclaturamcp__<server-name>__<tool-name>. Por exemplo, um servidor GitHub nomeado "github" com uma ferramenta list_issues se torna mcp__github__list_issues.
Auto-aprovação com allowedTools
UseallowedTools para auto-aprovar ferramentas MCP específicas para que Claude possa usá-las sem um prompt de permissão:
*) permitem que você aprove todas as ferramentas de um servidor sem listar cada uma individualmente.
Prefira
allowedTools em relação aos modos de permissão para acesso MCP. permissionMode: "acceptEdits" não auto-aprova ferramentas MCP (apenas edições de arquivo e comandos Bash do sistema de arquivos). permissionMode: "bypassPermissions" auto-aprova ferramentas MCP, mas também desabilita a maioria dos outros prompts de segurança, o que é mais amplo do que o necessário; veja Como as permissões são avaliadas para os prompts que permanecem. Um curinga em allowedTools concede exatamente o servidor MCP que você deseja e nada mais. Veja Modos de permissão para uma comparação completa.Descobrir ferramentas disponíveis
Para ver quais ferramentas um servidor MCP fornece, verifique a documentação do servidor ou inspecione o arraytools na mensagem init system. Os nomes das ferramentas MCP começam com mcp__.
Claude Code emite a mensagem init após a espera de conexão de primeira volta para servidores passados em options.mcpServers, então o array tools lista as ferramentas mcp__ de cada servidor que se conectou até então, mais aquelas de servidores com uma lista de ferramentas em cache, que se conectam no primeiro uso. As ferramentas de qualquer outro servidor que não se conectou estão ausentes; veja Tratamento de erros para ler o status de cada servidor.
Este filtro imprime os nomes das ferramentas MCP:
Tipos de transporte
Os servidores MCP se comunicam com seu agente usando diferentes protocolos de transporte. Verifique a documentação do servidor para ver qual transporte ele suporta:- Se a documentação fornece um comando para executar (como
npx @modelcontextprotocol/server-filesystem), use stdio - Se a documentação fornece uma URL, use HTTP ou SSE
- Se você está construindo suas próprias ferramentas em código, use um servidor MCP SDK
Servidores stdio
Processos locais que se comunicam via stdin/stdout. Use isso para servidores MCP que você executa na mesma máquina. Para o formulário.mcp.json, use os mesmos campos mostrados em De um arquivo de configuração. Em código, passe o comando e seus argumentos. Substitua /Users/me/projects por um diretório em sua máquina:
Servidores HTTP/SSE
Use HTTP ou SSE para servidores MCP hospedados em nuvem e APIs remotas. Para o formulário.mcp.json, use os mesmos campos do exemplo em Cabeçalhos HTTP para servidores remotos, com "type": "sse" para um servidor SSE. Em código, passe a URL do servidor:
"type": "http" em vez disso. Em arquivos de configuração .mcp.json e outros JSON, "streamable-http" é aceito como um alias para "http". O tipo McpHttpServerConfig dos SDKs declara apenas "http", então use "http" para servidores que você passa em código.
Servidores SDK MCP
Defina ferramentas personalizadas diretamente no código da sua aplicação em vez de executar um processo de servidor separado. Consulte o guia de ferramentas personalizadas para detalhes de implementação. Um servidor MCP SDK registrado por uma solicitação de controleinitialize começa a se conectar assim que Claude Code processa a solicitação.
Busca de ferramentas MCP
Quando você tem muitas ferramentas MCP configuradas, as definições de ferramentas podem consumir uma porção significativa da sua janela de contexto. A busca de ferramentas resolve isso ao reter as definições de ferramentas do contexto e carregar apenas as que Claude precisa para cada turno. A busca de ferramentas está ativada por padrão. Consulte Busca de ferramentas para opções de configuração, melhores práticas e uso da busca de ferramentas com ferramentas SDK personalizadas.Autenticação
A maioria dos servidores MCP requer autenticação para acessar serviços externos. Passe credenciais através de variáveis de ambiente na configuração do servidor.Passar credenciais via variáveis de ambiente
Use o campoenv para passar chaves de API, tokens e outras credenciais para o servidor MCP:
- No código
- .mcp.json
Cabeçalhos HTTP para servidores remotos
Para servidores HTTP e SSE, passe cabeçalhos de autenticação diretamente na configuração do servidor:- No código
- .mcp.json
Autenticação OAuth2
A especificação MCP suporta OAuth 2.1 para autorização. O SDK não abre um navegador nem executa um fluxo OAuth interativo. Quando um servidor configurado retorna um desafio de autorização e nenhum token armazenado está disponível, a execução do agente continua sem as ferramentas desse servidor, e o servidor relata o statusneeds-auth. O array mcp_servers da mensagem de inicialização do sistema ainda pode mostrar pending para esse servidor quando for emitido. Para confirmar se um servidor precisa de credenciais, consulte mcpServerStatus() no SDK TypeScript ou get_mcp_status() em Python.
Para fornecer credenciais, complete o fluxo OAuth em sua própria aplicação e passe o token de acesso resultante nos headers do servidor:
Exemplos
Listar problemas de um repositório
Este exemplo se conecta ao servidor MCP do GitHub remoto para listar problemas recentes. O exemplo inclui registro de depuração para verificar a conexão MCP e as chamadas de ferramentas. Antes de executar, crie um token de acesso pessoal do GitHub com acesso de leitura aos repositórios que você deseja consultar e defina-o como uma variável de ambiente:MCP servers:, um status de connected para github confirma que o token funciona. Se Claude Code tiver uma lista de ferramentas em cache para o servidor, o status pode ler pending em vez disso e o servidor se conecta na sua primeira chamada de ferramenta. Se o status for failed ou needs-auth, consulte Tratamento de erros antes de confiar no resultado, pois Claude pode voltar para ferramentas integradas quando o servidor não está disponível.
Consultar um banco de dados
Este exemplo usa DBHub para consultar um banco de dados Postgres. O agente descobre automaticamente o esquema do banco de dados, escreve a consulta SQL e retorna os resultados. A ferramentaexecute_sql do DBHub executa qualquer SQL que o agente emita, incluindo gravações, a menos que você o restrinja. Definir readonly = true no arquivo de configuração do DBHub faz com que o DBHub rejeite instruções INSERT, UPDATE, DELETE e DDL, para que o exemplo não possa modificar seus dados mesmo se o agente emitir uma gravação. O DBHub resolve ${DATABASE_URL} do ambiente do processo quando carrega a configuração, portanto a string de conexão fica fora do arquivo. Crie este dbhub.toml ao lado do seu script:
dbhub.toml
DATABASE_URL para sua string de conexão. Substitua os valores de espaço reservado pelos detalhes do seu banco de dados:
Tratamento de erros
Os servidores MCP podem falhar ao conectar por várias razões: o processo do servidor pode não estar instalado, as credenciais podem ser inválidas ou um servidor remoto pode estar inacessível. Claude Code emite uma mensagemsystem com subtipo init no início de cada consulta. Esta mensagem inclui o status de conexão para cada servidor MCP. O campo status pode ser "pending", "connected", "failed", "needs-auth" ou "disabled". Claude Code emite a mensagem init após o tempo de espera de conexão da primeira volta para servidores passados em options.mcpServers, portanto, tal servidor que se conectou dentro do tempo de espera mostra "connected".
Na mensagem init, não trate "pending" como uma falha por si só. Pode significar qualquer um destes:
- O servidor ainda não se conectou. Veja quanto tempo Claude Code espera por ele antes da primeira volta
- A lista de ferramentas do servidor foi servida do cache, com uma conexão feita no primeiro uso
- O prazo de conexão expirou. Tal servidor relata
"pending"ou"failed"dependendo do tempo
"failed" ou "needs-auth" para detectar servidores que não serão utilizáveis:
"connected". Quando a conexão com ele cai no meio da sessão, Claude Code move o servidor de volta para "pending" enquanto reconecta. Uma chamada posterior a mcpServerStatus() em TypeScript, ou ClaudeSDKClient.get_mcp_status() em Python, pode então relatar "pending" para um servidor que você viu conectado anteriormente, sem nenhuma mudança de configuração do seu lado.
Após cinco tentativas de reconexão falharem, o servidor relata "failed" ou "needs-auth" quando precisa ser autorizado novamente. Para tentar novamente manualmente, chame reconnectMcpServer() em TypeScript ou ClaudeSDKClient.reconnect_mcp_server() em Python.
Troubleshooting
Server shows “failed” status
Verifique a mensageminit para ver quais servidores falharam ao conectar:
"pending" não significa que o servidor falhou. Consulte Tratamento de erros para os casos que ele cobre na inicialização. Para obter status atualizados posteriormente na sessão, chame o método mcpServerStatus() da consulta no SDK TypeScript, ou ClaudeSDKClient.get_mcp_status() em Python.
Causas comuns:
- Variáveis de ambiente ausentes: Certifique-se de que tokens e credenciais necessários estejam definidos. Para servidores stdio, verifique se o campo
envcorresponde ao que o servidor espera. - Servidor não instalado: Para comandos
npx, verifique se o pacote existe e se Node.js está no seu PATH. - String de conexão inválida: Para servidores de banco de dados, verifique o formato da string de conexão e se o banco de dados está acessível.
- Problemas de rede: Para servidores HTTP/SSE remotos, verifique se a URL está acessível e se qualquer firewall permite a conexão.
Tools not being called
Se Claude vir ferramentas mas não as usar, verifique se você concedeu permissão comallowedTools:
Connection timeouts
As conexões do servidor MCP expiram após 30 segundos por padrão. Para alterar quanto tempo uma chamada de ferramenta em execução pode levar, definaMCP_TOOL_TIMEOUT. Se seu servidor levar mais tempo para iniciar, a conexão falhará. Aumente o limite de conexão com a variável de ambiente MCP_TIMEOUT, em milissegundos. Para servidores que precisam de mais tempo de inicialização, também considere:
- Usar um servidor mais leve, se disponível
- Pré-aquecer o servidor antes de iniciar seu agente
- Verificar os logs do servidor para causas de inicialização lenta
timeout para createSdkMcpServer().
Tool output exceeds maximum allowed tokens
O SDK aplica o mesmo limite de saída MCP que Claude Code. Quando um resultado de ferramenta sem conteúdo de imagem é maior que 25.000 tokens, Claude Code salva a saída em um arquivo e substitui o resultado da ferramenta por uma mensagem de erro que nomeia o caminho do arquivo, para que o agente possa ler a saída novamente em porções. Aumente o limite com a variável de ambienteMAX_MCP_OUTPUT_TOKENS. Consulte Limites de saída MCP e avisos para o comportamento completo, incluindo como um servidor pode declarar um limite por ferramenta mais alto com a anotação anthropic/maxResultSizeChars.
Recursos relacionados
- Guia de ferramentas personalizadas: Crie seu próprio servidor MCP que é executado em processo com sua aplicação SDK
- Permissões: Controle quais ferramentas MCP seu agente pode usar com
allowedToolsedisallowedTools - Referência do SDK TypeScript: Referência completa da API incluindo opções de configuração do MCP
- Referência do SDK Python: Referência completa da API incluindo opções de configuração do MCP
- Diretório de servidores MCP: Navegue pelos servidores MCP disponíveis para bancos de dados, APIs e muito mais