Claude Code MCP add: como adicionar um servidor MCP pelo terminal

comando claude mcp add sendo executado no terminal para adicionar um servidor MCP no Claude Code
Resposta rápida

Claude Code MCP add: o comando claude mcp add registra um servidor MCP na configuração do Claude Code. A forma é claude mcp add --transport <stdio|http|sse> <nome> <url-ou-comando>, com todas as opções (--transport, --env, --scope, --header) ANTES do nome do servidor. Em servidor stdio, o separador -- divide as opções do Claude Code do comando que sobe o servidor. Credencial entra por --env (stdio) ou --header (http), e a config é salva sem validação do token. Depois de adicionar, confirme com claude mcp list e com /mcp dentro da sessão

Fala aí, beleza? MCP virou assunto obrigatório na timeline: todo mundo comentando, todo mundo mostrando print de servidor conectado, e aí tu abre o terminal e não faz ideia de qual linha digitar

O comando que resolve isso é o claude mcp add

Ele pega o transporte, o nome e o endereço (ou o comando) do servidor e grava esses dados num arquivo de configuração do Claude Code (qual arquivo recebe a entrada depende do escopo que tu escolher, e isso a gente destrincha lá embaixo)

Neste post tu vai ver a forma exata do comando, o que precisa ter em mãos ANTES de rodar, os errinhos de ordem que derrubam a linha e como confirmar que o servidor ficou mesmo disponível na sessão 🙂

Se a tua dúvida ainda está um passo atrás, tipo quando um servidor MCP vale a pena, tem post separado só sobre isso

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

O que você precisa ter em mãos antes de rodar o comando

Antes de sair digitando, junta essas quatro coisas numa nota:

  • O transporte: stdio, http ou sse. Grosso modo, stdio é servidor que roda como processo na tua máquina e http é servidor remoto que já está de pé em algum lugar
  • O destino: a URL do servidor remoto, no caso de http, OU o comando que sobe o servidor local com todos os argumentos dele, no caso de stdio
  • O nome: um apelido curto pro servidor, que é como tu vai chamar ele depois no claude mcp get e no claude mcp remove
  • As credenciais: variável de ambiente via –env quando é stdio, header de autorização via –header quando é http

E se liga nesse detalhe, porque ele economiza uns bons minutos de cabeça quente: o Claude Code salva a configuração SEM checar o token

Ou seja, tu digita a chave errada, o comando termina numa boa, e o problema só aparece bem depois como falha de conexão com 401

Tome cuidado! Copia e cola a credencial, não digita na mão

Como adicionar um servidor MCP no Claude Code passo a passo

Bora ver na prática?

1. Monte a linha base com o transporte

A forma do comando é sempre essa:

claude mcp add --transport <stdio|http|sse> <nome> <url-ou-comando>

A regra de ouro aqui: todas as opções (–transport, –env, –scope, –header) precisam vir ANTES do nome do servidor

Pensa na linha como três blocos em ordem fixa: opções, nome, destino

O erro comum deste passo: escrever o nome primeiro e jogar a opção lá pro fim, do jeito que a gente escreveria numa frase normal

2. Adicione um servidor remoto por http

Esse é o registro mais tranquilo que existe, porque o servidor já está no ar e tu só aponta pra ele

claude mcp add --transport http claude-code-docs https://code.claude.com/docs/mcp

Lê da esquerda pra direita: opção de transporte, nome (claude-code-docs), URL

O erro comum deste passo: inverter e colocar o nome antes do –transport, o que quebra a ordem que a CLI espera

3. Adicione um servidor stdio usando o separador —

Aqui entra a parte que mais confunde quem nunca rodou o comando

O separador — (dois hífens sozinhos) separa as opções do próprio Claude Code do comando e dos argumentos que sobem o servidor

Tudo que vem depois dele é passado ao servidor sem alteração nenhuma

claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable -- npx -y airtable-mcp-server

E quando o teu servidor tem flags próprias, fica assim:

claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080

Esse segundo exemplo roda python server.py –port 8080 com KEY=value no ambiente

"E se eu esquecer o separador?" Boa pergunta

Sem ele, o Claude Code tentaria interpretar as flags do servidor (o –port, por exemplo) como opções DELE mesmo

O erro comum deste passo: exatamente esse, esquecer o — e ver o Claude Code comendo as flags que eram do servidor

4. Passe as credenciais do jeito certo

Em stdio, a credencial vai por variável de ambiente com –env, que aceita vários pares KEY=value

Em http, a credencial de token estático vai por header, e o header é opção, então entra antes do nome, igual todo o resto:

claude mcp add --transport http --header "Authorization: Bearer SEU_TOKEN" <nome> <url>

A flag –header tem forma curta -H e é repetível, então dá pra mandar vários headers na mesma linha

E tem um truque MUITO útil: os headers aceitam expansão de variável de ambiente com a sintaxe ${VAR} ou ${VAR:-default}

Assim tu versiona a configuração sem versionar o segredo:

claude mcp add --transport http --header "Authorization: Bearer ${MCP_TOKEN}" meuserver https://exemplo.com/mcp

O erro comum deste passo: colocar o nome do servidor logo depois do –env

Como o –env aceita vários pares, a CLI lê o nome como se fosse mais um KEY=value e rejeita

A saída é simples: coloca pelo menos outra opção entre o –env e o nome, igual nos exemplos oficiais, onde o –transport fica no meio 😀

5. Rode a linha e confira que salvou

Comando digitado, enter dado, sem erro na tela? Beleza

Agora não confia só no silêncio do terminal, vai conferir:

claude mcp list

O erro comum deste passo: achar que "não deu erro" é o mesmo que "está conectado"

Lembra que a config é salva sem validação, então a checagem de verdade é a próxima seção

Como confirmar que o servidor ficou disponível na sessão

1. Leia o status no claude mcp list

O claude mcp list mostra o status de saúde do lado de cada servidor:

Status O que significa
✔ Connected o servidor respondeu e está disponível
! Needs authentication falta concluir o login nesse servidor
✘ Failed to connect a conexão falhou

Quando o status é Failed to connect, o próprio claude mcp list acrescenta o detalhe da falha na mesma linha, com o status HTTP ou código de erro e o texto de erro devolvido pelo servidor

Esse detalhe é ouro, é ele que diz se o problema é credencial ou endereço

2. Use o /mcp dentro da sessão

Com o Claude Code aberto, roda:

/mcp

O /mcp checa e gerencia os servidores já adicionados e mostra o status deles ali mesmo, sem tu sair pra outro terminal

3. Abra a configuração de um servidor específico

Quando algo está estranho em um servidor só, vai direto nele:

claude mcp get <nome>

Ele mostra os detalhes daquele servidor, incluindo a configuração

É o jeito rápido de descobrir que aquele header foi salvo com um espaço a mais, por exemplo

Erros comuns ao adicionar um servidor MCP e como resolver

Sintoma: ! Needs authentication

Causa: o Claude Code marca um servidor remoto como precisando de autenticação quando o servidor responde 401 Unauthorized ou 403 Forbidden

Solução: concluir o login, ou em sessão interativa pelo /mcp, ou pela CLI:

claude mcp login <nome>

Sintoma: ✘ Failed to connect com 401 no detalhe

Aqui vale a observação, porque o 401 aparece nos dois casos e isso confunde: o que muda é o status que o claude mcp list mostra na frente, e é ele que decide a tua próxima ação

Causa: um servidor com credencial errada aparece como falho, e o detalhe da linha traz o status HTTP devolvido, por exemplo 401. Como a config foi salva sem validação do token, o erro de digitação só apareceu agora

Solução: se o status é Needs authentication, o caminho é login. Se é Failed to connect com 401 no detalhe, o caminho é outro: revisa o header que tu salvou e recria o registro com a credencial certa

Sintoma: opção rejeitada ou nome lido errado

Causa: quebra de ordem. Opção depois do nome, ou nome grudado logo após o –env (e aí a CLI lê o nome como mais um par KEY=value)

Solução: remonta a linha na ordem opções, nome, destino, e garante outra opção entre o –env e o nome

Sintoma: as flags do servidor somem ou viram erro do Claude Code

Causa: falta do separador — no registro de servidor stdio

Solução: coloca o — antes do comando do servidor, assim tudo depois dele passa intacto pro processo

Quando nada resolve

Limpa e refaz, é mais rápido que caçar vírgula:

claude mcp remove <nome>

E se a suspeita for de algo mais amplo que aquele servidor, roda o /doctor dentro do Claude Code

Ele faz uma checagem automática da instalação, das configurações, das extensões e do uso de contexto

Como prevenir: monta sempre a linha na ordem opções, nome, destino, e usa ${VAR} pra não digitar segredo na mão

Escopo local, project ou user: onde registrar cada servidor

Lembra que lá no começo eu falei que o arquivo depende do escopo? Então, é aqui que isso se resolve

Sem tu pedir nada, o claude mcp add registra o servidor no escopo local, que é privado a você e ativo só no projeto atual

Mas existem três escopos, e a flag –scope é quem escolhe:

Escopo Alcance Onde mora
–scope local padrão, só você, no projeto atual ~/.claude.json
–scope project compartilhado com o time .mcp.json
–scope user vale para todos os seus projetos ~/.claude.json

Repara que não é um arquivo só: escopo project vai pro .mcp.json do repositório, e os escopos user e local ficam no ~/.claude.json

E como a flag é opção, ela também entra antes do nome do servidor, junto com o –transport

Na prática o raciocínio é esse:

  • local pra experimento, servidor que tu está só testando naquele repo
  • project pro servidor que o time inteiro precisa, porque o .mcp.json vai junto com o repositório
  • user pro teu daily driver, aquele servidor que tu quer em qualquer projeto sem registrar de novo

Alternativas ao claude mcp add: JSON e edição manual

Nem sempre a linha única é o melhor caminho, e tem saída oficial pra isso

Configuração inteira em JSON

Quando o servidor pede vários headers, a linha começa a virar um monstrinho

Aí compensa usar o comando que aceita a config em JSON:

claude mcp add-json <nome> '{"type":"http","url":"...","headers":{...}}'

Editando o .mcp.json na mão

Editar o .mcp.json diretamente e escrever a entrada JSON à mão é alternativa suportada

É o caminho natural quando tu quer versionar a configuração com o time e revisar em pull request, igual qualquer outro arquivo do repo

Autenticação além do token estático

A especificação MCP suporta OAuth 2.1 para autorização, então nem todo servidor vai depender de um header colado na mão

E pra esquemas fora do OAuth, tipo Kerberos ou tokens de vida curta, existe o headersHelper: o Claude Code roda o comando que tu indicar e mescla a saída nos headers da conexão

Os detalhes desses modos estão na documentação de MCP do Claude Code

Conclusão

O fluxo inteiro cabe em três movimentos, beleza?

Monta a linha na ordem certa (opções, nome, destino, e o separador — quando for stdio), roda o claude mcp add, e confere com claude mcp list e com /mcp dentro da sessão

Se eu fosse sugerir um próximo passo, seria esse: começa pelo servidor remoto de documentação, aquele exemplo http oficial, porque é o registro mais simples que existe e te dá a leitura de status sem credencial no meio

Depois que o ✔ Connected aparecer, aí sim parte pro stdio com credencial, que é onde moram os errinhos de ordem

E se tu ainda está decidindo o formato da tua stack antes de plugar tudo, o papo sobre harness de plugins e agente de terminal ajuda a escolher onde investir esse tempo

até o próximo post! 😀

Perguntas frequentes

Qual a diferença entre –scope local, project e user no claude mcp add?

Sem a flag –scope, o claude mcp add registra o servidor no escopo local, que é privado a você e vale só no projeto atual. O –scope project grava no .mcp.json e é compartilhado com o time, enquanto o –scope user vale para todos os seus projetos e fica salvo em ~/.claude.json junto com o escopo local.

Dá pra editar o .mcp.json direto em vez de usar o claude mcp add?

Dá sim, editar o .mcp.json manualmente é uma alternativa suportada ao comando. Nesse caso tu escreve a entrada JSON do servidor à mão, em vez de rodar o claude mcp add pelo terminal.

O que é o claude mcp add-json e quando usar no lugar do claude mcp add?

O claude mcp add-json adiciona um servidor passando a configuração inteira em formato JSON, tipo claude mcp add-json <nome> ‘{"type":"http","url":"…","headers":{…}}’. É uma via alternativa ao claude mcp add para quem já tem a configuração montada em JSON.

Como resolver quando o servidor aparece como Needs authentication no claude mcp list?

Esse status aparece quando o servidor remoto responde 401 Unauthorized ou 403 Forbidden. Pra resolver, tu completa o login em sessão interativa pelo /mcp ou pelo comando de CLI claude mcp login <nome>.

Como remover ou revisar um servidor MCP depois de adicionado com claude mcp add?

O claude mcp get <nome> mostra os detalhes e a configuração de um servidor específico já registrado. Se precisar tirar ele de vez, o claude mcp remove <nome> remove o servidor da configuração do Claude Code.

O Claude Code suporta OAuth para servidores MCP remotos adicionados com claude mcp add?

Sim, a especificação MCP suporta OAuth 2.1 para autorização. Para esquemas fora do OAuth, como Kerberos ou tokens de vida curta, existe o headersHelper, que roda um comando e mescla a saída nos headers no momento da conexão.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares