Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the WhatsApp Business Cloud API in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
AnythingMCP is listed in Claude's connector directory: add it to Claude in one click (opens in a new tab), then sign in and choose which MCP servers Claude may use.
Summary
Send WhatsApp messages, templates, media and buttons from Claude through Meta's official Cloud API. Works in Claude.ai, Desktop and Code, set up without code.
Try asking
Example prompts for WhatsApp Business Cloud API
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → WhatsApp Business, paste your permanent System User access token + WhatsApp Business Account ID, then connect Claude — done. No Docker, no
git clone, no local server to run. You can skip the local-install steps below and jump straight to the client-wiring section.
Connect WhatsApp Business to Claude
WhatsApp Business Cloud API is Meta's hosted gateway for sending WhatsApp messages programmatically — text, templates, media, voice notes, interactive buttons, location pins. With AnythingMCP you drive all of it from Claude Desktop, Claude Code, or claude.ai in plain English. No SDK to glue, no JSON-by-hand for every message type.
What you can ask Claude
- "Send 'Your order has shipped — track it at https://acme.com/t/12345' to +49 151 5123 4567." Uses
whatsapp_send_text_message(only inside the 24-hour window, see below). - "Send the
order_confirmationtemplate (en_US) to +1 555 123 4567, fill in 'John' and 'ORD-9912'." Useswhatsapp_send_template_message. - "Send the invoice PDF at https://acme.com/inv/9912.pdf to my customer with caption 'Invoice 9912'." Uses
whatsapp_send_document. - "List the approved templates on my WABA, then send the welcome one in Italian to this new lead." Uses
whatsapp_list_message_templates, thenwhatsapp_send_template_message. - "Ask the customer to pick a delivery slot: morning, afternoon or evening." Uses
whatsapp_send_interactive_buttons(up to three reply buttons). - "Update our WhatsApp business profile: new address and opening hours in the description." Uses
whatsapp_update_business_profile.
What you need
- A WhatsApp Business Account (WABA) with at least one verified sending number. Meta's test number works for trying things out, but only sends to numbers you have added as testers.
- A permanent System User access token with
whatsapp_business_messaging+whatsapp_business_managementpermissions (the temporary 24h dev token works for testing but expires). - Approved message templates for anything you send outside the 24-hour window. You create them in Meta Business Suite; Meta has to approve them before they can be sent.
- AnythingMCP running locally or on cloud.anythingmcp.com (3-minute setup).
- Claude Desktop, Claude Code, or a claude.ai account.
Meta charges for WhatsApp Business messages according to its own price list, separately from AnythingMCP; see Meta's WhatsApp pricing page for your countries.
Step 1 — Get your WhatsApp Business credentials
- Open https://developers.facebook.com/ → your App → WhatsApp → API Setup. Note the WhatsApp Business Account ID (WABA ID).
- Go to Meta Business Suite → Business Settings → System Users, create a System User, assign your WABA, and Generate a New Token with both
whatsapp_business_messagingandwhatsapp_business_managementpermissions. Copy it — you can't see it again. - Make sure your sending phone number is verified in API Setup (the test number works out of the box; for production, add and verify your own).
Step 2 — Install the WhatsApp Business adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, click WhatsApp Business, and fill in:
| Field | Value |
|---|---|
WHATSAPP_ACCESS_TOKEN | the permanent System User token |
WHATSAPP_BUSINESS_ACCOUNT_ID | your WABA ID (e.g. 123456789012345) |
Click Install — the adapter is now in your catalog with 14 tools.
Step 3 — Find your phoneNumberId once
Ask Claude to call whatsapp_list_phone_numbers. It reads the numbers on the WABA you configured and returns the id of each sending number — pin that value, every send tool needs it as phoneNumberId. The connector does not pick a default number for you.
Recipients go in the to field in international format, country code first and without the +: 4915151234567 for a German mobile, 15551234567 for the US.
Step 4 — Add the connector in Claude (no code, 4 clicks)
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Recommended path — works on claude.ai web without touching any config file, and the connector then also appears in Claude Desktop.
- Open claude.ai/customize/connectors.
- Click +, then Add custom connector.
- Name it
AnythingMCPand enter the URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. - Click Add, then Connect. Sign in to AnythingMCP and choose which of your MCP servers Claude may use.
That's it. All 14 WhatsApp tools appear in your chat — start typing prompts.
Advanced: Claude Code (CLI)
claude mcp add --transport http anythingmcp https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID
Then run /mcp in a session and choose Authenticate. Verify with claude mcp list.
Self-hosting? Use your own AnythingMCP URL instead of cloud.anythingmcp.com. For claude.ai it has to be reachable from the internet, because Claude connects from Anthropic's servers, not from your computer.
Available tools (14 total)
| Group | Tools |
|---|---|
| Discovery | whatsapp_list_phone_numbers, whatsapp_list_message_templates, whatsapp_get_message_template |
| Text & template | whatsapp_send_text_message, whatsapp_send_template_message |
| Media (URL or media ID) | whatsapp_send_image, whatsapp_send_audio, whatsapp_send_video, whatsapp_send_document |
| Interactive & location | whatsapp_send_location, whatsapp_send_interactive_buttons |
| Read receipts & profile | whatsapp_mark_message_as_read, whatsapp_get_business_profile, whatsapp_update_business_profile |
The 24-hour window — what your agent needs to know
WhatsApp only lets you send free-form messages (text, media, interactive, location) inside the 24 hours following the user's last inbound message to your number. Outside that window the only allowed sends are pre-approved templates — call whatsapp_send_template_message with the template name and language.
The adapter's instructions block tells Claude this rule, so when you ask "send a follow-up to that customer" days after their last reply, Claude will reach for whatsapp_send_template_message instead of free-form text.
Voice notes
Use whatsapp_send_audio with link pointing to an OGG-Opus file hosted on a public HTTPS URL. WhatsApp renders OGG-Opus as a true voice message (waveform + play button). MP3 and AMR also work but render as plain audio attachments.
Troubleshooting
- Everything worked yesterday, now every call is refused. You are probably still on the temporary access token from API Setup, which expires after 24 hours. Generate a permanent System User token and replace
WHATSAPP_ACCESS_TOKEN. - Sending fails, reading templates works. The System User token lacks
whatsapp_business_messaging, or the System User is not assigned to this WABA. Both permissions are needed:whatsapp_business_managementfor templates and numbers,whatsapp_business_messagingfor sending. - A template send is rejected. The template is not yet APPROVED, or the name or language code doesn't match exactly. Have Claude check with
whatsapp_list_message_templatesfirst. - An image or document never arrives. The
linkhas to be a public HTTPS URL that Meta's servers can download, within WhatsApp's size limits (image 5 MB, audio and video 16 MB, document 100 MB). - The recipient number is rejected. Use the international format without
+, spaces or a leading zero, for example4915151234567.
FAQ
Does this work without a verified business number? Meta's test number works for testing (only sends to numbers you've added as testers). For production sends to any recipient, your sending number must be verified and registered to your WABA.
What happens if I send free-form text outside the 24h window?
Meta returns error code 131047 ("Re-engagement message"). Use whatsapp_send_template_message instead.
Can the adapter receive inbound messages?
Not directly — Meta uses webhooks for inbound, and the AnythingMCP REST engine is outbound-only. Host a small webhook receiver next to AnythingMCP and use this connector for outbound + whatsapp_mark_message_as_read for receipts.
Does it work with Claude Code as well as Claude Desktop? Yes. A custom connector you add on claude.ai is also available in Claude Desktop, and Claude Code adds the same URL with claude mcp add --transport http. Custom connectors are available on every Claude plan; the Free plan allows one, which is enough because a single AnythingMCP connector carries all your connectors.
Is it free? AnythingMCP is open source under AGPL-3.0, so self-hosting is free, including commercial use inside your own company; AnythingMCP Cloud comes with a 7-day free trial. WhatsApp messages themselves are billed by Meta according to its pricing.
Is my data stored by AnythingMCP? Your Meta access token is stored encrypted (AES-256-GCM) in your workspace and is never shown to Claude. AnythingMCP passes each send request to Meta and the response back to Claude, and every call is recorded in your workspace's audit log. Inbound messages never reach AnythingMCP; they go to your own webhook.
Next steps
Was this guide helpful?