Skip to main content
Glama
mmarqueti

WhatsApp Cloud API MCP Server

by mmarqueti
README.md3.67 kB
# WhatsApp Cloud API MCP Server – Spec v1.0 ## Overview This project defines version **1.0** of an **MCP Server** that exposes the **WhatsApp Cloud API** to LLM agents through standardized MCP tools. Goal: Provide a minimal, clean, production-ready baseline so developers can use WhatsApp messaging inside AI agents with zero complexity. --- # 1. Objectives - Create a lightweight MCP server (TypeScript + Node.js). - Expose WhatsApp Cloud API functionalities as tools. - Provide helpers for webhook verification. - Be deployable with a single command (Docker + local dev). --- # 2. Tech Stack - **Node.js 20+** - **TypeScript** - **Express** (or Fastify) for HTTP + webhooks - **MCP Server SDK** - **Axios** for outbound WhatsApp API requests - **WebSocket** for MCP transport (mandatory) - **Dotenv** for configs - **Pino** or console logging --- # 3. Project Structure (v1.0) ``` /src /mcp server.ts /whatsapp client.ts webhook.ts /config env.ts index.ts .env.example mcp.json package.json README.md ``` --- # 4. Environment Variables Required: ``` META_WHATSAPP_TOKEN= META_WHATSAPP_PHONE_ID= META_WHATSAPP_WABA_ID= META_VERIFY_TOKEN= PORT=4000 MCP_PORT=8000 ``` Optional: ``` LOG_LEVEL=debug ``` --- # 5. WhatsApp Cloud API Endpoints to Support (v1.0) The MCP server will call these official endpoints: ### **Send Text Message** ``` POST /v18.0/{PHONE_ID}/messages ``` ### **Send Template Message** ``` POST /v18.0/{PHONE_ID}/messages ``` ### **Get Media URL** ``` GET /v18.0/{MEDIA_ID} ``` ### **Download Media** ``` GET {MEDIA_URL} ``` ### **Health Check** ``` GET /v18.0/{PHONE_ID} ``` --- # 6. Webhook Handling Expose: ``` GET /webhook (verification) ``` Features: - Validate `hub.verify_token` --- # 7. MCP Tools (v1.0) Tools exposed to agents: ## **1. send_text_message** Send a simple text message to a WhatsApp user. ### Params: ```json { "to": "string", "text": "string" } ``` ## **2. send_template_message** Send a WhatsApp template message. ### Params: ```json { "to": "string", "template_name": "string", "language": "string", "components": [] } ``` ## **3. get_media** Retrieve a media file by MEDIA_ID. ### Params: ```json { "media_id": "string" } ``` ## **4. health_check** Verify connectivity with WhatsApp Cloud API. --- # 8. Security - Validate Meta webhook signature (optional v1). - Restrict MCP tool usage to authenticated WebSocket clients. - Sanitize user inputs. - Never log tokens. --- # 9. Documentation Requirements ## Setup Instructions 1. **Install Dependencies** ```bash npm install ``` 2. **Configure Environment** Copy `.env.example` to `.env` and fill in your Meta WhatsApp API credentials. ```bash cp .env.example .env ``` 3. **Run Locally** ```bash npm run dev ``` Server will start on port 4000 (HTTP) and expose MCP on WebSocket. 4. **Configure Webhook** - Expose your local server using ngrok or similar: `ngrok http 4000` - In Meta App Dashboard, set Webhook URL to `https://<your-ngrok-url>/webhook` - Set Verify Token to match `META_VERIFY_TOKEN` in `.env` ## Docker Usage ```bash docker build -t whatsapp-mcp . docker run -p 4000:4000 --env-file .env whatsapp-mcp ``` ## Example Usage with Claude Desktop Add to your `claude_desktop_config.json`: ```json { "mcpServers": { "whatsapp": { "command": "docker", "args": ["run", "-i", "--rm", "--env-file", "/path/to/.env", "whatsapp-mcp"] } } } ``` (Note: For local dev without docker, point to the build output) # 10. Contact For any inquiries or similar projects, please contact: marcelo@marcelomarchetti.com

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mmarqueti/whatsapp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server