Send and read WhatsApp messages via the whatsapp-mcp bridge.
Implementation: use the maintained fork
verygoodplugins/whatsapp-mcp, not upstreamlharries/whatsapp-mcp. Same architecture (Go whatsmeow bridge + Python MCP server, QR linked-device auth, localwhatsapp.db), but upstream went quiet afterApril 2025 (91 open issues / ~131 open PRs); the fork is actively maintained (CI/CD, call capture, media, LID resolution). This is still the only mature way to reach a personal WhatsApp number — every 2025–26 alternative (Meta Business Agent, Composio/Wati/360dialog MCP gateways) is Business-Cloud-API-only and can't touch personal threads. Tradeoffs are real and unchanged: unofficial → violates ToS + genuine account-ban risk, ~20-day QR re-auth, and protocol breakage that halts messaging until a maintainer fix is pulled + redeployed. See memory[[reference_whatsapp_connection_options]]. Not yet installed on Educloud (needs Go in the sandbox image).
Before any WhatsApp tool call
Check if the bridge is running:
curl -sf http://localhost:8080/api/send 2>/dev/null
If no response, start it:
nohup ~/whatsapp-mcp/whatsapp-bridge/bridge > /tmp/whatsapp-bridge.log 2>&1 &
sleep 8 # wait for connection + history sync
If the bridge fails with a QR code auth error, tell the user to run:
! cd ~/whatsapp-mcp/whatsapp-bridge && ./bridge
and scan the QR code with their phone (WhatsApp → Linked Devices → Link a Device). Auth lasts ~20 days.
Parsing the request
The user may say things like:
/whatsapp Andrei hey, the MG data is ready/whatsapp "Laborjust Sigstad Lambais" meeting tomorrow at 3pmsend a whatsapp to Frida saying hicheck whatsapp messages from Andrei
Extract:
- Who — contact name or group name
- Message — the text to send (if sending)
- Action — send message, read messages, or search contacts
Sending a message
- Use
mcp__whatsapp__search_contactsto find the recipient by name - For groups, use
mcp__whatsapp__list_chatsto find the group JID - Use
mcp__whatsapp__send_messagewith the phone number or JID
Reading messages
- Use
mcp__whatsapp__list_messagesto fetch recent messages - Use
mcp__whatsapp__get_direct_chat_by_contactfor a specific contact's chat
Project WhatsApp groups
Some projects have associated WhatsApp groups:
- serasa (projects/serasa): "SERASA Courts Project"
- connect (projects/connect): "LaborJust henrik lambais"
- procure (projects/procure): "Corruption Red Flags"
- audit (projects/audit): "Legal Effects of Audits"
- electoral-justice (projects/electoral-justice): "Electoral justice"
- segredo (projects/segredo): Andrei Leite (direct chat)
Before sending
Show the user the recipient and message, and ask for confirmation before sending — unless the user's request is unambiguous (explicit recipient + explicit message text).
Gotchas
- If a contact is not found, try partial name matches or ask the user for the phone number.
- Group JIDs end in
@g.us, individual contacts end in@s.whatsapp.net. - Phone numbers need country code without + or spaces (e.g., "4748142870" for Norway).
- The bridge must have seen a chat to list it — if a group doesn't show up, ask the user to send a message there from their phone first.