SendPulse WhatsApp MCP
Allows working with a SendPulse WhatsApp chatbot: listing bots and bot stats, reading contacts and chat history, sending messages and approved templates, creating contacts, tagging contacts and setting contact variables, running flows and triggers, and sending campaigns to bot subscribers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SendPulse WhatsApp MCP list my SendPulse WhatsApp bots and show the latest messages in each chat"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sendpulse-whatsapp-mcp
An MCP server that lets Claude (Claude Code, Claude Desktop, or any MCP client) work with a SendPulse WhatsApp chatbot: read bots, contacts and chat history, send messages and approved templates, tag contacts, run flows and send campaigns.
26 tools, one or several SendPulse accounts, and a read-only mode for people who should look but not send.
What you need
Node.js 18 or newer, and git (npm installs the server straight from this repo)
SendPulse API credentials: Settings > API > Client credentials (direct link). Copy the ID and the Secret.
The credentials open the whole SendPulse account, not one bot. Anyone holding them can message every contact in it. Keep them out of chats, screenshots and git.
Related MCP server: WAHA WhatsApp MCP Server
Install in Claude Code
Windows
Two lines, in Command Prompt (search for cmd in the Start menu), not PowerShell:
npm install -g github:lieox/sendpulse-whatsapp-mcp
claude mcp add -e SENDPULSE_CLIENT_ID=your-id -e SENDPULSE_CLIENT_SECRET=your-secret -e SENDPULSE_READ_ONLY=1 -s user sendpulse cmd /c sendpulse-whatsapp-mcpWhy it looks like this:
Command Prompt, not PowerShell. On many Windows machines PowerShell's execution policy blocks
npmitself (npm.ps1 cannot be loaded because running scripts is disabled on this system). Command Prompt runsnpm.cmdand is not affected. CI also passes in PowerShell, but only because scripts are allowed there.Installed once, not through npx. The install takes about 30 seconds on a Windows CI machine. Through npx that happens on the first start, Claude Code gives up after 30 seconds, and the first connection fails. An installed server starts instantly and needs no network to start.
No
--in the command. When Claude Code itself was installed with npm, PowerShell swallows--and the command fails witherror: unknown option '-y'. Keep-s userright before the name:-eaccepts several values and stops only at the next option.cmd /cis the safe form for npm commands on Windows. CI shows current Claude Code versions (2.1.197 and 2.1.284) also connect with plainsendpulse-whatsapp-mcp.
To update later, run the npm install -g line again.
macOS
One line:
claude mcp add sendpulse -s user -e SENDPULSE_CLIENT_ID=your-id -e SENDPULSE_CLIENT_SECRET=your-secret -e SENDPULSE_READ_ONLY=1 -- npx -y github:lieox/sendpulse-whatsapp-mcpThen, on both
Restart Claude Code, run /mcp, and check that sendpulse shows as connected. Then ask: "list my SendPulse bots".
Drop -e SENDPULSE_READ_ONLY=1 when you want Claude to be able to send (remove the server first with claude mcp remove sendpulse -s user, then add it again).
What CI checks
On every push, GitHub Actions runs the commands above in a real Claude Code and requires claude mcp get to report Connected:
Windows: PowerShell 7, Windows PowerShell 5.1 and Command Prompt, with Claude Code installed both natively and through npm
macOS: zsh, with an empty npx cache (a true first run)
It also builds on both systems, checks that the committed dist/ matches src/, and runs a smoke test of every mode against the real SendPulse API with fake credentials.
Install in Claude Desktop
Not covered by CI.
Settings > Developer > Edit Config, then add:
{
"mcpServers": {
"sendpulse": {
"command": "npx",
"args": ["-y", "github:lieox/sendpulse-whatsapp-mcp"],
"env": {
"SENDPULSE_CLIENT_ID": "your-id",
"SENDPULSE_CLIENT_SECRET": "your-secret",
"SENDPULSE_READ_ONLY": "1"
}
}
}
}Quit Claude Desktop completely and open it again.
Configuration
Variable | Meaning |
| One account. The tools use it automatically, no account name needed. |
| Several accounts, as JSON: |
|
|
Tools
Area | Read (always on) | Write (off in read-only mode) |
Bots |
| |
Contacts |
|
|
Messages |
|
|
Flows |
|
|
Campaigns |
| |
Metadata |
|
Every tool name starts with sendpulse_.
Things WhatsApp enforces, not this server
send_messageonly works within 24 hours of the contact's last message. Outside that window, use an approved template (send_template).Templates must be approved in Meta first, and Meta charges for template messages.
send_campaignandsend_template_campaigngo to every subscriber of the bot unless you pass afilter. Ask Claude to show you the exact payload before it sends one.The SendPulse API allows 10 requests per second.
Development
npm install
npm run compile # compiles src/ to dist/
npm test # smoke test, no credentials needed
npm run dev # watch modedist/ is committed on purpose, so installing from GitHub needs no build step. Recompile and commit it with every change to src/ (CI fails if they differ).
The compile script is deliberately not named build: npm treats a git dependency with a build script as needing preparation, installs TypeScript and the other dev tools into every user's install, and the first start becomes too slow for Claude Code on Windows.
License
MIT
Available Tools
26 toolssendpulse_create_contactCreate ContactB
Create a new WhatsApp contact by phone number.
Inputs: phone (required), bot_id (required), account.
sendpulse_disable_contactDisable ContactBDestructiveIdempotent
Disable a contact so they stop receiving bot messages.
Inputs: contact_id (required), account.
sendpulse_enable_contactEnable ContactAIdempotent
Re-enable a previously disabled contact.
Inputs: contact_id (required), account.
sendpulse_get_bot_statsGet Bot StatisticsBRead-onlyIdempotent
Get subscriber counts and message statistics for a specific bot.
Inputs: bot_id (required), account.
sendpulse_get_chat_messagesGet Chat MessagesCRead-onlyIdempotent
Get message history for a contact.
Inputs: contact_id (required), size, skip, order, +1 more.
sendpulse_get_contactGet Contact by IDARead-onlyIdempotent
Get a WhatsApp contact's details by their contact ID.
Inputs: id (required), account.
sendpulse_get_contacts_by_tagGet Contacts by TagBRead-onlyIdempotent
Get all contacts that have a specific tag.
Inputs: tag (required), bot_id (required), account.
sendpulse_list_botsList WhatsApp BotsARead-onlyIdempotent
List all connected WhatsApp bots for an account. Use this first to get bot IDs.
Inputs: account.
sendpulse_list_chatsList ChatsBRead-onlyIdempotent
List all active chats for a WhatsApp bot.
Inputs: bot_id (required), account.
sendpulse_list_flowsList Automation FlowsBRead-onlyIdempotent
List all automation flows configured for a bot.
Inputs: bot_id (required), account.
sendpulse_list_tagsList TagsBRead-onlyIdempotent
List all contact tags defined for a bot.
Inputs: bot_id (required), account.
sendpulse_list_triggersList Flow TriggersBRead-onlyIdempotent
List all keyword triggers configured for a bot's flows.
Inputs: bot_id (required), account.
sendpulse_list_variablesList Contact VariablesBRead-onlyIdempotent
List all custom contact variables defined for a bot.
Inputs: bot_id (required), account.
sendpulse_pause_contact_automationPause Contact AutomationA
Pause all automated flows for a contact for a specified number of minutes (e.g. while a human agent is handling the chat).
Inputs: minutes (required), contact_id (required), account.
sendpulse_remove_contact_tagRemove Tag from ContactCDestructiveIdempotent
Remove a specific tag from a contact.
Inputs: tag (required), contact_id (required), account.
sendpulse_resume_contact_automationResume Contact AutomationBIdempotent
Resume automated flows for a contact, cancelling any active pause.
Inputs: contact_id (required), account.
sendpulse_run_flowRun Flow for ContactC
Trigger a specific automation flow for a contact.
Inputs: flow_id (required), contact_id (required), account, external_data.
sendpulse_run_flow_by_triggerRun Flow by Trigger KeywordC
Trigger an automation flow for a contact using a keyword trigger.
Inputs: contact_id (required), trigger_keyword (required), account, external_data.
sendpulse_send_campaignSend Broadcast CampaignB
Send a broadcast message to all bot subscribers. Optionally schedule with send_at or filter recipients.
Inputs: title (required), bot_id (required), messages (required), filter, +2 more.
sendpulse_send_messageSend Message to ContactA
Send a message to a contact. Only works within the 24-hour messaging window after the contact last messaged. Use sendpulse_send_template outside that window.
Inputs: message (required), contact_id (required), account.
sendpulse_send_templateSend Template to ContactA
Send a pre-approved WhatsApp template to a contact. Works outside the 24-hour window. Templates must be approved in Meta Business Manager.
Inputs: contact_id (required), template_name (required), account, components, +1 more.
sendpulse_send_template_by_phoneSend Template by PhoneA
Send a pre-approved WhatsApp template directly by phone number without needing a contact ID.
Inputs: phone (required), bot_id (required), template_name (required), account, +2 more.
sendpulse_send_template_campaignSend Template CampaignB
Send a pre-approved WhatsApp template to all bot subscribers as a campaign.
Inputs: title (required), bot_id (required), template_name (required), filter, +4 more.
sendpulse_set_contact_nameSet Contact NameCIdempotent
Update the display name of a WhatsApp contact in SendPulse.
Inputs: name (required), contact_id (required), account.
sendpulse_set_contact_tagsAdd Tags to ContactBIdempotent
Add one or more tags to a contact.
Inputs: tags (required), contact_id (required), account.
sendpulse_set_contact_variableSet Contact VariablesBIdempotent
Set one or more custom variables on a contact.
Inputs: variables (required), contact_id (required), account.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 26 tools
Most tools have clearly distinct resource+action purposes, but several pairs can be confused: send_campaign vs send_template_campaign, send_template vs send_template_by_phone, and run_flow vs run_flow_by_trigger. Descriptions clarify the differences, so an agent can recover, but selection requires careful reading.
All tool names follow a consistent sendpulse_ prefix plus snake_case verb_noun/verb_noun_qualifier pattern (e.g., sendpulse_create_contact, sendpulse_get_contacts_by_tag, sendpulse_set_contact_variable). No mixed conventions or vague naming.
At 26 tools, the surface is heavy for a WhatsApp bot-management server, and some pairs feel like variants of the same operation (run_flow/run_flow_by_trigger, enable/disable contact, send_campaign/send_template_campaign). It is not extreme, but the count is borderline bloated.
Core lifecycle operations are covered: contacts (create/get/enable/disable/tag/variable/name/pause/resume), messaging and templates, campaigns, flows, triggers, chats, bots, and stats. Minor gaps exist, such as no hard delete-contact operation and no direct listing of templates or campaigns, but agents can work around them.
Maintenance
Related MCP Connectors
WhatsMCP connects Claude and other MCP-compatible AI agents directly to WhatsApp. Send and receive text, images, documents, and voice notes; manage groups (create, add/remove members, promote admins); look up contacts and profiles; follow channels; and read call and message history — all through a standard MCP interface. For voice use cases, WhatsMCP offers SIP-based calling plans (inbound-only, or full inbound/outbound) so AI voice agents can answer and place WhatsApp calls, plus low-latency WebSocket integrations with voice agent providers like ElevenLabs. Multiple WhatsApp accounts can be paired and managed per workspace, with webhook support for real-time inbound message delivery to your own infrastructure.
Send WhatsApp messages and templates, manage chats, contacts, broadcasts and AI agents.
Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.
Your own WhatsApp in Claude and ChatGPT: read chats, draft replies, send messages you approve.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with SendPulse Chatbots API to manage chatbot accounts, retrieve bot information, and access dialog conversations. Supports flexible authentication through API credentials or OAuth tokens for comprehensive chatbot management through natural language.6 npmMIT
- AlicenseAqualityDmaintenanceEnables Claude to interact with WhatsApp through a unified backend API, providing 20 tools for messaging, media, groups, contacts, and chat management.2222 npmMIT
- AlicenseBqualityCmaintenanceEnables Claude to manage WhatsApp templates, flows, and send messages through the WhatsApp Cloud API.3119 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude to read and operate a TimelinesAI WhatsApp team inbox, including chats, messages, labels, assignments, and sending, with built-in read-only and confirmation safeguards.-