Skip to main content
Glama
wacli-me

wacli.me

Official

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 helpers

Related MCP server: whatsapp-mcp

Endpoints

Path

Purpose

/

landing page

/mcp

MCP over Streamable HTTP, Authorization: Bearer …

/healthz

liveness + tenant count

/connect

self-service linking: live QR, issues a token

/.well-known/oauth-*

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.mjs

Environment:

Variable

Default

Meaning

PORT

8787

listen port

HOST

127.0.0.1

bind address — keep loopback, expose via tunnel

WACLI_BIN

./bin/wacli

wacli binary

WACLI_ME_TENANTS

./config/tenants.json

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.

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to list, read, search, and send WhatsApp messages via a persistent WebSocket connection with local SQLite storage.
    20 npm
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables sending WhatsApp messages from MCP clients using a personal WhatsApp account via WebSocket protocol, without needing the Business API or browser automation.
    20 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP clients to read, search, and send WhatsApp messages with a server-enforced send gate for safety.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables programmatic WhatsApp automation through MCP, including sending messages, managing chats and contacts, searching conversation history, and exchanging media files.
    MIT