WhatsApp MCP server: the three kinds

Three different things are called a WhatsApp MCP server. One of them can cost you your number. This page says which is which, then installs the one that needs no number of your own.

What is a WhatsApp MCP server?

An MCP server that hands an AI agent WhatsApp as a tool. There are three kinds and they are not interchangeable: one logs into your personal account through an unofficial client, one drives a WhatsApp Business account of your own through Meta's Cloud API, and one borrows a sender somebody else has already had approved.

The three kinds, and what each can do

KindWhat it connects toCan read your chatsNeeds your own numberThe catch
Unofficial client
QR-linked, usually built on whatsmeow or Baileys
Your personal WhatsApp, as a linked device Yes Yes — your own, personal one WhatsApp's terms do not permit it, and the number can be banned
Your own Cloud API A WhatsApp Business account you registered No — only conversations on that business number Yes, plus business verification and approved templates Days of setup before the first message, and a template review each time the wording changes
A borrowed sender
what @jabee/mcp is
Jabee's approved sender No No It asks and tells your own verified people. It cannot reach your customers

Why the ban risk is named first

The GitHub projects you find by searching for whatsapp mcp are mostly the first kind: a Go or Node client that scans a QR code, registers as a linked device, stores your history in a local SQLite file and exposes it as MCP tools. They are genuinely impressive, and several of them say the risk out loud in their own READMEs.

The risk is not the software, it is the account. WhatsApp's terms do not permit third-party clients, and the enforcement lands on the phone number — which is the number your family messages you on. That is the trade: a personal account is the only way to read your own chats from an agent, and it is also the only thing at stake.

This is not a disinterested opinion and it would be silly to pretend otherwise: Jabee sells the third kind. The rule it keeps for itself is in the open — no unofficial library has ever been in this product, because the first portfolio that tried one is how the lesson was learned. See how Jabee compares.

Install the one with no number of your own

npx @jabee/mcp, or ai.jabee/mcp if your client installs from the official MCP registry. Make a key under Management, then Approvals at app.jabee.ai — it begins jak_ and is shown once:

JABEE_API_KEY=jak_... npx @jabee/mcp

Then in your MCP client's configuration, which is the same three lines whichever client it is:

{
  "mcpServers": {
    "jabee": {
      "command": "npx",
      "args": ["-y", "@jabee/mcp"],
      "env": { "JABEE_API_KEY": "jak_..." }
    }
  }
}

That file is .mcp.json in a project for Claude Code, the MCP settings for Claude Desktop, and ~/.codex/config.toml in TOML form for Codex. Anything that speaks MCP over stdio can run it.

The three tools

Agents do not call tools they were not told about. Put this in your CLAUDE.md, or whatever your agent reads:

When a long task finishes, call tell_person with one line on what
changed. Before anything irreversible — a force push, a production
deploy, a migration, deleting a branch, spending money — call
ask_person and wait for the answer.

The Claude Code permission prompt, on your phone

The same package ships a second entry point. As a Claude Code channel, the permission prompt itself arrives on WhatsApp with Approve, Skip and Edit, and the first answer wins — keyboard or phone, whichever you reach first:

{
  "mcpServers": {
    "jabee": {
      "command": "npx",
      "args": ["-y", "--package=@jabee/mcp", "jabee-channel"],
      "env": { "JABEE_API_KEY": "jak_..." }
    }
  }
}
JABEE_API_KEY=jak_... claude --dangerously-load-development-channels server:jabee

The flag is required and that is not our choice: channels are a research preview, and during it Claude Code registers only channels on an Anthropic-maintained allowlist or an organisation's own. Without one, the channel is silently not registered. Full page: Claude Code on WhatsApp.

Which one you actually want

What you are trying to doUse
Read, search or summarise your own WhatsApp historyAn unofficial client, knowing the number is at risk. No official route can do this
Have an agent ask you before it does something irreversible@jabee/mcp
Be told on WhatsApp when a long run finishes@jabee/mcp, or a heartbeat check for a job that might not finish at all
Message your own customers at scale from your brandYour own WhatsApp Business account. Jabee runs that for you if you would rather not build it
One notification to one phone, for freeNot this. CallMeBot's free API and ntfy exist, and $29 is not worth paying for one line a week

Limits worth knowing before you build on it

Questions

Can a WhatsApp MCP server get my number banned?

The QR-linked kind can. WhatsApp's terms do not permit unofficial clients and the enforcement lands on the number, not the software. The other two kinds send over Meta's own API, where sending is the point.

Which one can read my own messages?

Only the unofficial kind. Meta's API has no access to your personal chats, so no official route — Jabee included — can read them. Anything that offers to is in the first column of the table above.

Does this work with Codex and other clients?

Yes. It is stdio MCP with no client-specific behaviour: Claude Code, Claude Desktop, Codex and anything else that speaks the protocol. The Claude Code channel is the one piece that is client-specific.

Is it open source?

The package is MIT and published on npm as @jabee/mcp, and listed in the official MCP registry as ai.jabee/mcp — a domain namespace, which means the registry checked that whoever published it controls jabee.ai. The service behind it is not open source: it is a WhatsApp sender with a Meta-approved template on it, which is the part you cannot npm-install.

What happens if nobody answers?

The request expires rather than hanging your agent for ever, and check_approval says so. For the Claude Code channel, an unanswered prompt sends no verdict at all — the terminal dialog is still waiting, because an invented denial would kill a job no person refused.