Claude Code and Claude Desktop via MCP

WhatsApp in Claude: the ZapZap MCP server in Claude Code and Claude Desktop

Claude Code and Claude Desktop speak MCP (Model Context Protocol), the protocol that lets an assistant call tools on a local server. ZapZap maintains an open-source MCP server (github.com/zapzapapi/zapzap-mcp, MIT license) with 25 tools: send text, media, polls and buttons, check numbers, read history, manage groups and webhooks. You talk, and Claude calls the API for you.

Updated on

Why connect

For people building with AI, the gain is to stop pasting documentation and call WhatsApp straight from the conversation: ask Claude to list your instances, check whether a customer list is on WhatsApp, read what came in and draft the reply for you to approve. With ZAPZAP_READ_ONLY=true the server exposes only read tools, ideal for dashboards and reports. ZapZap connects numbers through an unofficial channel: WhatsApp may limit or block any number, so pacing, consent and warm-up matter. It costs R$15 per active number per month, prepaid, with no per-message fee, and you start with a welcome credit when you verify your phone, subject to the current campaign.

Step by step

  1. 1

    Generate the key and connect a number

    In the dashboard (app.zapzapapi.com), open Settings > API and copy the API Key and API Secret. Create an instance and connect the number by QR code. Export both keys in your terminal as ZAPZAP_API_KEY and ZAPZAP_API_SECRET: they go to the server's environment, never into the prompt.

  2. 2

    Clone and build the MCP server

    You need Node.js 18 or newer. Run git clone https://github.com/zapzapapi/zapzap-mcp.git and, inside the folder, npm install and npm run build. The repository README mentions npx -y zapzap-mcp, but on 2026-11-11 the package is not yet published on npm (the registry returns 404). The route that works today is to clone, build and point the command at dist/src/index.js.

  3. 3

    Register it in Claude Code

    Use claude mcp add with the environment variables and the -- separator before the command, as in the Claude Code documentation (read on 2026-11-11): claude mcp add --env ZAPZAP_API_KEY=... --env ZAPZAP_API_SECRET=... --transport stdio zapzap -- node /path/zapzap-mcp/dist/src/index.js. The default scope is local (only you, in this project); -s project writes to the repository's .mcp.json, which goes into version control, so never put the key in it. Confirm with claude mcp list and, inside Claude Code, with /mcp.

  4. 4

    Or register it in Claude Desktop

    In Settings > Developer > Edit Config, edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude; Windows: %APPDATA%\Claude) and add mcpServers.zapzap with command node, args pointing to dist/src/index.js (absolute path) and env with the two keys. Quit Claude Desktop completely and open it again, as the MCP guide says (read on 2026-11-11).

  5. 5

    Test with read tools only

    Ask: "list my instances and tell me which one is connected" and then "check whether 5511999999999 is on WhatsApp". These are read tools (list_instances, get_instance_status, check_whatsapp_numbers). Only then remove ZAPZAP_READ_ONLY to allow sending.

  6. 6

    Allow sending with approval on every call

    The send tools are marked as non-idempotent and destructive, so the MCP client asks for confirmation before each send_text. Keep that confirmation on, use a dedicated instance and never let the assistant send to a list you have not reviewed.

Example

# 1) Build the MCP server from the repository (the npm package is not published yet)
git clone https://github.com/zapzapapi/zapzap-mcp.git
cd zapzap-mcp && npm install && npm run build

# 2) Register it in Claude Code (keys come from your shell, never from the prompt)
claude mcp add --env ZAPZAP_API_KEY="$ZAPZAP_API_KEY" --env ZAPZAP_API_SECRET="$ZAPZAP_API_SECRET" --env ZAPZAP_READ_ONLY=true --transport stdio zapzap -- node "$PWD/dist/src/index.js"

# 3) Check that it connected
claude mcp list

Illustrative. The exact fields and endpoints are in the documentation.

Which tools exist and which ones carry risk

List from the repository README (2026-11-11). In read-only mode, only the read tools are available.

TypeToolsCare
Readget_account, list_instances, get_instance_status, get_qr_code, check_whatsapp_numbers, find_chats, find_messages, get_webhook, get_webhook_deliveries, list_groups, get_group_infofind_messages returns customer text: treat it as untrusted input (prompt injection) and as personal data
Sendsend_text, send_media, send_buttons, send_poll, send_location, edit_message, delete_messageThey talk to real people: confirm on every call
Setupconnect_instance, set_webhook, test_webhook, create_group, manage_group_participants, react_to_message, mark_chat_readThey change the account: use only when needed

What the MCP server does not do

  • It does not receive messages: to receive, set a webhook (set_webhook) pointing to your server.
  • It is not on npm yet (2026-11-11): install from the repository.
  • The optional HTTP transport (--http) listens on 127.0.0.1 and has no authentication: put it behind your own proxy if you expose it.

Frequently asked questions

Is the ZapZap MCP server on npm?

Not yet. On 2026-11-11 the npm registry returns 404 for zapzap-mcp. The README mentions npx -y zapzap-mcp, but today you install with git clone, npm install and npm run build.

Can I use it only to read messages and build reports?

Yes. Set ZAPZAP_READ_ONLY=true and the server exposes only read tools. It is the right mode for dashboards, summaries and reports.

Do I have to paste the key into Claude's prompt?

Never. The key and secret stay in environment variables of the server process. In the prompt, only what you want to do.

Can Claude send messages by itself?

The send tools ask for confirmation in the MCP client. Keep the confirmation on, use a dedicated instance and remember that ZapZap is an unofficial solution: WhatsApp may limit or block numbers.

How much does it cost?

It costs R$15 per active number per month, prepaid, with no per-message fee, and you start with a welcome credit when you verify your phone, subject to the current campaign.

Start now

Create your account, connect a number in minutes and test the API with warm-up and anti-ban. R$15 per active number/month, prepaid, no lock-in.