wacli.me
OfficialEnables reading, searching, and optionally sending WhatsApp messages by driving the wacli CLI against a linked WhatsApp account, all exposed through an MCP gateway with per-tenant isolation.
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., "@wacli.mesearch my WhatsApp chats for the wifi password"
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.
wacli.me
Hosted MCP gateway in front of the wacli WhatsApp CLI.
The idea: someone links their WhatsApp account once (QR, like WhatsApp Web) and gets a URL plus a bearer token. Any MCP client can then read, search — and optionally send — without running anything locally.
Status: public alpha. Single host, single process. Live at https://wacli.me.
MIT licensed. Self-hosting is a first-class path — see "Running" below.
Layout
server/ Node MCP server (Streamable HTTP) + static file serving
site/ website sources (pages + layout + assets)
web/ generated site, built from site/ by scripts/build.mjs — never edit
config/ tenants.json (gitignored) — token -> store mapping
bin/wacli pinned wacli binary, isolated from any system install
stores/ one wacli store directory per tenant (gitignored)
scripts/ start/stop/tunnel helpersRelated MCP server: whatsapp-mcp
Endpoints
Path | Purpose |
| landing page |
| MCP over Streamable HTTP, |
| liveness + tenant count |
| self-service linking: live QR, issues a token |
| OAuth 2.1 discovery — clients fetch their own credentials |
Tenants
config/tenants.json:
{
"tenants": [
{ "id": "demo", "token": "<32 random bytes, hex>", "store": "/Users/<user>/wacli-me/stores/demo", "allowSend": false }
]
}The file is re-read every 5 seconds — adding a tenant needs no restart. A token maps to exactly one
store directory; tools are constructed per request against that store, so two tenants cannot see each
other's data. allowSend is what registers the send_message tool at all; leave it false unless
the account owner explicitly asked for write access.
Generate a token with openssl rand -hex 32.
Running
npm install --prefix server
node scripts/build.mjs # site/ -> web/
PORT=8787 HOST=127.0.0.1 node server/server.mjsEnvironment:
Variable | Default | Meaning |
|
| listen port |
|
| bind address — keep loopback, expose via tunnel |
|
| wacli binary |
|
| tenant file |
Linking an account
bin/wacli --store stores/<tenant> auth # prints a QR, scan it on the phone
bin/wacli --store stores/<tenant> sync # backfill history (long-running; run as a daemon)Without a sync daemon the store only holds what was fetched during the last run.
Security notes
Bind to loopback and publish through a tunnel; never expose the port directly.
Every MCP request needs a valid bearer token; tokens are compared in constant time.
Reads run wacli with
--read-only, so a compromised tool call cannot mutate the store.The QR link is a linked device. Whoever holds the store can read that account's messages — treat store directories and tenant tokens as credentials.
License
MIT, see LICENSE. site/assets/qrcode.min.js is Kazuhiko Arase's
qrcode-generator, vendored unchanged (MIT). wacli itself is a separate MIT project — this repository only drives it.
Linking an account uses an unofficial WhatsApp client. That is against WhatsApp's terms of service, and Meta may block a number for it. Run it on accounts you own, and tell your users the same.
This server cannot be deployed
Maintenance
Related MCP Connectors
Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.
WhatsApp (Web + Business API), SMS, contacts, and call records via 2Chat's MCP server.
Drive WhatsApp from any MCP client: pair devices, send text and media, manage contacts and groups.
WhatsMCP connects Claude and other MCP-compatible AI agents directly to WhatsApp. Send and receive text, images, documents, and voice notes; manage groups (create, add/remove members, promote admins); look up contacts and profiles; follow channels; and read call and message history — all through a standard MCP interface. For voice use cases, WhatsMCP offers SIP-based calling plans (inbound-only, or full inbound/outbound) so AI voice agents can answer and place WhatsApp calls, plus low-latency WebSocket integrations with voice agent providers like ElevenLabs. Multiple WhatsApp accounts can be paired and managed per workspace, with webhook support for real-time inbound message delivery to your own infrastructure.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to list, read, search, and send WhatsApp messages via a persistent WebSocket connection with local SQLite storage.20 npmAGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables sending WhatsApp messages from MCP clients using a personal WhatsApp account via WebSocket protocol, without needing the Business API or browser automation.20 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients to read, search, and send WhatsApp messages with a server-enforced send gate for safety.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables programmatic WhatsApp automation through MCP, including sending messages, managing chats and contacts, searching conversation history, and exchanging media files.MIT