Skip to main content
Glama
cecon

WA MCP

by cecon

WA MCP

Aplicativo Windows em Tauri 2 + React, com múltiplas sessões WhatsApp e um endpoint MCP autenticado por sessão.

Instalar

Baixe o instalador .exe em Releases.

  1. Instale e abra WA MCP. No primeiro acesso, crie o administrador (somente neste computador).

  2. Em Configurações → Aplicativo, configure o token do seu Cloudflare Tunnel.

  3. Em Configurações → Conexões WhatsApp, crie uma conexão e escaneie o QR Code em WhatsApp → Aparelhos conectados. Cada conexão vira uma caixa de entrada do atendimento.

  4. Na aba ChatGPT da conexão, gere o código de autorização, ou gere um token em Acesso MCP para outro cliente MCP.

  5. Autorize somente a conexão e as permissões que deseja compartilhar.

O mesmo aplicativo web abre na janela do Windows e no navegador de outros computadores da rede: o endereço aparece em Configurações → Aplicativo → Acesso pela rede e cada pessoa entra com o próprio login e senha.

O instalador inclui o serviço (em Rust, dentro do próprio aplicativo) e o cloudflared. Não é necessário instalar ferramentas de desenvolvimento para usar o aplicativo. O instalador inicial não tem assinatura Authenticode.

Fechar a janela mantém o aplicativo na bandeja. Clique no ícone verde para abrir novamente; use Sair para encerrar o serviço e o túnel. O computador deve permanecer ligado e conectado à internet.

Por padrão, o WA MCP inicia automaticamente com o Windows (minimizado na bandeja, sem abrir a janela). Desative em Configurações → Aplicativo → Iniciar com o Windows se preferir abrir manualmente.

Atualizações automáticas

A partir da versão 26.10.3, o aplicativo verifica novas releases ao abrir e a cada seis horas. O download ocorre em segundo plano e a assinatura é validada com a chave pública embutida. Quando estiver pronto, clique Reiniciar e atualizar no aviso; o aplicativo encerra seus serviços, instala silenciosamente e reabre. As sessões e o histórico permanecem no perfil do Windows. Também é possível usar Configurações → Aplicativo → Verificar atualizações. Sem internet, a versão atual continua funcionando.

Versões anteriores precisam de uma instalação manual para receber o atualizador. A assinatura do atualizador é independente de Authenticode: ela protege o pacote de atualização, mas não remove avisos do Windows sobre editor desconhecido.

Related MCP server: whatsapp-web-mcp

MCP

Endpoint: https://wamcp.cappyfy.com/mcp/<session-id>

Transporte: Streamable HTTP sem estado. O ChatGPT usa OAuth 2.1 com PKCE S256 e registro dinâmico de cliente (DCR). Outros clientes podem usar o cabeçalho Bearer personalizado.

ChatGPT

  1. Ative o modo de desenvolvedor nas configurações do ChatGPT, se disponível para sua conta/workspace.

  2. Abra Plugins, use + e informe a URL MCP da sessão. Escolha OAuth, deixando Client ID e Client Secret vazios para registro automático.

  3. No WA MCP → Configurações → Conexões WhatsApp → conexão → ChatGPT, escolha Somente leitura ou Leitura e envio e gere um código temporário.

  4. Na página de autorização em wamcp.cappyfy.com, cole esse código e confirme.

O código é de uso único e expira em dez minutos. O access token dura uma hora; o refresh token é rotacionado, com autorização limitada a 90 dias. A lista Conexões autorizadas permite revogar a conexão imediatamente. O aplicativo e o túnel devem continuar funcionando no PC.

Isso disponibiliza um servidor compatível com plugins MCP do ChatGPT. A instalação na conta deve ser concluída pelo usuário; não representa publicação no diretório público da OpenAI. A disponibilidade da criação de plugins depende da conta e das políticas do workspace.

Metadados por sessão: /.well-known/oauth-protected-resource/mcp/<session-id>. Metadados do emissor: /.well-known/oauth-authorization-server. As ferramentas declaram os escopos OAuth, e get_profile identifica somente a sessão autorizada. O registro de clientes aceita apenas callbacks HTTPS conhecidos do ChatGPT, com correspondência exata no fluxo. Não é anunciado suporte a CIMD, private_key_jwt ou RFC 9207.

Outros clientes

{
  "mcpServers": {
    "whatsapp": {
      "url": "https://wamcp.cappyfy.com/mcp/SEU_ID",
      "headers": { "Authorization": "Bearer SEU_TOKEN" }
    }
  }
}

O formato acima é um exemplo; ajuste-o ao seu cliente MCP.

Ferramenta

Permissão

session_status

Leitura

get_profile

Leitura

list_chats

Leitura

get_messages

Leitura

get_media

Leitura

search_messages

Leitura

send_message

Leitura e envio

Tokens Bearer e tokens OAuth de acesso/renovação são aleatórios, armazenados por hash SHA-256, limitados a uma sessão e revogáveis. A interface cria tokens Bearer válidos por 90 dias. Ferramentas de envio só são anunciadas para tokens com essa permissão. Os registros DCR e seus segredos de cliente persistem no SQLite local para permitir reconexão após reiniciar o aplicativo.

Mensagens, áudios e arquivos

Para enviar texto, autorize a conexão com Leitura e envio e use send_message com o jid real de list_chats e o texto autorizado. Uma conexão existente de somente leitura precisa ser autorizada novamente com envio; atualizar o aplicativo não amplia suas permissões. Se o envio não for confirmado, consulte o histórico antes de repetir.

get_messages e search_messages incluem media com tipo, MIME, nome do arquivo, tamanho, duração e indicação de mensagem de voz quando disponíveis. Use get_media com jid e messageId (o campo id da mensagem) para baixar o anexo. Áudios são retornados como conteúdo de áudio MCP; documentos, imagens e vídeos como recursos binários incorporados, sem links públicos. O cliente MCP precisa suportar esses formatos para reproduzir ou salvar o conteúdo. Não há transcrição automática.

O download exige a sessão conectada, tem limite de 10 MiB e espera de até 30 segundos. Mídias antigas podem ter expirado no WhatsApp. Mensagens já armazenadas antes desta atualização não contêm os dados necessários ao download, salvo se forem sincronizadas novamente. Os dados de download persistem no SQLite; o conteúdo binário é baixado sob demanda e não é salvo em disco pelo servidor. Reinicie o aplicativo atualizado e atualize a lista de ferramentas no cliente para descobrir get_media.

Dados locais

%LOCALAPPDATA%\com.cappyfy.wamcp\

  • wamcp.sqlite: sessões, conversas, mensagens, hashes dos tokens e auditoria.

  • auth/: credenciais de aparelhos WhatsApp.

  • tunnel.token: credencial local do Cloudflare Tunnel.

  • media/<sessão>/<AAAA>/<MM>/: anexos das conversas.

O SQLite é criado automaticamente no PC da instalação. Nenhum histórico ou token é incluído no instalador ou enviado ao GitHub. Para backup, encerre o aplicativo e copie a pasta de dados. O banco não é criptografado; ele usa as proteções do perfil do Windows.

Túnel

Configure o hostname público para http://127.0.0.1:17382. O aplicativo inicia seu próprio processo cloudflared com um arquivo de token, sem instalar um serviço global do Windows.

Um só aplicativo: desktop e rede

O backend embutido escuta em uma única porta (0.0.0.0:17382) com o app web, a API, o MCP e o OAuth. A janela do Tauri abre http://127.0.0.1:17382/app/; outros computadores da rede abrem http://<ip-deste-pc>:17382/app/ no navegador (o endereço aparece em Configurações > Aplicativo). Todos entram com e-mail e senha; o primeiro administrador só pode ser criado no próprio computador. Iniciar com o Windows, túnel e atualização aparecem apenas na janela do aplicativo. Libere a porta 17382 no firewall do Windows para a rede local.

wamcp.cappyfy.com é o endereço desta implantação. Execute o conector em apenas um computador com estas sessões: réplicas com bancos diferentes não compartilham contas ou tokens. Para outra implantação, adapte publicUrl e configure um hostname/túnel próprio.

Eventos no ChatGPT

O servidor oferece message.created para novas mensagens recebidas, com filtro opcional por conversa e entrega HTTPS assinada. A assinatura é criada pelo ChatGPT somente quando o usuário pede monitoramento; a atualização não ativa automações por conta própria. Consulte MCP_EVENTS.md para limites, segurança e o teste completo após atualizar e reescanear o plugin.

Contribuindo

Quer contribuir com o WA MCP? Abaixo está o necessário para rodar o projeto localmente; para padrões de código, limites de arquivo, testes exigidos e o fluxo de PR, consulte CONTRIBUTING.md.

Requisitos: Windows x64, Node.js 24, Rust estável, Visual Studio Build Tools com C++ e WebView2.

npm ci
npm run desktop

Prévia web: execute npm run server (backend Rust em src-tauri/server) e npm run dev, e abra http://127.0.0.1:1420; o Vite encaminha a API para a porta 17382. No primeiro acesso local, crie o administrador.

npm run check
npm run test:e2e
npm run desktop:build

Arquitetura e qualidade

Arquitetura hexagonal: domínio puro, casos de uso com portas injetadas, adaptadores de entrada HTTP/MCP e de saída SQLite/WhatsApp. Consulte ARCHITECTURE.md.

  • TypeScript estrito na interface, ESLint, regras React Hooks e Prettier.

  • Limite físico de 300 linhas por arquivo de código, incluindo CSS e Rust.

  • Verificação automática de direção das dependências e consistência de versão.

  • Testes de autorização, isolamento, persistência, SDK MCP e interface com Playwright.

  • Rustfmt, Clippy com warnings tratados como erros e auditoria npm.

  • Dependabot semanal para npm, Cargo e Actions.

Versão e release

Formato: YY.MM.incremental. Primeira versão: 26.10.1. O incremental reinicia em 1 a cada mês. Para compatibilidade com SemVer/Tauri, meses de 1 a 9 não têm zero à esquerda nos metadados, por exemplo 27.1.1.

npm run format
cargo check --manifest-path src-tauri/Cargo.toml
git add .
git commit -m "feat: descreva a alteração"
git push origin SUA_BRANCH
gh pr create --base main

Trabalhe em uma branch e abra PR para main. A proteção da branch exige os checks quality e windows aprovados e a branch atualizada antes do merge, inclusive para administradores. Não envie diretamente para main nem crie tags para publicar.

O CI roda somente no PR. Depois do merge, Windows release consulta os resultados já aprovados do PR e executa apenas o bump automático e o build/publicação do instalador assinado, sem repetir testes, auditoria ou Clippy. A versão usa o mês UTC e o próximo incremental acima das versões existentes. O bump sincroniza os metadados apenas na cópia usada para compilar; não cria commits diretos na main protegida. A tag aponta para o commit mergeado. Antes de publicar, o fluxo confirma novamente que esse ainda é o commit atual e que o CI do PR segue aprovado. Tags avulsas, pushes sem PR e execução manual não publicam. Não há credenciais Cloudflare ou WhatsApp no CI.

O CI usa o secret TAURI_SIGNING_PRIVATE_KEY para assinar o instalador e publica .exe.sig e latest.json. A chave privada deve ser preservada fora do repositório; sua perda impede atualizar instalações que confiam na chave pública atual. O feed aponta para os artefatos da release, publicados juntos após todos os checks.

Limites desta versão

  • A integração usa whatsapp-rust, um cliente não oficial do WhatsApp Web, sem afiliação à Meta. Pode exigir novo pareamento após mudanças do serviço. Instalações que usavam a versão anterior (Baileys) precisam ler o QR de novo; conversas, contatos e histórico já salvos são mantidos.

  • O histórico depende do conteúdo disponibilizado pelo WhatsApp na sincronização; não há garantia de recuperar todo o histórico antigo.

  • Anexos são baixados sob demanda pelo MCP, até 10 MiB; disponibilidade depende do WhatsApp e da sincronização.

  • Envio MCP de texto; sem envio de mídia.

  • O ícone é próprio, inspirado em um balão verde de conversa.

Referências

Licença MIT.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    An MCP server that enables interaction with WhatsApp using the Baileys library and Streamable HTTP transport. It supports managing contacts, chats, and messages, while providing a web admin UI for QR code authentication and media handling.
    28
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to send and read WhatsApp messages, download media, and inspect chats, groups, and session status through the waxum REST API gateway over stdio or Streamable HTTP.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to read, search, and send personal WhatsApp messages and files through a locally linked device.
    20 npm
    MIT