Como avaliar um servidor MCP de terceiros antes de dar suas credenciais a ele?

checklist de segurança para avaliar servidor MCP de terceiros antes de dar credenciais
Resposta rápida

Avaliar um servidor MCP de terceiros é decidir, antes de tudo, quanto acesso ele ganha no pior cenário. A Anthropic não opera nem endossa servidores MCP remotos e revisa a listagem do diretório sem fazer auditoria de segurança, então a revisão é sua: confirme a procedência no MCP Registry, olhe o histórico de versões (o pacote postmark-mcp só virou backdoor na 1.0.16, depois de 15 versões limpas), mapeie as ferramentas de escrita expostas, emita a credencial com o menor escopo possível e feche o cerco no Claude Code com escopo consciente e regras de allow e deny em /permissions

Instalar um servidor MCP de terceiros é entregar a um processo que você não escreveu exatamente as mesmas chaves que você usa

Fala aí, beleza? Integração da comunidade é o que faz o agente sair do "chat esperto" e virar algo que mexe no seu banco, no seu repo e na sua conta de verdade

O problema é que ninguém audita esse código por você

Não existe fada da segurança passando por trás de cada pacote que aparece no seu feed, então a conta cai no seu colo

Aqui vai um checklist prático, em duas partes: o que olhar ANTES de conectar e o que dá pra limitar depois, tanto do lado do serviço quanto do lado do cliente…

Por que "parece oficial" não é critério de confiança em MCP

Começa pela parte que muita gente assume errado: a própria documentação da Anthropic diz que servidores MCP remotos não são de propriedade, operados nem endossados por ela

A orientação é só conectar servidores em que você confia, revisando as práticas de segurança e os termos de cada um antes

"Mas ele tá no diretório de conectores!"

Estar listado significa que a Anthropic revisou o servidor contra critérios de listagem

Não significa auditoria de segurança, e ela também não gerencia esses servidores

São coisas MUITO diferentes, e a distância entre uma e outra é justamente onde mora o risco

O caso postmark-mcp: passado limpo e uma linha a mais

Se liga nesse caso, porque ele derruba o argumento do "olhei o código quando instalei"

O pacote npm malicioso postmark-mcp se passava pela biblioteca oficial da Postmark: era uma réplica quase exata com uma linha a mais, que colocava em cópia oculta todos os e-mails enviados para um servidor do atacante

O backdoor apareceu só na versão 1.0.16, depois de uma sequência de versões publicadas sem código malicioso

O pacote foi baixado 1.643 vezes antes de ser removido do npm

Ou seja: passado limpo não é garantia de presente limpo, é só histórico

Formação Vibe Coding
Formação Recomendada

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

GhostSplice: a instrução que vem picotada

Tem também o vetor que não depende de você baixar coisa errada

O grupo ASSET Research divulgou o GhostSplice, um ataque em que um servidor MCP malicioso fragmenta a instrução entre canais, por exemplo parte na descrição da ferramenta e parte no resultado dela

Cada pedaço é inofensivo sozinho

Juntos, levam agentes de código a exfiltrar chaves SSH, segredos e código-fonte

Repara no detalhe cruel: a descrição da ferramenta entra no contexto do modelo antes de você chamar qualquer coisa

Quem já bateu o martelo sobre isso

Não é papo de fórum, não

O Artificial Intelligence Security Center da NSA publicou a Cybersecurity Information Sheet "Model Context Protocol (MCP): Security Design Considerations for AI-Driven Automation", em 20 de maio de 2026

A orientação da CSI é direta: organizações não devem depender apenas da documentação do próprio MCP, precisam adotar salvaguardas adicionais, usar ferramentas bem mantidas de provedores confiáveis e aplicar procedimentos rigorosos de revisão às ferramentas MCP antes do deploy

O OWASP Gen AI Security Project também publicou a versão 1.0 do cheat sheet "A Practical Guide for Securely Using Third-Party MCP Servers", em 23 de outubro de 2025

Todo mundo aponta pro mesmo lugar: a revisão é responsabilidade de quem conecta 🙂

O que ter em mãos antes de avaliar o servidor

Antes de sair rodando comando, junta o material

Avaliar no escuro é como aceitar PR sem abrir o diff

  • A URL ou o pacote exato, e quem publica: nome coloquial ("o MCP do fulano") não serve, você precisa do identificador exato
  • A página do projeto no MCP Registry: é o registro oficial e comunitário de servidores MCP, com a instância de referência em registry.modelcontextprotocol.io
  • O entendimento do namespace: o registry usa nomes em formato DNS reverso com autenticação de namespace, onde io.github.usuario é verificado por OAuth do GitHub e com.exemplo por registro TXT de DNS do domínio
  • A lista de ferramentas expostas pelo servidor: é ela que define o alcance real, não o README
  • A documentação do serviço que emite a credencial: você precisa saber quais escopos e limites existem do lado dele antes de gerar token nenhum
  • Um projeto de teste separado: não o repositório principal, não a conta de produção

Esse último item é o mais ignorado e o mais barato de fazer

Como avaliar um servidor MCP de terceiros passo a passo

Esta parte é toda de avaliação, ainda sem instalar nada

  1. Confirme a procedência e o namespace verificado no MCP Registry

Compare o nome em DNS reverso com quem você acha que é o dono daquilo

Erro comum deste passo: confiar em nome parecido com o do provedor oficial

Foi exatamente assim que o postmark-mcp funcionou, imitando a lib oficial quase caractere por caractere

  1. Olhe o histórico de versões, sem presumir que passado limpo garante presente limpo

Um servidor com meses de commits normais continua podendo receber uma linha a mais amanhã

Erro comum deste passo: fixar a avaliação no dia da instalação e nunca mais revisar

A versão 1.0.16 do caso Postmark existe pra lembrar disso

  1. Mapeie o que o servidor precisa acessar e compare com o escopo mínimo que o serviço permite emitir

A pergunta certa não é "esse servidor é bom?", é "o que essa credencial abre se ele for hostil?"

Esse raciocínio de escopo mínimo é o mesmo que vale na hora de dar acesso às suas contas pra qualquer agente

Erro comum deste passo: gerar token de admin porque "é mais rápido pra funcionar"

  1. Liste as ferramentas de escrita expostas e pergunte se você precisa delas

Leitura vaza, escrita destrói: a diferença de estrago entre as duas é enorme

O servidor MCP oficial do GitHub é um bom exemplo de servidor que já resolve isso: ele tem modo somente leitura que desativa todas as ferramentas que não são de leitura, mesmo que elas tenham sido pedidas na configuração

O modo somente leitura é ativado pela variável de ambiente GITHUB_READ_ONLY no servidor local e pelo header X-MCP-Readonly no servidor remoto, e tem precedência sobre as outras configurações

E atenção ao default: sem configuração explícita, ele sobe com os toolsets padrão context, issues, pull_requests, repos e users

Erro comum deste passo: subir com a configuração padrão e achar que o padrão é o mínimo

  1. Cheque se o servidor busca conteúdo externo

A documentação de segurança do Claude Code recomenda escrever seus próprios servidores MCP ou usar servidores de provedores em que você confia, e alerta que servidores que buscam conteúdo externo expõem a risco de prompt injection

Issue de terceiro, página web, comentário de PR: tudo isso é texto que alguém escreveu pra ser lido pelo seu agente

Erro comum deste passo: tratar conteúdo buscado pela ferramenta como dado, quando o modelo pode tratar como instrução

  1. Verifique sinais de higiene de autorização contra a especificação atual

A revisão estável mais recente da especificação do Model Context Protocol é a 2026-07-28, que sucede a 2025-11-25

Nela, o token passthrough é explicitamente proibido, e servidores MCP precisam validar que os tokens foram emitidos especificamente para eles

O capítulo de security best practices também descreve o problema do confused deputy: servidores proxy que usam client ID estático para autenticação de terceiros, aceitam registro dinâmico de cliente e não exigem consentimento por cliente antes de encaminhar a autorização podem ser explorados

Erro comum deste passo: assumir que "tem OAuth" significa "tá seguro"

Como instalar o servidor MCP com o mínimo de acesso no Claude Code

Passou no checklist? Beleza, agora é contenção

A ideia aqui é: mesmo que o servidor vire vilão, o alcance dele é pequeno

  1. Escolha o escopo de forma consciente

Segundo a documentação de MCP do Claude Code, cada comando claude mcp add escreve no escopo local por padrão, a menos que você passe –scope project ou –scope user

Escopo Onde fica Alcance
local (padrão) configuração local do claude mcp add só o seu uso, sem tocar o repositório
–scope project .mcp.json na raiz do projeto pensado para compartilhamento com o time
–scope user ~/.claude.json disponível em todos os projetos da máquina

Erro comum deste passo: usar –scope user pra "não precisar configurar de novo" e liberar um servidor de terceiro em todo projeto da máquina

  1. Adicione por HTTP com a sintaxe certa
claude mcp add --transport http nome-do-servidor https://exemplo.com/mcp

Se for pro time, o comando muda de escopo:

claude mcp add --scope project --transport http nome-do-servidor https://exemplo.com/mcp

Erro comum deste passo: rodar o comando na pasta errada e espalhar o servidor num projeto que não era o alvo

  1. Entenda quando existe (e quando NÃO existe) o prompt de aprovação

Por segurança, o Claude Code pede aprovação em sessões interativas na primeira vez que vê um servidor de escopo project vindo do .mcp.json, pra que um repositório clonado não suba processos na sua máquina sem consentimento

Agora o ponto crítico, que é o que pega gente boa: em execuções não interativas, ou seja claude -p, sessões do Agent SDK e sessões na nuvem, o Claude Code carrega servidores de escopo project sem perguntar

Erro comum deste passo: confiar no prompt de aprovação como se ele existisse em toda execução, quando o pipeline automatizado nunca vai te perguntar nada

  1. Limpe decisões antigas quando o servidor mudar
claude mcp reset-project-choices

Esse comando limpa as decisões de aprovação anteriores para servidores definidos no .mcp.json do projeto

Erro comum deste passo: aprovar uma vez em janeiro e carregar essa aprovação por meses, mesmo depois de o servidor no arquivo ter sido trocado

  1. Escreva as regras em /permissions

Ferramentas MCP no Claude Code exigem permissão explícita: sem permissão, o Claude vê que as ferramentas existem, mas não consegue chamá-las

O padrão de nome é este:

mcp__<nome-do-servidor>__<nome-da-ferramenta>
mcp__github__list_issues
mcp__github__get_*
mcp__puppeteer__*
mcp__*

E o que significam esses símbolos?

Nas regras de allow, o glob só vale depois do prefixo literal mcp__<servidor>__, ou seja, o segmento do servidor não aceita glob

Então mcp__github__get_ pega só as ferramentas get_, enquanto mcp__puppeteer__ libera o servidor puppeteer inteiro

Nas regras de deny, o padrão precisa casar com o nome completo da ferramenta: "" pega todas as ferramentas e "mcp__" pega todas as ferramentas MCP de todos os servidores

Dá pra aprovar a ação uma vez ou escrever a própria regra em /permissions

Erro comum deste passo: liberar o servidor inteiro no allow por preguiça de listar as leituras que você realmente usa

  1. Audite e desfaça
claude mcp list
claude mcp remove nome-do-servidor

O claude mcp list mostra o status de todos os servidores MCP conectados, e o claude mcp remove remove um servidor pelo nome escolhido no cadastro

Dentro da sessão, o comando /mcp serve pra checar e gerenciar servidores já adicionados

Erro comum deste passo: deixar servidor de teste conectado pra sempre, porque desinstalar dá menos dopamina que instalar haha

Como aplicar o checklist conforme o seu cenário

O checklist é o mesmo, o aperto muda

Dev solo testando uma integração da comunidade:

Deixa no escopo local mesmo, que é o padrão do claude mcp add

Deny amplo com mcp__* e allow só das leituras que você precisa naquele momento

Se o serviço permitir credencial restrita, usa: no caso do GitHub, o modo somente leitura já resolve boa parte, porque tem precedência sobre as outras configurações

Vale considerar também se você precisa mesmo daquele servidor avulso ou se dá pra viver com os MCPs já embutidos no cliente que você usa

Time compartilhando .mcp.json no repositório:

Aqui o –scope project é o ponto: o arquivo foi pensado pra compartilhamento com o time, e todo mundo que clonar vai ver aquele servidor

A aprovação da primeira vez protege as sessões interativas

O CI não

Então trata pipeline com claude -p, Agent SDK e sessão na nuvem como carregamento silencioso, porque é isso que eles são

E depois de qualquer mudança no arquivo, claude mcp reset-project-choices pra não arrastar aprovação velha

Organização:

Administradores podem restringir quais servidores MCP rodam na organização via arquivos de configuração gerenciada, com allowlists e denylists, chegando a desativar MCP por completo

As managed settings têm precedência sobre a configuração local do desenvolvedor, então isso não é sugestão, é regra

Tome cuidado com um efeito colateral: por padrão, publicar um managed-mcp.json suprime os conectores do claude.ai que o Claude Code busca sozinho

Pra carregar os dois, define "allowAllClaudeAiMcps": true numa fonte de managed settings

O que aparece na prática: conectando um MCP de serviço real

Agora um relato honesto, porque eu mesmo já fiz isso no modo rápido

No vídeo abaixo eu monto um clone de Linktree do zero ao deploy usando Antigravity com o MCP do Supabase, e a parte de segurança aparece meio sem querer

A primeira coisa que o fluxo pediu foi um access token da conta

Gerei o token no painel do Supabase, dei um nome e escolhi a data de expiração, e falei ali mesmo que colocar "never" não seria problema pra quem confia na própria máquina

Revendo com calma: "never" é conveniência, não é decisão de segurança

Outro detalhe que eu aviso no vídeo: o token só aparece uma vez na tela de geração, se não copiar na hora tem que criar outro

Depois de colar e salvar, dei refresh e fui conferir a aba de tools pra ver o que aquele servidor conseguia fazer com a credencial

E o alcance é grande: pegar projeto, criar projeto, listar tabelas

Resumindo o que eu falo lá: o servidor podia fazer praticamente tudo

Defendi no vídeo que, com o MCP conectado, não precisa mexer em chave de ambiente do Supabase no projeto, porque a conexão já está feita pelo servidor

Quando o agente criou um arquivo de variáveis de ambiente mesmo assim, eu ignorei o arquivo e segui pro prompt seguinte

Pedi ao agente, via MCP, pra criar um projeto novo e montar as tabelas, e o servidor criou o projeto na minha conta de verdade

Como a conta tinha 2 organizações, o fluxo perguntou em qual organização criar

Escolhi manualmente, e é justamente esse tipo de pergunta que merece atenção: antes de liberar, confere a QUAL conta e a qual projeto o agente ganhou alcance

Ainda no prompt de criação do banco, fiz questão de pedir o RLS configurado, que é item de segurança da aplicação

Depois acompanhei o resultado direto no painel do Supabase pra confirmar que o que o MCP fez apareceu no banco

Repara no vídeo menos no resultado e mais no momento da conexão: quanto do meu "checklist" ali foi gerar o token, colar, dar refresh e olhar a lista de tools?

Foi isso, e só isso

Não tem no vídeo checagem de quem publica e mantém aquele servidor, nem verificação de escopo da credencial

O que salva nessa hora é o que eu digo lá também: conhecimento prévio de programação é o que te permite avaliar e corrigir o que a IA faz, em vez de aceitar tudo cegamente

Conclusão

A pergunta que resolve a maioria dos casos não é "esse servidor é bom?"

É "quanto estrago esse servidor faz no pior cenário?"

Porque o cenário bom se resolve sozinho: é o ruim que cobra a conta

A recomendação oficial da Anthropic continua a mesma, escrever seus próprios servidores MCP ou usar servidores de provedores em que você confia, e a revisão de práticas de segurança e termos é sua

Próximo passo bem concreto pra fechar o post: roda claude mcp list agora, olha escopo e permissões de cada servidor que já está conectado aí, e remove com claude mcp remove tudo que você não usa mais

Aposto que tem pelo menos um servidor esquecido nessa lista 😀

até o próximo post!

Perguntas frequentes

Qual a diferença entre escopo local, project e user ao adicionar um servidor MCP no Claude Code?

Segundo a documentação de MCP do Claude Code, cada comando claude mcp add grava no escopo local por padrão, a menos que você passe –scope project ou –scope user. O escopo project fica num arquivo .mcp.json na raiz do projeto, pensado pra compartilhar com o time. Já o escopo user fica em ~/.claude.json e vale pra todos os projetos daquela máquina.

Por que o Claude Code pede aprovação só na primeira vez que vê um servidor MCP do .mcp.json?

É uma proteção pra que um repositório clonado não suba processos na sua máquina sem consentimento. Em sessões interativas, esse prompt aparece na primeira vez que o Claude Code vê o servidor de escopo project vindo do .mcp.json. Já em execuções não interativas, como claude -p, Agent SDK e sessões na nuvem, o carregamento acontece sem perguntar, conforme a documentação de MCP do Claude Code. Pra limpar decisões antigas, a mesma documentação traz o comando claude mcp reset-project-choices.

Como bloquear de uma vez todas as ferramentas MCP no Claude Code?

Pela documentação de permissões do Claude Code, nas regras de deny o padrão mcp__ casa com o nome completo de qualquer ferramenta MCP de qualquer servidor, então ele bloqueia tudo. Já em allow, o glob só funciona no nome da ferramenta: o segmento do servidor precisa ser literal, como em mcp__github__get_ ou mcp__puppeteer__*. Pra ajustar isso manualmente, a mesma documentação indica escrever a regra direto em /permissions.

Como colocar o servidor MCP do GitHub em modo somente leitura?

No servidor local, você ativa com a variável de ambiente GITHUB_READ_ONLY, e no servidor remoto, com o header X-MCP-Readonly. Esse modo tem precedência sobre as outras configurações: mesmo que uma ferramenta que não seja de leitura tenha sido pedida na configuração, ela fica desativada. Sem configuração explícita, o servidor sobe com os toolsets padrão context, issues, pull_requests, repos e users, como está na documentação do servidor MCP do GitHub.

O que é token passthrough e por que ele é proibido na especificação do MCP?

Token passthrough é quando um servidor repassa adiante um token que não foi emitido especificamente pra ele, e a especificação de autorização do MCP proíbe isso explicitamente. Servidores precisam validar que o token foi emitido pra eles, não só aceitar qualquer coisa que chegue. O capítulo de security best practices também documenta o confused deputy: servidores proxy com client ID estático que aceitam registro dinâmico de cliente sem exigir consentimento por cliente viram um vetor de exploração.

Como uma empresa restringe quais servidores MCP os funcionários podem conectar?

Conforme a documentação de MCP gerenciado, dá pra publicar um managed-mcp.json com allowlist e denylist de servidores, e essas managed settings têm precedência sobre a configuração local de cada desenvolvedor, podendo até desativar MCP por completo na organização. Um detalhe que passa batido: publicar esse arquivo suprime por padrão os conectores do claude.ai que o Claude Code busca sozinho. Pra manter os dois funcionando, a mesma documentação indica definir "allowAllClaudeAiMcps": true numa fonte de managed settings.




Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação SAAS com IA

Formação SAAS com IA

Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!

  • 291 aulas
  • 18 projetos
  • 24h 17min

Blog | Mais populares