MCP local e MCP em produção não são o mesmo protocolo na prática
Implementações locais utilizam stdio com credenciais via variáveis de ambiente. Uma vez exposto à internet, o servidor torna-se um OAuth 2.0 Resource Server exigindo controles de segurança abrangentes.
Três pilares precisam mudar simultaneamente:
- Transporte:
stdio→ Streamable HTTP - Autenticação: variáveis de ambiente → OAuth 2.1 com PKCE
- Validação de schema: sugestões soltas → JSON Schema estrito
Streamable HTTP Transport
A especificação padronizou num único endpoint HTTP substituindo a abordagem SSE anterior. O header duplo Accept declara suporte a JSON e Server-Sent Events. O Mcp-Session-Id habilita rastreamento de estado de conexão, e Last-Event-Id suporta recuperação de stream.
Atenção: em modo local, sempre escute em 127.0.0.1, nunca em 0.0.0.0, para prevenir ataques de DNS rebinding.
OAuth 2.1 com PKCE e Resource Indicators
Três requisitos obrigatórios governam a autorização:
- PKCE é inegociável: clientes MCP devem implementar PKCE conforme OAuth 2.1 Seção 7.5.2, inclusive para clientes confidenciais.
- Resource Indicators (RFC 8707) são obrigatórios: cada requisição deve incluir o parâmetro
resourcecom o URI canônico do servidor. O servidor valida que o claimauddo token corresponde exatamente, prevenindo ataques de confused deputy. - Isolamento de token: o servidor MCP NÃO deve repassar o token recebido do cliente MCP para APIs upstream.
JSON Schema como Barreira de Segurança
Validação estrita de JSON Schema bloqueia uma classe significativa de ataques antes de chegarem à camada de aplicação.
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[\\p{L}\\p{M}\\s\\.\\-']+$"
}
},
"required": ["nome"],
"additionalProperties": false
}
O schema estrito bloqueia tentativas de SQL injection, buffer overflow e injeção de campos inesperados antes que qualquer query seja construída.
O Gateway Corporativo
Deployments MCP em escala de produção requerem um gateway entre clientes e servidores. Responsabilidades incluem: terminação OAuth, aplicação de políticas, validação de schema, rate limiting, audit logging estruturado e detecção de MCPs sombra.
Opções open-source incluem mcp-context-forge (IBM), mcp-gateway (Microsoft) e a solução enterprise da Cloudflare.
Checklist de Hardening para Produção
- Streamable HTTP ativo, SSE desabilitado
- TLS com certificados válidos
- OAuth 2.1 com PKCE obrigatório (S256)
- Resource parameter (RFC 8707) validado
- Todos os schemas com
additionalProperties: false - Gateway de deployment obrigatório com audit logging estruturado