Releases: joaohts/whatsapp-mcp
Releases · joaohts/whatsapp-mcp
Release list
v0.0.3
What's new
Multi-device support
Each install now identifies itself to WhatsApp with a unique linked-device name (default: WhatsAppMCP @ <hostname>, override via WHATSAPP_MCP_DEVICE_NAME). You can now keep the Mac DMG and the CLI/Pi daemon paired against the same WhatsApp account simultaneously — they show up as separate entries in WhatsApp → Settings → Linked Devices rather than booting each other out.
Group sender resolution (`@lid` → contact name)
Group messages from WhatsApp's newer privacy mode arrived as raw 228230418170085@lid IDs with no name attached. Now resolves to a human-readable sender_name field on every message:
- Schema:
contacts.lidcolumn + index; one-shot v1→v2 migration on first launch. - Capture:
mapContactreadscontact.lid+contact.jid;persistGroupsupserts every participant from group metadata;messages.upsertupserts the sender withmsg.pushName;chats.phoneNumberSharebridges `@lid`↔`@s.whatsapp.net` to copy address-book names across. - Backfill on startup: walks group chats and pulls metadata via Baileys so existing rows resolve too. Idempotent.
- Read path: every
get_chat_messages/search_messages/get_messageresponse now includessender_name— null only when the sender isn't in your address book and we haven't yet caught a live event carrying their pushName.
Installer hardening
postinstallskipselectron-builder install-app-depson Linux so headless Pi installs don't accidentally rebuildbetter-sqlite3against Electron's ABI. Override withWHATSAPP_MCP_FORCE_ELECTRON_REBUILD=1when developing the GUI on Linux.
Same caveats as v0.0.1/0.0.2
- macOS arm64, unsigned. First launch: right-click → Open to bypass Gatekeeper.
- Drag
WhatsAppMCP.appto /Applications, pair with your phone, click "Configurar Claude". - Local-only — no cloud, no telemetry, no third-party servers.
v0.0.2
Fixes
- Group sender attribution. The local store now records the sender JID for every incoming group message — previously these landed with
nullsender for any group using WhatsApp's newer@lidprivacy IDs, making "who said what" questions unanswerable. Verified end-to-end on a real account with 16k+ group messages. - One-shot backfill on first launch. Existing rows in your local store get repaired from the original protobuf — you keep your history with correct senders.
- Linux installs. The CLI variant (Pi / headless) no longer re-breaks
better-sqlite3on every `npm install` by rebuilding against Electron's ABI when Electron will never run.
Same as v0.0.1
- macOS arm64, unsigned. First launch: right-click → Open to bypass Gatekeeper.
- Drag `WhatsAppMCP.app` to /Applications, pair with your phone, click "Configurar Claude".
- Local-only — no cloud, no telemetry, no third-party servers. All data lives on your Mac.
v0.0.1 — first release
First public release of WhatsApp MCP for macOS. Read-only WhatsApp access for Claude Desktop and Claude Code, fully local.
Install (Apple Silicon Macs, macOS 14+)
- Download
WhatsAppMCP-0.0.1-arm64.dmgbelow - Open the DMG, drag WhatsAppMCP to Applications
- Right-click WhatsAppMCP in /Applications → Open the first time (unsigned build — macOS records the approval after that)
- Pair your WhatsApp (phone-number code or QR)
- Click Configurar Claude Desktop, then restart Claude Desktop
- Ask Claude something like "quais são minhas conversas não lidas do WhatsApp?"
Known caveats
- arm64 only. Intel Macs not supported.
- Unsigned. Right-click → Open on first launch, or System Settings → Privacy & Security → Open Anyway.
- Read-only. Never sends messages, never marks anything read, never changes your presence — by code structure, not just contract.
- WhatsApp can take a few seconds to push the first history chunks after pairing; the wizard waits.
What's in the DMG
- Electron + Baileys + SQLite (better-sqlite3), all bundled — zero system prerequisites
- pt-BR UI
- Per-tool toggles in Configurações
- Server-level prompt-injection posture sent in the MCP
instructionsfield - Notify-only update checks against GitHub Releases