Ouça este artigo
Publicado em 14 de janeiro de 2026
Neste artigo você vai ver como montar um MCP moderno que aposta em comunicação sem estado, validação rígida com Pydantic e execução assíncrona de tarefas longas. Você vai entender como mensagens viram envelopes estruturados, como cada pedido é assinado para segurança e como clientes e servidores trabalham sem sessões. É prático, seguro e pensado para tornar seus agentes mais confiáveis e escaláveis, seguindo práticas usadas em projetos que mostram como agentes MCP coordenam em equipe e entendem contexto.
Principais pontos
- Comunicação sem estado para melhor escalabilidade
- Validação rígida com Pydantic e contratos para dados confiáveis
- Assinatura criptográfica (HMAC-SHA256) para integridade e autenticidade
- Nonces e timestamps para evitar replay
- Execução assíncrona com job IDs e polling para tarefas longas
Como construir um protocolo MCP sem estado, seguro e assíncrono para seus fluxos de agente
Você recebe um guia prático que descreve como implementar um protocolo estilo MCP focado em comunicação sem estado, validação rigorosa e operações assíncronas de longa duração. O material mostra um sistema mínimo que usa envelopes estruturados, requisições assinadas e modelos validados para permitir que agentes e serviços interajam de forma segura e escalável — uma base compatível com abordagens que explicam como integrar IA a recursos e ferramentas em tempo real.
Principais conclusões
- Cada requisição carrega todos os dados necessários; o servidor não mantém sessão.
- Segurança e integridade vêm de assinaturas HMAC-SHA256 combinadas com nonces e timestamps; para cenários que exigem autenticação adicional, considere soluções de autenticação robustas como OAuth 2.1.
- Tarefas longas são gerenciadas retornando um job ID e permitindo polling assíncrono; padrões de orquestração e polling aparecem em trabalhos sobre orquestração de fluxos confiáveis.
- Pydantic garante consistência ao validar esquemas de entrada e saída.
Contexto e utilitários básicos
- Funções utilitárias incluem geração de timestamps e UUIDs, serialização JSON canônica e criação/verificação de assinaturas HMAC-SHA256.
- Essas peças permitem que mensagens sejam assinadas e verificadas de forma determinística, reduzindo erros e facilitando auditoria. Para exemplos de servidores MCP e como implantá-los, há iniciativas que abriram código e facilitam deploys em produção, como projetos baseados em implementações de servidor MCP.
Estruturas de mensagem e validação
- Requisições e respostas seguem um envelope estruturado com campos como: version, requestid, timestamp, sender/clientid, tool, args, nonce e signature.
- Pydantic é usado para rejeitar campos malformados cedo no processamento, criando contratos consistentes entre cliente e servidor e tornando o SDK previsível. Trabalhos práticos sobre agentes orientados por contrato mostram como definir esses modelos para decisões empresariais seguras e previsíveis (modelos com Pydantic).
Modelos de ferramentas e contratos
- Cada ferramenta define um modelo de entrada com restrições claras e um modelo de saída com formato e limites esperados.
- A validação no nível do SDK evita que agentes gerem chamadas inválidas, tornando o comportamento das ferramentas previsível mesmo quando acionadas por LLMs. Em cenários práticos, ferramentas legadas e fluxos como os do Azure Logic Apps podem ser adaptados para atuar como ferramentas de agente seguindo contratos bem definidos (transformação de fluxos em ferramentas).
Arquitetura do servidor e execução assíncrona
- O servidor é stateless: não mantém sessão entre requisições.
- Fluxo básico:
- Recebe e verifica assinatura.
- Valida envelope e argumentos.
- Despacha para a ferramenta apropriada.
- Para tarefas longas, cria um job e retorna o job ID.
- Clientes fazem polling para obter status e resultado.
- Essa abordagem permite execução não bloqueante e escalabilidade. Em níveis de runtime e publicação, existem soluções que permitem publicar e descobrir agentes entre frameworks, o que facilita escalabilidade e interoperabilidade (runtimes nativos MCP).
Cliente leve e integração
- O cliente assina cada requisição e envia envelopes estruturados.
- O padrão cobre chamadas síncronas, falhas de validação e polling assíncrono, facilitando integração em pipelines de agentes. Exemplos de integração em aplicações front-end e fluxos com múltiplos agentes mostram como clientes leves podem coordenar pedidos e polling de jobs (integração em React com vários agentes).
Medidas de segurança
- Mensagens são protegidas por assinatura HMAC-SHA256 usando uma chave compartilhada.
- Nonces e timestamps evitam ataques de replay.
- Validação estrita reduz superfícies de ataque causadas por dados inesperados.
- Além das assinaturas, arquiteturas que colocam agentes próximos aos serviços ajudam a responder a incidentes com menos latência e menor superfície de ataque (agentes ao lado dos serviços).
Tabela: Campos típicos do envelope e função
| Campo | Função |
|---|---|
| version | Identifica o formato do envelope |
| requestid | Rastreabilidade da requisição |
| timestamp | Ordenação e validade temporal |
| clientid / server_id | Identificação dos pares |
| tool | Nome da função a ser executada |
| args | Parâmetros validados pela ferramenta |
| nonce | Proteção contra replay |
| signature | Verificação de integridade/autenticidade |
Impacto e desenvolvimentos relacionados
- O trabalho complementa avanços em protocolos de agente que enfatizam streaming assíncrono e descoberta dinâmica.
- Pesquisas recentes indicam a necessidade de maiores salvaguardas para workflows de agentes; a combinação de validação e assinaturas atende a essa demanda.
- Para sistemas distribuídos, o padrão descrito oferece caminho claro para escalabilidade e segurança.
- Novas arquiteturas e ferramentas experimentais exploram deliberação, grafos de memória e ciclos de reflexão que podem compor com um protocolo stateless quando necessário (arquiteturas com deliberação e memória).
- Plataformas de orquestração, simulação e teste ajudam a validar segurança e comportamento antes do deploy em produção — desde motores de simulação para guardrails até ferramentas abertas de teste de agentes (motores de simulação e ferramentas de teste abertas).
- Para necessidades de persistência complementar ao modelo stateless (por exemplo, memórias longas opcionais), há projetos que adicionam memória persistente e estratégias de retenção seletiva (memória persistente em SQL e união de memórias de curto e longo prazo).
O que você pode aplicar imediatamente
- Implemente Pydantic para validar contratos entre cliente e servidor.
- Use HMAC-SHA256 e nonces para proteger mensagens.
- Projete respostas que retornem job IDs para tarefas longas e permitam polling.
- Adote serialização JSON canônica para garantir assinaturas determinísticas.
- Teste comportamentos em ambientes controlados usando ferramentas de simulação e suites de teste para agentes antes de rodar em produção.
Conclusão
Você sai com um roteiro prático: envelopes estruturados como selo de confiança; comunicação sem estado para facilitar escala e reinício; Pydantic para cortar problemas na raiz; HMAC‑SHA256 e nonces para evitar replay; e job IDs com polling para tratar tarefas longas sem bloqueio. Não é mágica — é engenharia: contratos bem definidos, assinaturas determinísticas e validação rígida reduzem bugs, facilitam auditoria e deixam seus agentes mais confiáveis. Para escalar, pense em peças pequenas que falam a mesma língua; para segurança, assine e verifique tudo. Se estiver pronto para levar isso à produção, considere runtimes e ferramentas que simplificam publicação e descoberta de agentes entre frameworks (runtimes nativos e publicação).
Curioso para se aprofundar? Leia mais artigos e guias práticos em https://blog.aidirectory.com.br.
Perguntas Frequentes
O que significa “sem estado” no Protocolo MCP?
Cada pedido traz tudo que precisa. O servidor não guarda sessão, o que facilita escalar e reiniciar serviços.
Como a validação estrita com Pydantic protege o sistema?
Rejeita dados errados antes de executar. Define contratos claros entre cliente e servidor, evitando bugs e resultados inesperados.
Como as mensagens são assinadas e protegidas?
Usa-se HMAC-SHA256 com chave secreta. Nonces e timestamps evitam replay. JSON canônico assegura assinatura determinística.
Como funcionam tarefas assíncronas e polling de jobs?
O cliente inicia a tarefa e recebe um job_id; depois faz polling para checar status e buscar o resultado quando pronto.
O que acontece se a validação ou a assinatura falhar?
O pedido é rejeitado e retorna erro; a ferramenta não é executada. O cliente corrige dados ou assinatura e reenvia.



