MCP local ou MCP remoto no Claude Code: qual tipo escolher para o seu caso?

MCP local ou remoto no Claude Code é, na prática, uma escolha entre dois transportes: stdio, em que o Claude Code sobe o servidor como processo na sua máquina e conversa por stdin/stdout, e HTTP (streamable HTTP), o transporte recomendado para servidores remotos e serviços em nuvem (o SSE é o remoto antigo, deprecado em favor do HTTP). Ferramenta que precisa mexer em arquivos locais e scripts próprios pede stdio. SaaS com servidor oficial pede HTTP, que ainda ganha OAuth nativo do Claude Code. E integração que o time inteiro usa pede escopo project, com .mcp.json commitado no repositório 🙂
O mesmo servidor MCP se comporta de um jeito quando roda dentro da sua máquina e de outro quando você só fala com ele por rede
Fala aí, beleza? O Claude Code aceita os dois modelos, e essa escolha não é detalhe de configuração: ela decide se a ferramenta enxerga os arquivos do seu projeto, se você passa a depender da infra de outra empresa pra trabalhar e se dá pra padronizar a mesma integração pro time inteiro
A parte boa é que a decisão fica simples quando você entende os transportes que existem por baixo
Bora destrinchar isso?
Os três transportes de MCP no Claude Code: stdio, HTTP e SSE
A documentação de MCP do Claude Code lista três transportes: stdio, HTTP e SSE
Parece coisa de três opções equivalentes, mas não é. Na prática são dois caminhos vivos e um resquício
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
stdio: o servidor vira um processo na sua máquina
No transporte stdio, o Claude Code sobe o servidor MCP como subprocesso na sua própria máquina e conversa com ele por entrada e saída padrão (stdin/stdout)
Se você conhece como um script roda no terminal recebendo dado pela entrada e devolvendo pela saída, é exatamente isso, só que quem chama é o Claude Code
Essa é a escolha indicada pra ferramenta que precisa de acesso direto ao sistema e aos arquivos locais, e pros scripts que você mesmo escreveu
HTTP: o recomendado pra servidor remoto
O HTTP (streamable HTTP) é o transporte recomendado no Claude Code para servidores remotos e serviços em nuvem
Aqui não tem processo subindo na sua máquina: você aponta pra uma URL e o servidor vive do lado de lá
SSE: o remoto antigo, deprecado
O SSE é o transporte remoto legado, deprecado em favor do HTTP
E não é só decisão do produto: na própria especificação do MCP o HTTP+SSE legado está oficialmente deprecado e foi substituído pelo Streamable HTTP, que incorpora SSE apenas como mecanismo OPCIONAL de streaming. O stdio segue firme como transporte das integrações locais iniciadas como processo
Então, traduzindo a pergunta do título: MCP local ou remoto, no dia a dia, é stdio x HTTP
O SSE só entra se o fornecedor ainda não te deu outra opção
MCP local x MCP remoto: comparação ponto a ponto
| Critério | MCP local (stdio) | MCP remoto (HTTP) |
|---|---|---|
| Como o servidor é iniciado | O Claude Code sobe o servidor como subprocesso na sua máquina | Você aponta pra uma URL, o servidor já está no ar do lado do fornecedor |
| Canal de comunicação | Entrada e saída padrão (stdin/stdout) | Streamable HTTP, o transporte recomendado pra nuvem |
| Acesso a arquivos e sistema local | É a escolha indicada quando a ferramenta precisa de acesso direto ao sistema e a arquivos locais | Não é o caso de uso que a doc indica pra isso |
| Scripts próprios | Encaixa direto: você aponta o comando e os argumentos | Exigiria expor esse script como serviço |
| Autenticação | Você passa o que o processo precisa na configuração, incluindo o campo env | OAuth nativo do Claude Code, dá pra conectar conta existente sem gerenciar chave de API |
| Updates, escala e disponibilidade | Ficam com você | Ficam com o fornecedor do servidor remoto |
| Dependência de terceiros | Menor: roda na sua máquina | Maior: depende do serviço do fornecedor estar no ar |
| Padronizar pro time | Dá, via escopo project com .mcp.json commitado | Dá, via escopo project com .mcp.json commitado |
| Status do transporte | Ativo | Ativo (o SSE, remoto antigo, está deprecado) |
Repare numa coisa: a linha do time é igual nos dois
Escopo é assunto separado de transporte, e misturar os dois é o que mais confunde quem está começando
Como adicionar cada tipo de servidor MCP no Claude Code
Comandos curtos, e em cada passo o erro que costuma pegar 😀
- Adicione um servidor local (stdio) com o comando abaixo, lembrando do separador de dois hifens entre o nome e o comando que será executado (com os argumentos dele, se tiver)
claude mcp add <nome> -- <comando>
O erro comum deste passo: esquecer o separador. Ele é o que separa o nome do servidor do comando real, sem ele o Claude Code não tem como saber onde acaba uma coisa e começa a outra
- Adicione um servidor remoto por HTTP, que é o transporte recomendado pra serviços em nuvem
claude mcp add --transport http <nome> <url>
O exemplo da própria doc usa o Sentry:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
O erro comum deste passo: escolher SSE por hábito (ou porque foi o que apareceu num tutorial antigo) quando o fornecedor já oferece endpoint HTTP
- Use SSE só como legado, quando não existir alternativa
claude mcp add --transport sse <nome> <url>
O erro comum deste passo: tratar SSE como opção equivalente. Ele está deprecado em favor do HTTP, então é plano B, não escolha de gosto
- Conclua o OAuth do servidor remoto, que é onde muita gente trava achando que o add já autenticou
Dentro da sessão interativa você roda:
/mcp
Ou, direto do terminal:
claude mcp login <nome>
O erro comum deste passo: achar que autenticar uma vez resolve pra sempre em qualquer lugar. O Claude Code guarda o login OAuth POR endpoint, então autenticar num projeto não vale automaticamente pra outro projeto que carrega uma definição diferente do servidor
- Limpe as credenciais salvas quando trocar de conta ou quiser refazer o fluxo do zero
claude mcp logout <nome>
O erro comum deste passo: ficar tentando reautenticar por cima de uma credencial antiga em vez de sair primeiro
Quando o time inteiro precisa da mesma integração: escopo local, project e user
O Claude Code organiza servidores MCP em três escopos: local, project e user
E cada um responde a um cenário bem diferente
local: o padrão, só pra você
Quando você roda claude mcp add sem flag de escopo, cai no escopo local
Ele é privado e restrito ao projeto atual
É o lugar certo pra testar um servidor novo sem empurrar nada pra ninguém
project: o que o time compartilha
Com a flag de escopo project, a configuração é gravada em .mcp.json na raiz do repositório
E esse arquivo pode ser commitado, que é justamente como a integração vira padrão do time em vez de conhecimento tribal de quem configurou primeiro
Aqui entra um detalhe que salva a sua pele: o .mcp.json aceita expansão de variáveis de ambiente com a sintaxe ${VAR} e ${VAR:-default} nos campos command, args, env, url e headers
Ou seja, dá pra commitar a estrutura da configuração sem commitar a credencial junto, cada pessoa preenche a variável na máquina dela
Tome cuidado: por segurança, o Claude Code pede aprovação em sessão interativa antes de usar servidores de escopo project vindos do .mcp.json
Então o colega que clonou o repo não vai ver o servidor magicamente ativo, ele precisa aprovar
user: registrado uma vez, vale pra todos os seus projetos
Com a flag de escopo user, o servidor fica registrado uma vez pra todos os projetos do usuário
É o escopo pra aquela integração que você usa em TUDO, independente do repositório em que está trabalhando
Problemas comuns em cada tipo (e como prevenir)
A saída da ferramenta veio cortada
Sintoma: aparece um aviso quando a saída de uma ferramenta MCP passa de 10.000 tokens, e o resultado é limitado a 25.000 tokens por padrão
Causa: a ferramenta está devolvendo mais coisa do que o limite padrão permite
Solução: dá pra elevar o teto pela variável de ambiente MAX_MCP_OUTPUT_TOKENS
MAX_MCP_OUTPUT_TOKENS=50000
Detalhe importante: o limiar do AVISO é fixo, então mesmo elevando o limite você vai continuar vendo o aviso a partir dos 10.000 tokens
Prevenção: antes de sair aumentando o teto, pense se a ferramenta precisa mesmo cuspir tudo aquilo. Saída gigante entope o contexto, e isso conversa direto com o assunto de gastar menos com o Claude Code, onde contexto desperdiçado é dinheiro desperdiçado
O servidor do .mcp.json não aparece
Sintoma: você clonou o projeto, o .mcp.json está lá, e o servidor simplesmente não está disponível
Causa: servidores de escopo project vindos do .mcp.json passam por um prompt de aprovação em sessão interativa
Solução: aprove na sessão. Se você recusou antes e quer refazer a escolha:
claude mcp reset-project-choices
Prevenção: avise o time que existe esse passo de aprovação. Sem isso vira aquele chamado clássico de "aqui não funciona" 🙂
O OAuth está pedindo login de novo
Sintoma: você autenticou o servidor remoto ontem, abre outro projeto e ele pede autenticação de novo
Causa: as credenciais OAuth são armazenadas por endpoint, então uma definição diferente do servidor em outro projeto não herda o login
Solução: rode /mcp na sessão, ou claude mcp login com o nome do servidor, e conclua o fluxo ali
Prevenção: se o mesmo servidor remoto te acompanha em vários repositórios, considere registrar no escopo user em vez de repetir a configuração projeto a projeto
Veredito: qual tipo faz mais sentido no seu caso
Sem enrolação, por cenário:
- Ferramenta que lê e escreve no seu repositório, ou script próprio que você mantém: stdio. É o transporte indicado pra acesso direto ao sistema e a arquivos locais
- SaaS de terceiro que já publica um servidor oficial: HTTP. Você aponta a URL, usa o OAuth nativo do Claude Code e não fica gerenciando chave de API na mão
- Integração que TODO MUNDO do time precisa: escopo project com .mcp.json commitado, independente do transporte ser stdio ou HTTP
- Fornecedor que só oferece SSE: vai de SSE ciente de que é o caminho legado, e migre quando ele publicar endpoint HTTP
O trade-off central é esse: de um lado controle e acesso local, com a manutenção sendo sua; do outro menos manutenção, porque updates, escala e disponibilidade ficam com o fornecedor, em troca de depender dele
Não existe resposta única, existe o que o seu caso pede
E, sinceramente, antes de montar integração pra tudo vale a leitura sobre quando não usar o Claude Code, porque nem todo problema vira MCP
Próximo passo
Resumindo em uma frase: stdio quando a ferramenta precisa da sua máquina, HTTP quando ela vive na nuvem, e escopo project quando a integração precisa ser de todo mundo
A ação imediata é a mais barata possível: adicione o servidor no escopo local (que é o padrão, lembra?), valide com /mcp dentro da sessão e só depois promova pra project ou user, quando a integração provar que vale a pena
Testar pequeno primeiro evita aquele .mcp.json commitado que ninguém consegue fazer funcionar…
até o próximo post! 😀
Perguntas frequentes
Dá para usar MCP local e MCP remoto ao mesmo tempo no mesmo projeto?
Sim, o Claude Code não obriga escolher um transporte único para o projeto inteiro. Você pode ter um servidor stdio local para acessar arquivos e sistema, e no mesmo projeto um servidor HTTP remoto apontando pra um serviço em nuvem. A escolha entre MCP local ou remoto acontece servidor por servidor, não no projeto como um todo.
O que acontece quando a saída de uma ferramenta MCP fica grande demais?
O Claude Code avisa quando a saída de uma ferramenta MCP passa de 10.000 tokens e, por padrão, limita o total a 25.000 tokens, valendo tanto pra servidor local quanto remoto. Se precisar de mais espaço, dá pra elevar esse teto com a variável de ambiente MAX_MCP_OUTPUT_TOKENS, como MAX_MCP_OUTPUT_TOKENS=50000. O limiar do aviso em 10.000 tokens é fixo e não muda.
Como funciona a expansão de variáveis de ambiente no .mcp.json?
O .mcp.json aceita a sintaxe ${VAR} e ${VAR:-default} nos campos command, args, env, url e headers. Isso permite commitar a configuração do servidor MCP no repositório sem gravar segredo nenhum: cada pessoa do time resolve a variável na própria máquina.
Preciso aprovar toda vez que abro um projeto com .mcp.json vindo do time?
Por segurança, o Claude Code pede aprovação em sessão interativa antes de usar servidores de escopo project vindos de .mcp.json. Ou seja, quem clona o repositório não recebe o servidor ativo de cara, precisa aprovar na sessão. E essa escolha pode ser resetada depois, como mostrei na seção de problemas comuns do post.
Qual a diferença entre escopo project e escopo user no Claude Code?
O escopo project grava a configuração em .mcp.json na raiz do repositório, feito pra ser commitado e compartilhado com quem trabalha naquele projeto. Já o escopo user registra o servidor uma vez só e ele passa a valer pra todos os seus projetos, sem repetir a configuração em cada repositório.
Se o SSE ainda funciona, por que não usar ele no lugar do HTTP?
Porque o SSE é o transporte remoto legado e está deprecado em favor do HTTP no Claude Code. Na especificação do MCP a história é a mesma: o HTTP+SSE legado foi substituído pelo Streamable HTTP, que usa SSE só como mecanismo opcional de streaming. Deixe o SSE como plano B, pra quando o fornecedor ainda não publicou um endpoint HTTP.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Supabase MCP no Claude Code: como conectar o agente ao schema do seu banco
Supabase MCP no Claude Code conecta o agente ao schema real do seu banco: veja como instalar, autenticar via OAuth e por que usar só em desenvolvimento.
O que são servidores MCP no Claude Code e quando eles valem a pena?
Servidores MCP no Claude Code conectam o agente a bancos, docs e ferramentas externas. Entenda como funcionam e quando realmente valem a pena usar.
Context7 MCP no Claude Code: como parar de receber código de uma versão antiga da biblioteca
Context7 MCP no Claude Code busca a documentação atual da biblioteca e evita código desatualizado. Veja como instalar, os comandos e os planos Free e Pro.
