Meta Cloud API MCP Server
Enables Claude to manage WhatsApp templates, flows, and send messages through the WhatsApp Cloud API.
README
<p align="center"> <img src="assets/README.svg" alt="Meta Cloud API" width="400"> </p>
<h1 align="center">Meta Cloud API MCP Server</h1>
<p align="center"> A Model Context Protocol (MCP) server that lets Claude manage WhatsApp templates, flows, and send messages through the WhatsApp Cloud API. </p>
<p align="center"> <a href="https://www.npmjs.com/package/meta-cloud-api-mcp"><img src="https://img.shields.io/npm/v/meta-cloud-api-mcp.svg" alt="npm version"></a> <a href="https://www.npmjs.com/package/meta-cloud-api"><img src="https://img.shields.io/badge/SDK-meta--cloud--api-blue" alt="SDK"></a> <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-brightgreen" alt="MCP Compatible"></a> <a href="https://github.com/froggy1014/meta-cloud-api-mcp/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a> </p>
What is this?
This MCP server wraps the meta-cloud-api SDK, giving Claude (and other MCP-compatible clients) direct access to the WhatsApp Business Platform. You can ask Claude to:
- "Create a welcome template in English and Spanish"
- "List all my flows and publish the draft one"
- "Send a template message to +1-555-123-4567"
- "Update my business profile description"
Quick Start
1. Install
npm install -g meta-cloud-api-mcp
2. Get Your Credentials
You need three values from the Meta Developer Portal:
| Variable | Where to find it |
|---|---|
CLOUD_API_ACCESS_TOKEN |
App Dashboard > WhatsApp > API Setup |
WA_PHONE_NUMBER_ID |
App Dashboard > WhatsApp > API Setup > Phone number ID |
WA_BUSINESS_ACCOUNT_ID |
App Dashboard > WhatsApp > API Setup > WhatsApp Business Account ID |
3. Configure Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"whatsapp": {
"command": "npx",
"args": ["-y", "meta-cloud-api-mcp"],
"env": {
"CLOUD_API_ACCESS_TOKEN": "your_access_token",
"WA_PHONE_NUMBER_ID": "your_phone_number_id",
"WA_BUSINESS_ACCOUNT_ID": "your_business_account_id"
}
}
}
}
4. Configure Claude Code
claude mcp add whatsapp -- npx -y meta-cloud-api-mcp
# Then set environment variables in your .claude/settings.json
Available Tools (31)
Templates (5 tools)
| Tool | Description |
|---|---|
list_templates |
List templates with filters (name, status, category, language) |
get_template |
Get a single template by ID with full component definition |
create_template |
Create a new message template (MARKETING, UTILITY, AUTHENTICATION) |
update_template |
Update template components (resubmits for review) |
delete_template |
Delete a template by name or specific language version |
Flows (8 tools)
| Tool | Description |
|---|---|
list_flows |
List all flows for your WhatsApp Business Account |
get_flow |
Get flow details including status and validation errors |
create_flow |
Create a new flow (optionally with inline JSON or clone) |
update_flow_metadata |
Update flow name, categories, or endpoint URI |
update_flow_json |
Upload or update the flow JSON definition |
delete_flow |
Delete a draft flow |
publish_flow |
Publish a draft flow (makes it live) |
deprecate_flow |
Deprecate a published flow (irreversible) |
Messages (3 tools)
| Tool | Description |
|---|---|
send_text_message |
Send a text message to a phone number |
send_template_message |
Send a pre-approved template message |
send_image_message |
Send an image (by media ID or public URL) |
Media (4 tools)
| Tool | Description |
|---|---|
get_media_info |
Get media metadata (URL, MIME type, size, hash) |
upload_media |
Upload a file to WhatsApp (returns media ID) |
delete_media |
Delete media from WhatsApp servers |
download_media |
Download media content to a local file |
Business Profile (2 tools)
| Tool | Description |
|---|---|
get_business_profile |
Get profile (about, address, email, websites, etc.) |
update_business_profile |
Update profile fields |
WABA (3 tools)
| Tool | Description |
|---|---|
get_waba_account |
Get account info (status, health, verification, limits) |
subscribe_waba_webhook |
Subscribe to WABA webhooks with optional callback override |
unsubscribe_waba_webhook |
Unsubscribe from WABA webhooks |
Phone Numbers (4 tools)
| Tool | Description |
|---|---|
get_phone_number |
Get phone number info (display number, quality, status) |
list_phone_numbers |
List all phone numbers in the WABA |
request_verification_code |
Request verification code via SMS or voice |
verify_phone_code |
Verify phone number with received code |
Registration (2 tools)
| Tool | Description |
|---|---|
register_phone |
Register a phone number with a 6-digit PIN |
deregister_phone |
Deregister a phone number |
Example Conversations
Managing Templates:
"List all my approved marketing templates"
"Create a template called
order_updatewith a body that says 'Your order has been confirmed. Order number: {{1}}'""Delete the
old_promotemplate"
Managing Flows:
"Show me all my flows and their statuses"
"Create a new customer support flow called
support_v2""Update the flow JSON for flow ID 12345 with this definition: { ... }"
"Publish flow 12345"
Sending Messages:
"Send 'Hello!' to +15551234567"
"Send the
hello_worldtemplate in English to +15551234567"
Development
git clone https://github.com/froggy1014/meta-cloud-api-mcp.git
cd meta-cloud-api-mcp
npm install
npm run build
Testing with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
Set environment variables in the Inspector UI, then browse and test all 31 tools interactively.
Requirements
- Node.js 18 or later
- Meta Developer Account with WhatsApp Business API access
- MCP-compatible client (Claude Desktop, Claude Code, etc.)
Related
- meta-cloud-api — The TypeScript SDK this server wraps
- meta-cloud-api docs — SDK documentation
- Model Context Protocol — MCP specification
- WhatsApp Cloud API — Official Meta documentation
License
MIT - see LICENSE for details.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.