O Muro Stateful: Por Que o MCP Não Escalava

Quando o Model Context Protocol (MCP) foi lançado no final de 2024, era elegante — mas construído para um único cliente falando com um único servidor numa máquina local. O transporte original dependia de sessões stateful: um handshake initialize, um header Mcp-Session-Id e estado persistente no servidor.

Esse design colapsa sob workloads cloud-native. Quando você deploya servidores MCP atrás de um load balancer, o session pinning significa que a requisição de um usuário precisa sempre rotear para o mesmo pod — ou você recebe erros 400 Session Not Found. Escala horizontal, deploys contínuos e funções serverless simplesmente não funcionam com sessões fixas.

O Google bateu nessa parede ao escalar MCP pela sua infraestrutura cloud. A solução não foi um patch — foi um redesenho no nível do protocolo. A especificação MCP release candidate 2026-07-28 remove o gerenciamento de sessão no nível do transporte completamente. Essa é a maior mudança na spec desde o lançamento do MCP, e é uma mudança boa.

Resumo: se você está construindo agentes de IA para produção, essa atualização é seu bilhete para escalabilidade real.

MCP stateless protocol running on cloud infrastructure with load balancers Coding Session Visual

O Que Realmente Mudou: De Handshakes para Requisições Autodescritivas

Antes: O Handshake Stateful (2025-11-25)

Toda conexão exigia um setup de sessão:

// POST /mcp - Handshake legado 2025-11-25
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-11-25",
    "capabilities": {},
    "clientInfo": {
      "name": "my-app",
      "version": "1.0"
    }
  }
}

O servidor respondia com um header Mcp-Session-Id que precisava ser incluído em toda requisição subsequente. Sem o session ID? Sem acesso.

Depois: Requisições Stateless e Autodescritivas (2026-07-28)

O handshake initialize morreu. O header Mcp-Session-Id morreu. Em vez disso, toda requisição carrega sua própria versão do protocolo, informações do cliente e capacidades num campo _meta:

POST /mcp HTTP/1.1
Host: mcp-server.example
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search",
    "arguments": {
      "q": "lontras"
    },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "my-app",
        "version": "1.0"
      }
    }
  }
}

Toda requisição agora é independente. Qualquer instância do servidor pode processá-la. Esse é o cerne da mudança: o estado vai da camada de transporte para a camada de aplicação.

Headers HTTP: Tornando o Tráfego Roteável

O SEP-2243 introduz headers HTTP padrão que espelham o corpo JSON-RPC:

  • Mcp-Protocol-Version: versão do protocolo
  • Mcp-Method: o método JSON-RPC (ex.: tools/call)
  • Mcp-Name: a ferramenta, prompt ou recurso específico

Proxies, gateways e load balancers agora podem rotear e limitar tráfego sem inspecionar o corpo da requisição. Se headers e corpo discordarem, o servidor rejeita com erro de mismatch -32020.

Operações Longas: Tasks Extension

E quanto a chamadas de ferramenta que levam 30 segundos — como backup de banco ou reembolso? O modelo antigo segurava a conexão aberta. A nova spec retorna um taskId imediatamente e processa em background:

// Exemplo: Iniciando uma task assíncrona num servidor TypeScript
server.tool(
  "process_refund",
  { orderId: z.string(), amount: z.number() },
  async ({ orderId, amount }) => {
    const taskId = randomUUID();
    // Armazena o estado inicial da task num datastore compartilhado (ex.: Redis)
    await setTaskState(taskId, { status: "trabalhando" });
    // Processa o reembolso assíncronamente em background
    processRefundAsync(taskId, orderId, amount);
    // Retorna imediatamente para manter a conversa fluindo
    return {
      content: [
        {
          type: "text",
          text: JSON.stringify({
            taskId,
            status: "trabalhando",
            message: `Reembolso de R${amount} para o pedido ${orderId} está sendo processado. Task ID: ${taskId}`
          })
        }
      ]
    };
  }
);

O cliente faz polling com tasks/get ou assina via tasks/update. Chega de filas de conexão.

Upgrades de Segurança Que Você Precisa Conhecer

A spec adiciona um parâmetro iss nas respostas de autorização para prevenir session hijacking. O suporte a JSON Schema agora inclui oneOf, anyOf, allOf e definições locais de $ref para validação mais estrita.

Também há uma política formal de deprecação: features passam por Active → Deprecated → Removed com janela mínima de 12 meses. Três features entram em deprecação agora, incluindo stderr para conexões stdio — use OpenTelemetry no lugar.

Network diagram showing MCP requests routed through HTTP gateway without sessions IT Technology Image

Migração: O Que Você Precisa Fazer Hoje

Todos os quatro SDKs Tier-1 (TypeScript, Python, Go, C#) têm releases beta suportando a spec 2026-07-28. Comece a testar em staging agora.

Python: A API do decorator MCPServer é totalmente compatível.

pip install "mcp[cli]==2.0.0b1"

TypeScript: O v2 substitui o monolítico @modelcontextprotocol/sdk por pacotes modulares:

npm install @modelcontextprotocol/server@beta
npm install @modelcontextprotocol/client@beta

Use o codemod para renames de API (como .tool()registerTool):

npx @modelcontextprotocol/codemod@beta v1-to-v2 .

Limitações e Cuidados

Esta spec é um release candidate, não final. A janela de deprecação de 12 meses significa que clientes e servidores antigos vão coexistir — teste a interoperabilidade com cuidado. Além disso, o gerenciamento de estado vai para sua camada de aplicação: você agora precisa de Redis ou similar para estado de tasks, o que é um novo fardo operacional.

Próximos Passos

Se você está deployando agentes em escala, este é o sinal verde. O core stateless torna load balancing algo trivial, autoscaling contínuo e MCP serverless uma realidade. Comece com os betas dos SDKs, atualize seus tool servers e teste o roteamento do seu gateway com os novos headers. Para mais padrões de deploy seguro, veja este guia sobre progressive rollouts com feature flags. E se você também está de olho no ecossistema Python, confira as novidades do Python 3.14.3.

Enterprise server rack with MCP protocol handling millions of concurrent requests Algorithm Concept Visual

Conclusão

O MCP acabou de crescer. A spec 2026-07-28 o transforma de uma camada de integração local promissora para a infraestrutura aberta e fundamental para aplicações de IA enterprise. A sessão morreu — viva a requisição stateless.

Sua jogada: pegue um serviço não-crítico, migre para o SDK beta e faça deploy atrás de um load balancer HTTP padrão. A diferença será imediata.

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.