MCP SSE obsoleto: migre para Streamable HTTP antes que seu servidor seja interrompido
O transporte MCP SSE atingiu o fim de sua vida útil em 1º de abril de 2026. Migre para Streamable HTTP com um manipulador sem estado, nova instância por solicitação e um caminho de retomada de sessão; código para Node, Python e Cloudflare Workers.
O transporte de eventos enviados pelo servidor MCP atingiu o fim da vida útil em 1º de abril de 2026. As bibliotecas cliente ainda
envia suporte SSE para compatibilidade com versões anteriores, mas a próxima versão secundária do protocolo base
remove-o, e o registro público do MCP agora rejeita novas listagens somente de SSE. Se o seu servidor MCP
ainda responde em /sse e /messages, você tem uma janela de migração, não
uma janela para sempre.
O SSE manteve uma conexão TCP aberta por cliente. Duas cópias do seu servidor MCP atrás de uma carga o balanceador produziu sessões de divisão cerebral; o dimensionamento horizontal exigia roteamento fixo que a maioria balanceadores de carga gerenciados não podem se expressar de forma clara. HTTP streamable usa solicitação-resposta padrão ciclos com fluxos recuperáveis opcionais, o que significa que qualquer instância pode responder a qualquer solicitação e todo CDN do mundo já sabe como armazená-lo em cache e roteá-lo.
Aqui está o caminho completo da migração: o código do servidor antes e depois, um padrão de armazenamento de dados para
ferramentas com estado, uma implementação Cloudflare Workers, um equivalente FastAPI e um
.well-known arquivo de metadados para que os clientes possam descobrir seu servidor sem abrir um
conexão primeiro.
Etapa 1: excluir o manipulador SSE
O código antigo se parece com isso. Duas rotas, um mapa de sessão mantido na memória do processo e um mapa de transporte que mantém a resposta aberta até que o cliente se desconecte:
Todos os problemas com o SSE aparecem nesse trecho. O transports O mapa é apenas
visível para um processo; reinicie o servidor e todas as sessões abertas serão encerradas; dimensionar horizontalmente e
metade dos seus clientes acessa um servidor que nunca ouviu falar deles. Arranque-o.
Etapa 2: instalar HTTP streamável
O novo manipulador é menor. Uma rota responde GET e POST; cada solicitação gera um novo par servidor e transporte; o coletor de lixo limpa quando a resposta é fechada:
Três chaves são importantes. sessionIdGenerator: undefined desativa a fixação da sessão, então
o transporte é totalmente apátrida. enableJsonResponse: true retorna um único JSON
body para ferramentas que não emitem progresso, o que mantém o caminho rápido e armazenável em cache. O
res.on("close") a limpeza evita vazamentos de soquete na desconexão antecipada do cliente.
Etapa 3: Remover o estado da sessão da memória do processo
Um manipulador sem estado não significa um produto sem estado. Ferramentas de longa duração ainda precisam ser relatadas progresso em várias solicitações. Coloque esse estado no Redis, um objeto durável, DynamoDB ou Postgres; leia na entrada, escreva na saída:
O Mcp-Session-Id o cabeçalho, se presente, identifica a sessão lógica; o manipulador
usa-o como uma chave de armazenamento de dados. UM Last-Event-Id cabeçalho do cliente permite que o
transporte retoma um fluxo após uma desconexão sem reiniciar a chamada da ferramenta. Ambos os cabeçalhos são
opcional; ferramentas sem estado podem ignorá-las completamente.
Etapa 4: implantar sem servidor
HTTP streamable desbloqueia o que o SSE bloqueou: executar um servidor MCP no Cloudflare Workers, AWS Lambda, Vercel Functions ou Fly Machines. Aqui está o servidor Cloudflare Workers completo em 40 linhas, atingindo o endpoint de pesquisa de IP do Botoi como uma ferramenta de exemplo:
Sem mapa de sessão, sem temporizadores em segundo plano, sem pings de manutenção de atividade. O Worker gira sob demanda, responde a solicitação e desliga. Um Worker lida com qualquer número de clientes paralelos porque há nenhum estado mutável compartilhado. Inicializações a frio para servidores MCP em Workers atingem menos de 5 ms para a maioria superfícies de ferramentas; no Lambda eles ficam de 50 a 200 ms frios.
Etapa 5: migração Python com FastAPI
Os servidores Python têm o mesmo formato. O manipulador FastAPI constrói o servidor MCP por solicitação e delegados ao transporte:
O padrão é o mesmo em todas as linguagens: construir o servidor por solicitação, entregar a solicitação HTTP ao transporte, devolva tudo o que o transporte produz. Os tempos de execução da linguagem são diferentes; a arquitetura não.
Etapa 6: publicar uma placa de servidor para descoberta
Uma das lacunas que o roteiro para 2026 preenche é a descoberta sem conexão. Registros e
os rastreadores costumavam precisar de um aperto de mão ao vivo para saber o que seu servidor fazia. Servir um documento JSON em
/.well-known/mcp/server-card.json e os clientes podem aprender o URL de transporte,
esquema de autenticação e capacidade definida antes de se conectarem:
Esta é a parte que permite que as plataformas de agentes indexem seu servidor sem investigá-lo. Autenticação0 para Agentes, Cloudflare Agent Cloud e o registro público MCP consomem esse formato; adicione uma vez e seu servidor se tornará listável.
Verifique a migração
Antes de inverter o DNS, execute o inspetor ou faça curl no novo endpoint. O primeiro emerge um UI com todas as ferramentas e recursos expostos; a segunda confirma que o formato do fio está correto:
Um sucesso tools/list resposta com seu catálogo completo de ferramentas significa que o servidor está
viver. Se a resposta voltar como text/event-stream quando você espera JSON, o
transporte tem enableJsonResponse desabilitado; vire a bandeira.
Mantenha os dois transportes rodando em caminhos diferentes por uma semana após a transição:
/sse como o velho ouvinte, /mcp como o novo. Emita uma linha de log a cada
momento em que um cliente se conecta /sse com seu agente de usuário. Quando o registro fica silencioso, você
pode excluir o manipulador antigo. A maioria das bibliotecas cliente fornece suporte HTTP Streamable entre
Dezembro de 2025 e fevereiro de 2026; espere uma longa cauda de instalações antigas do Cursor e do Claude Desktop.
O que permanece igual, o que muda
| Preocupação | Transporte SSE | HTTP streamável |
|---|---|---|
| Modelo de conexão | Um de longa duração por cliente | Resposta de solicitação, fluxo opcional |
| Balanceamento de carga | Sessões fixas necessárias | Qualquer instância responde a qualquer solicitação |
| Estado da sessão | Memória em processo | Datastore digitado no ID da sessão |
| Ajuste sem servidor | Bloqueado por limites de duração da conexão | Nativa |
| Streaming de progresso | Padrão | Ativar por meio do cabeçalho Aceitar |
| Descoberta | Aperto de mão ao vivo | /.well-known/mcp/server-card.json |
| Invocação de ferramenta | JSON-RPC sobre quadros SSE | JSON-RPC sobre corpo HTTP |
Principais conclusões
- SSE está obsoleto, não removido. Os clientes ainda aceitam até 2026, mas novos servidores e listagens de registro exigem HTTP Streamable.
- Crie novos por solicitação. Nenhum mapa de sessão em processo; deixe o objeto do servidor viva apenas enquanto o RPC durar.
-
Envie o estado para um armazenamento de dados. Redis, objetos duráveis ou Postgres digitados no
Mcp-Session-Idcabeçalho. - Serverless está de volta à mesa. Trabalhadores Cloudflare, Lambda, Vercel Funções; nenhum deles apoiou bem a ESS de longa duração.
-
Publique uma placa de servidor.
/.well-known/mcp/server-card.jsonfaz seu servidor detectável sem uma conexão.
O servidor MCP do Botoi é fornecido em Streamable HTTP em api.botoi.com/mcp com 49 ferramentas selecionadas para pesquisa de IP, validação de e-mail, DNS, hashing, assinatura JWT e QR geração. A fonte é licenciada pelo MIT e reflete o padrão acima; leia o documentos de configuração para Configurações de Claude Desktop, Claude Code, Cursor, VS Code e Windsurf.
FAQ
- O MCP SSE foi removido ou apenas obsoleto?
- Obsoleto em 1º de abril de 2026; o suporte de tempo de execução ainda existe em bibliotecas de cliente para compatibilidade com versões anteriores, mas novos servidores MCP e listagens de registro exigem HTTP Streamable. O roteiro para 2026 remove totalmente o SSE do protocolo base na próxima versão secundária; comece sua migração agora e não na remoção.
- Por que o MCP abandonou o SSE?
- O SSE mantinha uma conexão TCP aberta por cliente e dificultava o dimensionamento horizontal. Dois servidores SSE idênticos atrás de um balanceador de carga round-robin produziram sessões split-brain: o estado da ferramenta armazenado no servidor A era invisível para o servidor B. O HTTP streamable usa ciclos curtos de solicitação-resposta com fluxos recuperáveis opcionais, de modo que balanceadores de carga e CDNs roteiam cada solicitação sem fixar um cliente a uma instância.
- O que é nova instância por solicitação?
- Cada solicitação recebida constrói um novo objeto de servidor MCP, manipula o RPC e descarta a instância. Nenhum estado na memória entre as solicitações. O estado que precisa persistir (tokens de progresso, sessões de ferramentas) reside em um armazenamento de dados que o manipulador lê na entrada e grava na saída. Isso permite que você execute o mesmo servidor em uma plataforma sem servidor, como Cloudflare Workers ou AWS Lambda, sem o limite de duração da conexão de 15 minutos.
- Ainda preciso de WebSockets para saída da ferramenta de streaming?
- Não. O HTTP Streamable inclui um fluxo opcional no estilo SSE dentro de uma resposta POST padrão para ferramentas que emitem resultados parciais. A diferença do SSE antigo é que o fluxo reside dentro de uma solicitação HTTP e termina com a chamada da ferramenta. Você não mantém um soquete aberto entre chamadas de ferramenta.
- Como faço para testar um servidor HTTP Streamable localmente?
- Use o inspetor MCP oficial (npx @modelcontextprotocol/inspector) que agora fala ambos os transportes. Ou enrole o endpoint com um corpo JSON-RPC e um cabeçalho Accept: text/event-stream; você verá uma única resposta JSON ou um fluxo de eventos, dependendo se a ferramenta emite progresso. O resumo da sessão pode ser testado com os cabeçalhos Mcp-Session-Id e Last-Event-Id.
Comece a construir com botoi
150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.