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.
Summary
Connect Meta's WhatsApp Business Cloud API to Cursor with AnythingMCP. Send text, templates, media, voice notes, and interactive buttons from Cursor in natural language.
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 Cursor โ 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 Cursor
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 Cursor in plain English. No SDK to glue, no JSON-by-hand for every message type.
What you can ask Cursor
- "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).
- Cursor installed.
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 Cursor 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 Cursor
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.
Cursor reads MCP servers from ~/.cursor/mcp.json. Add this entry:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers โ your server โ API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart Cursor.
- Open Cursor โ Settings โ MCP and check that
anythingmcpis listed and connected. - Start chatting โ the agent can now call the
WhatsApp Businesstools.
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 Cursor this rule, so when you ask "send a follow-up to that customer" days after their last reply, Cursor 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 Cursor 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.
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 Cursor. AnythingMCP passes each send request to Meta and the response back to Cursor, and every call is recorded in your workspace's audit log. Inbound messages never reach AnythingMCP; they go to your own webhook.
Does Cursor support custom MCP servers on the free tier? Yes โ MCP is available on Hobby, Pro and Business plans.
Next steps
Was this guide helpful?