Gateway do EAí e MCP server da Prefeitura
A ponte entre o WhatsApp do cidadão e os agentes de IA da Prefeitura.
Meu papel
Segundo maior contribuidor do gateway, contribuições no MCP server e autor da maior parte da API de evals e prompts em 2025.
- 500 → 50 ms
- de latência média frente à versão Python
- 220
- commits meus na API de evals em 2025
Problema
O assistente EAí recebe texto e áudio pelo WhatsApp. O gateway em Python tinha virado gargalo, e os agentes precisavam de acesso padronizado às ferramentas da Prefeitura.
Solução
Participei da reescrita do gateway em Go. O webhook responde 202 e enfileira no RabbitMQ, e os workers chamam o Google Agent Engine ou o Letta, com o áudio passando antes pela transcrição do Speech v2. No MCP server oficial implementei verificação híbrida de token (JWT do Keycloak ou token de serviço), transporte HTTP stateless para rodar com várias réplicas e a ferramenta de busca na web via Surkai.
Destaques
- Consumers que se registram de novo depois de queda do RabbitMQ, retry com backoff e dead-letter.
- Transcrição de MP3, OGG, OPUS, M4A e outros formatos antes de chegar ao agente.
- O app-rmi chama o MCP server para descobrir automaticamente a Clínica da Família do cidadão.
- API para versionar o system prompt dos agentes, com histórico, e para rodar avaliações.
Resultado
Segundo o time, a latência média do gateway caiu de cerca de 500 ms para 50 ms em relação à versão Python.