Labsco
MCP SERVER

MCP Whatsapp

by Sealjay

Read, search and send on your own WhatsApp account — 42 tools, one Go binary, messages cached locally in SQLite.

Team Chat Platforms
Summary
The daemon has to be running for messages to be recorded, and that is the constraint to plan around.

Events only reach SQLite while `serve` is alive; after a gap, WhatsApp's own multidevice retention decides what can be recovered, and `request_sync` backfills a specific chat for shorter gaps. The author is direct about the security shape too: this is exactly the lethal-trifecta setup, so prompt injection arriving in an incoming message is a real exfiltration path, and log redaction is described as obfuscation rather than anonymisation.

What it is

A single-binary Go server wrapping whatsmeow to expose a personal WhatsApp account. It runs as a long-lived HTTP daemon on 127.0.0.1:8765 that MCP clients connect to, so closing and reopening your client reconnects rather than respawning a process. Messages are cached in local SQLite and only travel to the model when a tool is called.

What you get
  • Reading: `search_contacts`, `list_messages` with context windows, `list_chats`, `get_chat`, `get_message_context`, `download_media`, and `request_sync` to backfill one chat's history on demand
  • Sending: `send_message`, `send_file` with an optional view-once flag, `send_audio_message`, `send_contact_card`, and polls via `send_poll`, `send_poll_vote` and `get_poll_results`
  • Message actions: `mark_read`, `mark_chat_read`, `send_reaction`, `send_reply`, `edit_message`, `delete_message` and `send_typing`
  • Groups: `create_group`, `leave_group`, `list_groups`, `get_group_info`, `update_group_participants` for add, remove, promote and demote, `set_group_name`, `set_group_topic`, `set_group_announce`, `set_group_locked`, `get_group_invite_link` and `join_group_with_link`
  • Blocklist and privacy: `get_blocklist`, `block_contact`, `unblock_contact`, `send_presence`, `get_privacy_settings`, `set_privacy_setting` and `set_status_message`
  • Admin: `is_on_whatsapp` batch-checks numbers, `get_status` reports the connection, and `pairing_status` returns a structured setup state including the linking QR
Requirements

Go 1.25+ to build (`make build` writes `./bin/whatsapp-mcp`); the runtime needs only the binary. Pair once by starting the daemon and opening http://127.0.0.1:8765/pair to scan the QR with WhatsApp on your phone — the session persists to `store/whatsapp.db` and needs re-pairing roughly every 20 days. Clients connect over HTTP to http://127.0.0.1:8765/mcp. `WHATSAPP_MCP_MEDIA_ROOT` sets the only directory files may be read from or written to, defaulting to `./store/uploads/`. `-allow-remote` requires `WHATSAPP_MCP_TOKEN`. ffmpeg is optional, needed only to convert non-Opus audio for voice notes. Windows requires CGO.