whatsapp_sendLABSCO SUMMARY
Five tools instead of forty — the same reach, far less context.
The migration note says it directly: 40 granular tools became 5, with behaviour selected by an argument. For a model that has to hold every tool definition in context, that is the difference between usable and expensive. The thing to plan for is authentication — Basic Auth is inherited from REST and covers local clients, while remote connectors like Claude's need the OAuth path enabled explicitly, and OAuth here does not protect the REST or UI routes.
What it is
A self-hosted WhatsApp gateway whose REST server also serves an MCP endpoint. The tool design is deliberate: rather than one tool per operation, five tools take a type or action argument, which keeps the tool list short in the model's context.
What you get
- Sending of every message kind through one tool:
text,image,video,audio,document,sticker,location,contact,poll,linkandforward—whatsapp_send - Message operations: react, edit, revoke, delete, mark read, mark played, star, unstar and download media —
whatsapp_message - Chats and contacts listed, message history read, and chats archived —
whatsapp_chat - Full group administration: create, join by link, leave, read info and participants, add, remove, promote and demote, manage the invite link, set name, topic and settings, and handle join requests —
whatsapp_group - Account state: status, QR and code login, logout and reconnect —
whatsapp_app - Multi-device support, where the
X-Device-Idheader on the connection picks the device for every call, overridable per call with adevice_idargument
Requirements
Your own server running ./whatsapp rest — MCP is served by the REST process itself at http://localhost:3000/mcp over streamable HTTP, enabled by default and turned off with MCP_ENABLED=false. It inherits the REST server's Basic Auth, so the client sends the same Authorization header. For remote clients that cannot attach one, OAuth 2.1 is available but off by default: set APP_BASIC_AUTH, MCP_ENABLED=true, MCP_OAUTH_ENABLED=true and a public HTTPS MCP_OAUTH_ISSUER_URL. And a WhatsApp account to link, via QR or pairing code.
Setup effort
Run a container — pull the image, run it, then point your client at its URL
USE CASES
Sending notifications from an agent workflow
One tool covers text, images, documents and locations — pick the type in the call rather than choosing between tools.
Handling a group's membership
Read the participant list, add or remove people, promote an admin and update the invite link, all through the group tool's action argument.
Working through a backlog of chats
List the chats, read the messages in the ones that matter, mark them read and archive what is done.
Running several WhatsApp numbers off one server
Set X-Device-Id on the client connection to select the default device, and pass device_id on individual calls that need a different one.
5 tools
Listed in project docs. Your client may show a different list.
whatsapp_messagewhatsapp_chatwhatsapp_groupwhatsapp_appBEFORE YOU INSTALL
What to know first
Tools you get
5 tools named in the project's documentation. Each tool takes a type or action argument, covering 44 operations in total. MCP_ENABLED=false turns the MCP server off.
Requires
- Docker — or, to run from source, Go 1.26+ with FFmpeg and libwebp
- A WhatsApp account to link as a device
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Pull the image, run it, then point your client at its URL.
Server setup
Run the server from the published Docker image (Docker Hub: aldinokemal2104/go-whatsapp-web-multidevice; GHCR: ghcr.io/aldinokemal/go-whatsapp-web-multidevice):
docker volume create whatsapp-storages
docker volume create whatsapp-statics
docker run --detach --publish 3000:3000 --name whatsapp --restart always --volume whatsapp-storages:/app/storages --volume whatsapp-statics:/app/statics aldinokemal2104/go-whatsapp-web-multidevice rest --basic-auth=user:secretOr run it from source instead (needs Go 1.26+, FFmpeg and libwebp):
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
cd go-whatsapp-web-multidevice/src
go run . rest --basic-auth=user:secretPick your own user:password for --basic-auth. The client block below sends it as Authorization: Basic followed by the base64 of that pair (dXNlcjpzZWNyZXQ= is user:secret), so update both together
Open http://localhost:3000 and log your WhatsApp device in with the QR code or pairing code
Add the client block below. MCP is served by the same rest process at http://localhost:3000/mcp, with no separate command
MCP Clients
Any MCP client — Basic auth
{
"mcpServers": {
"whatsapp": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Basic dXNlcjpzZWNyZXQ="
}
}
}
}