Acessa mensagens, resume o dia, ou envia mensagem pelo WhatsApp. Usa o MCP whatsapp_* para tudo.
O caminho do servidor MCP abaixo é um exemplo (
~/whatsapp-mcp-skill). Troque pelo caminho onde você clonou o repositório.
Antes de executar
Dois erros diferentes, dois tratamentos diferentes. Leia a mensagem antes de agir.
1. Conflito de browser / lock (NÃO é problema de auth)
Sintoma: erro com browser is already running, SingletonLock, ou userDataDir.
Causa: sobrou um Chrome órfão de uma sessão anterior travando o lock, ou subiu mais de uma instância do servidor MCP. O index.js já limpa locks órfãos sozinho no próximo start, então na maioria das vezes basta chamar a ferramenta de novo que ele se recupera.
Se persistir, mate os processos presos e os locks, depois tente de novo:
pkill -f "whatsapp-mcp-skill/index.js"; pkill -f "wwebjs_auth/session"
rm -f ~/whatsapp-mcp-skill/.wwebjs_auth/session/Singleton*
NUNCA rode auth.js para resolver isso. A sessão continua válida, o problema é só o lock.
2. Falha de autenticação (sessão perdida)
Sintoma: auth_failure, not authenticated, ou QR pedindo novo pareamento. Só aqui o auth.js entra.
Pré-requisito: o servidor MCP NÃO pode estar usando a sessão ao mesmo tempo. Pare primeiro (pkill -f "whatsapp-mcp-skill/index.js"), depois:
"WhatsApp não autenticado. Abra um terminal separado e rode:
node ~/whatsapp-mcp-skill/auth.jsQuando aparecer o QR code, escaneie no celular: WhatsApp > Dispositivos vinculados > Vincular dispositivo. Quando aparecerConnected., pode fechar o terminal e tentar de novo."
Intake
Se houver um nome de chat no argumento (ex: /whatsapp Stefano), usar como alvo e perguntar apenas: ler mensagens ou mandar mensagem?
Se invocada sem argumento, perguntar antes de executar qualquer ferramenta:
- O que você quer fazer? (ler mensagens / resumo do dia / mandar mensagem)
- (Se ler ou mandar) De quem ou qual chat?
- (Se ler) Quantas mensagens? (padrão: 30)
Execução por caso de uso
Ler mensagens de um chat específico
whatsapp_list_chats(limit: 30) para localizar o nome exato do chat- Confirmar o match se houver ambiguidade (ex: dois contatos com nome parecido)
whatsapp_get_messagescom o nome exato e o limit solicitado (padrão: 30)- Apresentar no formato:
[HH:MM] Nome: mensagem
Resumo do que chegou hoje
whatsapp_daily_summarycominclude_groups: falsepor padrão- Se pedir grupos explicitamente, rodar com
include_groups: true - Agrupar por remetente e destacar chats com mais de 3 mensagens
Mandar mensagem
whatsapp_list_chatspara localizar o nome exato do chat- Mostrar o nome encontrado e o conteúdo da mensagem para confirmar antes de enviar
- Só após confirmação explícita:
whatsapp_send_messagecom o nome exato - Confirmar o envio com o
messageIdretornado
Ver chats disponíveis
whatsapp_list_chatscom limit padrão 20 (ou mais se solicitado)- Listar: nome, não lidas, última mensagem, se é grupo
Regras
- Nunca enviar mensagem sem confirmação explícita do destinatário e conteúdo
list_chatssempre antes deget_messagesousend_message-- o servidor exige match exato- Grupos excluídos do daily_summary por padrão
- Não inferir chats por apelido -- usar sempre o nome retornado pelo
list_chats
Transcrição de áudio (opcional)
Áudios (ptt/audio) são transcritos automaticamente se o Whisper estiver instalado. Sem Whisper, áudios aparecem como [Áudio - erro: ...] e o resto funciona normal. Para apontar um binário específico, defina WHISPER_PATH no ambiente do servidor MCP.