
Três maneiras de proteger um servidor MCP: OAuth, L402 e prova de trabalho
Alguém na Sentry registrou um bug no mês passado: as Automations de Cursor começaram a enfrentar erros de limite de taxa quase imediatamente após a autenticação. O bucket foi dimensionado para humanos — 60 requisições por 60 segundos — e um agente o esgotou em segundos.
Esse é o problema de autenticação do MCP em miniatura. Você tem um servidor expondo ferramentas. Agentes chamam essas ferramentas. Você quer desacelerar abusos, cobrar por chamada ou apenas garantir que não estoure seu orçamento de LLM em algum loop descontrolado. Como você faz isso sem configurar uma pilha completa de OAuth que quebra na primeira vez que um agente não tem um navegador para abrir?
Existem três opções reais disponíveis agora. Veja como elas se comparam.
Opção 1: OAuth 2.1 (o especifica diz isso)
A especificação do MCP exige OAuth 2.1 para autorização. Se você está construindo um servidor de produção para clientes empresariais — humanos reais com contas — essa é a escolha certa. Você obtém acesso escopado, revogação de token, trilhas de auditoria. SSO funciona. As equipes de conformidade param de te enviar e-mails.
O problema são os agentes. O OAuth 2.1 tem um fluxo de código de autorização que requer uma URI de redirecionamento. Um agente rodando em modo headless não tem um navegador. DPoP e Workload Identity Federation estão no roadmap do MCP, mas ainda não foram lançados. Se você precisa de autenticação hoje e seus chamadores são principalmente agentes, o OAuth te coloca em uma situação difícil.
Bom ajuste: SaaS empresarial, clientes dirigidos por humanos, contextos com alta conformidade.
Mau ajuste: agentes anônimos, APIs públicas, serviços de pagamento por chamada.
Opção 2: L402 Pagamentos Lightning
L402 é uma extensão HTTP onde um servidor responde a uma requisição não autorizada com 402 Payment Required e uma fatura no cabeçalho WWW-Authenticate. O cliente paga isso via Lightning e tenta novamente com a pré-imagem como credencial.
Dois pacotes npm oferecem L402 para MCP agora: lightning-wallet-mcp e l402-kit-mcp. O modelo é limpo: cada chamada de ferramenta custa um número fixo de sats. Sem contas, sem sessões, sem usuário. Um agente com uma carteira Lightning (Alby, Phoenixd, NWC) pode lidar com todo o fluxo programaticamente.
# Primeira chamada — servidor responde com 402
curl -X POST https://your-mcp-server/tools/call \
-H "Content-Type: application/json" \
-d '{"name": "expensive_tool", "arguments": {}}'
# HTTP/1.1 402 Payment Required
# WWW-Authenticate: L402 invoice="lnbc...", macaroon="..."
# Pague a fatura via Lightning, obtenha a pré-imagem
# Tente novamente com credenciais
curl -X POST https://your-mcp-server/tools/call \
-H "Authorization: L402 <macaroon>:<preimage>" \
-H "Content-Type: application/json" \
-d '{"name": "expensive_tool", "arguments": {}}'
# HTTP/1.1 200 OK
Bom ajuste: agentes com carteiras Lightning, APIs de micropagamento por chamada, monetização nativa em Bitcoin.
Mau ajuste: agentes sem carteiras, níveis gratuitos, contextos onde a fricção de pagamento mata a adoção.
Opção 3: Prova de Trabalho
PoW é a estranha. Em vez de pagar dinheiro, o chamador queima CPU para resolver um quebra-cabeça estilo hashcash. O servidor define uma dificuldade. O chamador trabalha até encontrar um nonce. Nenhuma carteira é necessária.
# Obter um desafio
curl https://your-mcp-server/api/challenge
# {"challenge": "abc123", "difficulty": 4, "algorithm": "sha256"}
# Resolva-o
npx @powforge/captcha solve --challenge abc123 --difficulty 4
# {"nonce": "7f3a...", "solution": "0000..."}
# Envie com a solução no cabeçalho
curl -X POST https://your-mcp-server/tools/call \
-H "X-PoW-Solution: challenge=abc123,nonce=7f3a..." \
-H "Content-Type: application/json" \
-d '{"name": "tool", "arguments": {}}'
O custo escala com a dificuldade. Um chamador legítimo resolvendo uma vez está bem. Um abusador tentando bombardear 10.000 chamadas atinge um muro porque cada uma requer computação nova. Nenhuma autoridade central. Nenhuma carteira. Nenhum redirecionamento.
@powforge/captcha-mcp é fornecido como middleware para servidores MCP existentes. Envolva seu servidor, defina uma dificuldade e os chamadores resolvem antes que as chamadas de ferramentas sejam processadas. Ele também suporta L402 como uma válvula de escape: pague sats em vez de trabalhar duro se você preferir não queimar CPU.
Bom ajuste: agentes anônimos, APIs públicas, prevenção de abusos sem monetização, PoW ou pagamento em dupla.
Mau ajuste: chamadores legítimos de alta taxa de transferência (o custo de CPU adiciona latência), ferramentas em tempo real onde cada milissegundo conta.
A comparação
| OAuth 2.1 | L402 Lightning | Prova de Trabalho | |
|---|---|---|---|
| Requer conta de usuário | Sim | Não | Não |
| Requer carteira Lightning | Não | Sim | Não |
| Funciona headless hoje | Parcial | Sim | Sim |
| Receita por chamada | Não | Sim (sats) | Não |
| Sem estado | Não | Sim | Sim |
Um estudo da Astrix Security este ano descobriu que 88% dos servidores MCP requerem credenciais de algum tipo, mas documentam quase nenhuma delas. A varredura do OpenClaw encontrou mais de 42.000 instâncias MCP não autenticadas expostas publicamente em janeiro de 2026. A maioria delas não são instalações empresariais — são projetos paralelos e construções de fim de semana.
Para esse público, o OAuth é exagerado. O L402 é elegante se o chamador tiver uma carteira. O PoW te dá fricção sem a necessidade de carteira — os chamadores sempre conseguem passar, eles apenas não conseguem fazer isso de graça em grande escala.
A árvore de decisão
- Construindo para empresas com usuários humanos? OAuth 2.1. A especificação aponta para isso e as equipes de conformidade precisam.
- Monetizando por chamada de ferramenta, chamadores têm carteiras Lightning? L402. Limpo, sem estado, nativo em Bitcoin.
- API pública, agentes anônimos, sem contas? PoW — ou PoW com válvula de escape L402.
- Inseguro? Comece com PoW para o nível gratuito e L402 para um nível pago. Adicione OAuth quando um cliente empresarial pedir.
O bug de limite de taxa da Sentry é corrigível com qualquer uma dessas opções. Mas se você está construindo para agentes primeiro, o OAuth é a última coisa que você deve considerar — não a primeira.
-
@powforge/captcha-mcp(middleware PoW + L402): https://www.npmjs.com/package/@powforge/captcha-mcp -
@powforge/captcha(solucionador autônomo): https://www.npmjs.com/package/@powforge/captcha - Problema MCP da Sentry #844: https://github.com/getsentry/sentry-mcp/issues/844
As empresas brasileiras que utilizam servidores MCP precisam considerar como gerenciar a autenticação de agentes de IA. A escolha do método pode impactar a segurança e a eficiência operacional. Com a crescente adoção de agentes, entender essas opções é crucial para evitar problemas de abuso e garantir a conformidade.

