O que é e para quem
MCP (Model Context Protocol) é o protocolo aberto, criado pela Anthropic, para conectar LLMs a ferramentas externas. O pacote@ararahq/mcp roda local via stdio em qualquer cliente que fale MCP: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code e SDKs de MCP. Há também um servidor hospedado para claude.ai e ChatGPT.
Use o MCP quando o agente é seu (Claude Code, Cursor, Claude Desktop) e trabalha para você: dispara campanha, lê o relatório, lê o que a pessoa respondeu e manda a resposta que você aprovou. Já o Brain é a IA da Arara que conversa com o seu cliente no WhatsApp.
Não são exclusivos: operação típica usa SDK no backend, automações para responder e MCP para o dono trabalhar pelo agente.
Você diz o quê. A Arara resolve o resto.
O MCP tem poucas ferramentas de propósito: agente bom não precisa de um painel de controle inteiro, precisa de poucas ações que aceitam o que uma pessoa sabe de cabeça.send_whatsapp aceita "Renata" ou "11 99999-8888". O MCP busca o contato salvo ou normaliza o número para E.164 e, se a janela de 24h estiver fechada, não inventa template: devolve os seus aprovados para escolher.
Quatro tools abrem painéis interativos dentro do chat (funil da campanha, prévia da campanha com aprovação, linha do tempo da entrega, thread da conversa) em clientes com suporte a MCP Apps. Leitura leve (conta, templates aprovados, campanhas recentes, números) fica em resources, sem gastar tool call. Parâmetros, limites e exemplos: Ferramentas do MCP.
A lista de tools do cliente também mostra ferramentas de operação interna da equipe da Arara. Elas não estão disponíveis para clientes. Para a sua organização, as listadas na tabela acima são as que funcionam.
Instalar e conectar
Requisito: Node.js 20 ou mais novo. No Linux, o keychain usa o Secret Service (libsecret), que precisa estar instalado.
1. Login (uma vez por máquina)
2. Adicionar ao cliente
- Claude Code
- Claude Desktop
- Cursor
- Outros clientes
Comandos do CLI
Primeiro uso
Depois de conectar, confira comwhoami em qual organização o agente vai operar e peça uma destas três coisas.
Falar com a base
broadcast resolve os números (qualquer formato), renderiza a mensagem e estima o custo sem enviar. Você confere a prévia e aprova; só aí a campanha é criada. Quem não resolver aparece listado, não some em silêncio.
Ver o que voltou
campaign_report devolve enviados, entregues, lidos, cliques, respostas e conversões, mais quantos foram bloqueados e por quê, estornos e custo.
Responder quem levantou a mão
read_conversation traz o que ela escreveu; send_whatsapp responde depois que você aprova o texto.
Servidor hospedado
A AraraHQ também roda o servidor emhttps://mcp.ararahq.com/mcp, na Cloudflare Workers, para clientes que falam MCP Streamable HTTP.
Conectar no claude.ai ou no ChatGPT
Adicione um conector personalizado com a URLhttps://mcp.ararahq.com/mcp. O cliente faz o resto sozinho:
- Lê
/.well-known/oauth-protected-resourceno MCP e descobre o servidor de autorização (https://api.ararahq.com/api). - Registra um client via
POST /oauth/register(registro dinâmico). - Abre
https://app.ararahq.com/oauth/authorize, onde você entra na sua conta e aprova o acesso. - Troca o código por token em
POST /oauth/token(authorization code com PKCES256) e passa a mandar o bearer em cada chamada.
- Stateless, só
POST /mcp.GETresponde405. Não existe endpoint SSE legado. - Só bearer no header
Authorization. Não existe credencial na query string nem API key como argumento de tool. Sem token válido, responde401comWWW-Authenticateapontando pro metadata do recurso. - Protected Resource Metadata em
/.well-known/oauth-protected-resourcee/.well-known/oauth-protected-resource/mcp, comhttps://api.ararahq.com/apicomo servidor de autorização. - Allowlist de Host e de Origin. Requisição de browser só é aceita de
https://claude.aiehttps://chatgpt.com; cliente semOrigin(não browser) passa. - Rate limit por usuário autenticado, não por IP: 120 requisições por minuto. Acima disso,
429comRetry-After: 60. - A identidade do token é consultada na API e guardada por 60 segundos, só com a impressão digital (SHA-256) do token, nome e e-mail. O token em si nunca é armazenado.
GET /healthdevolve status, nome e versão.
Autenticação
OAuth, e só OAuth.- Local:
loginroda o device flow da Arara com o clientarara-mcp. Access token e refresh token ficam no keychain. Quando o access token está a 30 segundos de expirar, o MCP renova sozinho com o refresh token. Se o refresh também tiver expirado, rodeloginde novo. - Hospedado: cada requisição carrega o bearer token no header. O servidor não guarda, não renova e não emite token.
- Ao aprovar o login, a organização recebe um alerta no dashboard (“Novo dispositivo conectado”) com o e-mail de quem autorizou.
logoutapaga os tokens desta máquina.
status ou doctor pra conferir antes de abrir o cliente.
Guarda-rails
- Disparo começa em prévia.
broadcastsó envia comdryRun: false. O promptplan_broadcaste o painel de disparo pedem sua aprovação antes. - Retry sem mensagem duplicada.
send_whatsappebroadcastmandamIdempotency-Keyem toda chamada. As retentativas automáticas reaproveitam a mesma chave; pra repetir uma chamada inteira com segurança, passe o mesmoidempotencyKey. - Anotações de segurança do MCP. Tools de leitura vêm marcadas como
readOnlyHint;opt_outvem comodestructiveHint. Clientes que respeitam as anotações pedem confirmação antes de executar escrita. - Nada some calado. Destinatário que não resolve volta na resposta; contato bloqueado no disparo aparece no
campaign_reportcom o motivo. - Pedido de saída.
opt_outregistra o número na lista de opt-out da organização. Use sempre que alguém responder PARAR ou pedir pra sair.
Segurança
- Credencial nunca aparece: nenhuma tool aceita ou devolve token. O que chega ao modelo é só o resultado.
- Keychain do sistema: tokens locais nunca ficam em texto puro no disco nem na configuração do cliente.
- Payload validado: toda resposta da API passa por schema antes de ser usada. Formato inesperado vira erro
INVALID_API_RESPONSE, não crash. - Timeout explícito: 10 segundos por chamada à API.
- Retry contido: no máximo 2 retentativas, só em métodos seguros ou chamadas com
Idempotency-Key, respeitandoRetry-After. - Sem telemetria: o pacote não coleta nada.
Configuração avançada
Variáveis de ambiente lidas pelo binário:Próximos passos
Ferramentas do MCP
Referência de tools, resources e prompts: parâmetros, limites e exemplos.
Brain
A IA da Arara que atende o seu cliente no WhatsApp.
CLI
A CLI tem um
arara mcp próprio, diferente deste pacote.Source no GitHub
Código aberto MIT, releases versionadas, issues abertas.