🚛 Tipos de Transporte em MCP
O protocolo MCP (Message Communication Protocol) permite diferentes formas de transporte de mensagens entre componentes — como agentes, LLMs ou nós de execução. Os tipos de transporte definem como essas mensagens são trocadas, seja de forma síncrona, assíncrona ou via streaming.
1. stdio (Standard Input/Output)
- Utiliza entrada e saída padrão do sistema operacional para comunicação entre processos.
- Simples, eficiente e ideal para integração com binários locais ou scripts CLI.
- Comunicação síncrona, sem suporte nativo a streaming parcial.
🔧 Uso comum: wrappers de ferramentas locais, scripts Python, integrações offline.
2. sse (Server-Sent Events)
- Baseado em HTTP com conexão aberta (usando
text/event-stream). - Permite stream unidirecional: do servidor para o cliente.
- Recomendado para interfaces web que precisam exibir atualizações em tempo real.
- Limitado a texto, e possui suporte inconsistente fora do navegador.
🔧 Uso comum: chatbots web, notificações em tempo real, streaming simples em frontend.
3. streamable-http
- Utiliza o chunked transfer encoding do HTTP para transmitir partes da resposta.
- Mais moderno e flexível do que SSE.
- Permite stream de JSON, texto ou binários em partes progressivas.
- Melhor suporte em ambientes de backend, APIs REST, edge functions e integrações com LLMs.
🔧 Uso comum: respostas de LLMs com streaming, aplicações em backends, APIs que demandam alto controle e robustez.
🆚 SSE vs Streamable HTTP
| Característica | SSE | Streamable HTTP |
|---|---|---|
| Direção do fluxo | Unidirecional (servidor → cliente) | Unidirecional ou semiduplex |
| Suporte a dados binários | Não | Sim |
| Integração com backend | Limitada | Excelente |
| Suporte a chunked JSON | Limitado | Total |
| Compatibilidade com proxies | Problemas frequentes | Boa compatibilidade |
| Facilidade no frontend | Simples com EventSource | Requer controle manual (ex: fetch) |
| Casos típicos | UI em tempo real, notificações | Streaming LLMs, APIs assíncronas |
📌 Streamable HTTP substitui o SSE?
Não exatamente. Streamable HTTP não é uma substituição formal, mas sim uma alternativa mais moderna e robusta, preferida em aplicações com:
- Necessidade de streaming estruturado (ex: JSON).
- Maior controle sobre o tempo de resposta.
- Ambientes fora do navegador (ex: servidores, edge functions).
Para aplicações web simples, SSE ainda é viável. Mas para integrações com LLMs, agentes, RAG ou pipelines, o streamable-http oferece mais compatibilidade e escalabilidade.
Em resumo:
- Use
stdiopara integrações locais rápidas.- Use
ssepara interfaces web que precisam de eventos simples.- Prefira
streamable-httppara APIs modernas, streaming estruturado e alto controle de execução.