ZapMCP
Provides read-only access to WhatsApp Desktop for Mac, enabling listing conversations, reading messages from a period, searching by words, and opening images, documents, and transcribed audio.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ZapMCPsummarize my WhatsApp chat with João from yesterday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZapMCP
Dá ao Claude, ao Codex e a outros assistentes compatíveis com MCP acesso de leitura ao WhatsApp Desktop do Mac: conversas, imagens, documentos e áudios transcritos. O ZapMCP roda no próprio Mac, não se conecta aos servidores do WhatsApp e nunca altera a pasta do WhatsApp.
A instalação abaixo é a do Claude Desktop, o caminho mais completo e testado. Para outros assistentes, veja Outros assistentes.
O que dá para pedir
"O que ficou combinado no grupo da obra esta semana?"
"Resuma os áudios que a Ana me mandou ontem."
"Ache a mensagem em que falaram do orçamento de março e leia o PDF que veio junto."
"Quem pediu para remarcar a reunião, e para quando?"
O assistente escolhe as ferramentas: lista as conversas, lê as mensagens de um período, busca por palavras, abre imagens e documentos e transcreve áudios.
Related MCP server: WhatsApp MCP Server
Como funciona
WhatsApp Desktop ──cópia──▶ indexador ──▶ índice local ◀── servidor MCP ◀── Claude, Codex…O ZapMCP copia o banco de dados local do WhatsApp e monta um índice próprio, com busca.
Um servidor MCP oferece ao assistente ferramentas para consultar esse índice.
Os áudios são transcritos no Mac com whisper.cpp.
Só leitura: o ZapMCP não envia mensagens.
Requisitos
Mac com Apple Silicon (M1 ou mais novo). Em Mac com Intel não foi testado: a biblioteca de transcrição não tem versão pronta para Intel.
WhatsApp Desktop, o app nativo, com a conta conectada.
Claude Desktop, ou outro assistente com suporte a MCP.
uv e Node.js, pelo Homebrew:
brew install uv node. O Homebrew também instala as ferramentas de linha de comando da Apple, usadas para compilar o lançador.
Instalação
São três passos. O terceiro, liberar o acesso, só é feito na primeira instalação, e sem ele o macOS fica pedindo permissão.
1. Baixar e empacotar
git clone https://github.com/pedrosoutom/zapmcp.git
cd zapmcp
makeO make compila o lançador do ZapMCP (um programa pequeno, em launcher/), gera
dist/ZapMCP.mcpb e mostra os próximos passos.
2. Instalar no Claude Desktop
open dist/ZapMCP.mcpbO Claude Desktop abre a tela da extensão: clique em Instalar. Outro jeito é arrastar o arquivo para Ajustes > Extensões. Nos ajustes da extensão dá para ligar ou desligar a transcrição automática.
3. Liberar o acesso uma vez só
A pasta do WhatsApp é protegida pelo macOS. Sem permissão, o macOS pergunta de tempos em tempos se
o zapmcp pode "acessar dados de outros apps", e o "Permitir" vale só por um tempo. Para não ser
mais perguntado, dê Acesso Total ao Disco ao lançador do ZapMCP, o arquivo zapmcp que veio na
extensão. Ele é quem inicia o servidor, então a permissão fica só com o ZapMCP, e não com o uv ou
com o Claude.
make acessoO comando abre o painel Ajustes do Sistema > Privacidade e Segurança > Acesso Total ao Disco e
uma janela do Finder com o arquivo zapmcp selecionado. Arraste o arquivo para a lista, confira se a
chave ficou ligada e confirme com sua senha ou o Touch ID. Às vezes o item não aparece na lista, mas
a permissão vale mesmo assim.
Sem o make: no painel, clique em +, aperte Cmd+Shift+G, cole o caminho abaixo e ligue a chave.
~/Library/Application Support/Claude/Claude Extensions/local.mcpb.pedro-souto.zapmcp/bin/zapmcpSe você pular este passo, o ZapMCP percebe e o Claude avisa na conversa como liberar. Deu certo quando o macOS para de perguntar e o aviso não aparece mais.
Primeiro uso
Peça algo ao Claude sobre suas conversas. Na primeira vez:
o Claude Desktop pede para você aprovar as ferramentas do ZapMCP;
o
uvbaixa o Python e as dependências, então a primeira resposta demora mais;se o acesso ainda não foi liberado, o macOS pergunta se o
zapmcppode acessar dados de outros apps (clique em Permitir) e o Claude explica como liberar de vez;o ZapMCP monta o índice (cerca de 10 segundos num M1) e passa a atualizá-lo a cada 5 minutos;
se a transcrição estiver ligada, o modelo de transcrição (0,6 GB) é baixado uma vez do Hugging Face. Depois, os áudios dos últimos 7 dias e cada áudio novo são transcritos em segundo plano, enquanto o Claude está aberto. Grupos arquivados ficam de fora e, na bateria, só são transcritos os áudios que o Claude pede.
Atualizar
git pull
makeInstale o novo dist/ZapMCP.mcpb no Claude Desktop e clique em atualizar. A permissão continua
valendo, a menos que o lançador tenha mudado (launcher/zapmcp.c). Nesse caso, libere de novo.
Quando sai uma versão nova, o assistente avisa na conversa, no máximo uma vez por dia, com o link das novidades. O aviso pode ser desligado nos ajustes da extensão ("Avisar sobre versões novas").
Outros assistentes (Codex, Cursor e outros)
O ZapMCP é um servidor MCP padrão, que roda no Mac e conversa pela entrada e saída do processo (stdio). Qualquer assistente que aceite servidores MCP locais pode usá-lo com este comando:
/opt/homebrew/bin/uv --directory /caminho/para/zapmcp run zapmcp serveEle foi testado com um cliente MCP genérico; com o Codex, ainda não. No Codex, a configuração fica
em ~/.codex/config.toml, que vale para o Codex no terminal, na extensão do editor e no app:
[mcp_servers.zapmcp]
command = "/opt/homebrew/bin/uv"
args = ["--directory", "/caminho/para/zapmcp", "run", "zapmcp", "serve"]
startup_timeout_sec = 60
tool_timeout_sec = 120Os tempos maiores que o padrão evitam que o Codex desista: na primeira vez, o servidor instala as
dependências e monta o índice antes de responder, e transcribe_audio espera até 90 segundos.
O que muda fora do Claude Desktop:
O macOS cobra o acesso do app que roda o assistente: o app de terminal, para quem usa o Codex no terminal, ou o próprio app, nos assistentes de desktop. O Acesso Total ao Disco vai para esse app e vale para tudo o que ele rodar. O lançador só faz diferença no Claude Desktop.
Os ajustes da extensão viram variáveis de ambiente, como
ZAPMCP_TRANSCRIBE=0. A lista está no guia de uso.Nem todo assistente mostra as imagens que o
view_imagesdevolve. Não testamos fora do Claude.Para atualizar, basta
git pullna pasta do ZapMCP e reiniciar o assistente.
Privacidade
O ZapMCP lê uma cópia do banco do WhatsApp e guarda o índice, as transcrições e o modelo em
~/Library/Application Support/zapmcp. Essa pasta não é criptografada.Os áudios são transcritos no Mac e não saem dele.
O que as ferramentas devolvem ao assistente (mensagens, transcrições, imagens, documentos) entra na conversa com ele, como qualquer texto que você cola nela.
Uma vez por dia, o ZapMCP pergunta ao GitHub qual é a última versão. A consulta revela ao GitHub só o seu endereço IP e a versão instalada, e pode ser desligada nos ajustes da extensão.
Desinstalar
Remova a extensão em Ajustes > Extensões no Claude Desktop.
Apague os dados do ZapMCP:
rm -rf ~/Library/Application\ Support/zapmcp.Se o
zapmcpaparecer na lista de Acesso Total ao Disco, remova-o.
Problemas comuns
Sintoma | O que fazer |
O macOS continua perguntando se pode acessar "dados de outros apps" | Falta o Acesso Total ao Disco para o lançador, ou ele foi recompilado. Rode |
As ferramentas não respondem na primeira vez | Espere a instalação das dependências e reinicie a extensão em Ajustes > Extensões. |
Erro "não encontrei o uv" | Instale com |
Para usar no Claude Code ou pelo terminal, ajustar a transcrição e conhecer os limites, veja o guia de uso.
Avisos
O ZapMCP lê um banco interno do WhatsApp, sem documentação. Uma atualização do app pode quebrar a leitura.
Projeto independente, sem relação com o WhatsApp ou a Meta.
Licença
Available Tools
6 toolsget_messagesGet MessagesBRead-only
Mensagens de uma conversa num período, em ordem cronológica, uma por linha.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | id da conversa (de list_chats) ou nome aproximado. | |
| limit | No | Máximo de mensagens; se passar, vêm as mais recentes. | |
| since | No | Início do período. Use 7d, 24h, 2w, hoje, ontem, AAAA-MM-DD ou AAAA-MM-DD HH:MM. | 7d |
| until | No | Data ou período relativo. Use 7d, 24h, 2w, hoje, ontem, AAAA-MM-DD ou AAAA-MM-DD HH:MM. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
list_chatsList ChatsBRead-only
Lista conversas do WhatsApp (grupos e individuais): id, nome, tipo, última mensagem e total de mensagens.
Sem query, vêm as mais recentes. Com query, as de nome mais parecido.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Parte do nome da conversa; aceita nome aproximado. Vazio lista as mais recentes. | |
| active_since | No | Data ou período relativo. Use 7d, 24h, 2w, hoje, ontem, AAAA-MM-DD ou AAAA-MM-DD HH:MM. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
read_documentRead DocumentARead-only
Lê um documento anexado: PDF, Word, Excel, PowerPoint, HTML, texto ou a lista de um ZIP.
O texto vem em partes de até ~15 mil caracteres. Páginas escaneadas de PDF vêm como imagem.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Número do documento, como aparece em [documento #456]. | |
| part | No | Parte a ler; documentos longos vêm em partes. |
searchSearchARead-only
Busca por palavras nas mensagens, das mais relevantes para as menos, com as mensagens ao redor de cada uma.
Encontra palavras, não significado: para "prazo", tente também "entrega", "sexta" etc.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | No | Restringe a uma conversa: id ou nome aproximado. | |
| limit | No | ||
| query | Yes | Palavras a buscar (todas precisam aparecer). Aceita "frase exata", prefixo* e OR. Ignora acentos. | |
| since | No | Data ou período relativo. Use 7d, 24h, 2w, hoje, ontem, AAAA-MM-DD ou AAAA-MM-DD HH:MM. | |
| until | No | Data ou período relativo. Use 7d, 24h, 2w, hoje, ontem, AAAA-MM-DD ou AAAA-MM-DD HH:MM. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
transcribe_audioTranscribe AudioARead-only
Transcreve na hora áudios que ainda não foram transcritos. Espera até ~1,5 min pelo resultado.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Números dos áudios, como em [áudio #123 · ainda não transcrito]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
view_imagesView ImagesBRead-only
Mostra imagens das conversas, com conversa, autor, data e legenda de cada uma.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Números das imagens, como aparecem em [imagem #123]. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.3.8- First observed
get_messages - First observed
list_chats - First observed
read_document - First observed
search - First observed
transcribe_audio - First observed
view_images
TDQS
Scored across 6 tools
Each tool targets a distinct retrieval operation: chat listing, chronological messages, keyword search, images, documents, and audio. Minor overlap exists between `get_messages` and `search` (both return message text) and between `view_images`/`read_document` (both handle attachments), but the descriptions clearly delineate ranked search vs. time-ordered retrieval and visual vs. textual attachment reading.
Five of six tools follow a clean verb_noun snake_case pattern (list_chats, get_messages, view_images, read_document, transcribe_audio). The bare verb `search` is the only deviation, though its meaning remains clear in context.
Six tools is well-scoped for a WhatsApp read/analysis server, with each tool covering a distinct content type (chats, messages, search, images, documents, audio). No redundant or filler tools are present.
The server covers the full read-side surface of WhatsApp data: chat discovery, message history, search, and all major attachment types including OCR/transcription fallbacks. Write operations (sending messages) and explicit contact/metadata lookup are absent, but for an analysis-oriented server these are minor, workable gaps.
Maintenance
Related MCP Connectors
Free WhatsApp MCP server for ChatGPT and Claude: read and search chats, every send you approve.
Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.
Your own WhatsApp in Claude and ChatGPT: read chats, draft replies, send messages you approve.
Ask questions across your WhatsApp inbox from Claude, ChatGPT, Cursor or any MCP client.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables Claude to interact with WhatsApp on macOS through the Model Context Protocol. It allows reading messages, searching contacts, listing chats, and sending replies via natural conversation.828 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceGives Claude Desktop read-only access to your WhatsApp chats and message history via a local MCP server.5 npm4MIT
- AlicenseAqualityDmaintenanceEnables Claude to read and search WhatsApp messages, transcribe voice notes, and analyze images locally through a read-only bridge.19MIT
- AlicenseNot gradedqualityBmaintenanceProvides Claude with read-only access to your WhatsApp chat history entirely on your local machine, enabling natural language search, summarization, and retrieval of messages without sending data to the cloud.14 npmMIT