MCP server
io.github.mcp-dir/whatsapp-mcp
Checked 26 Oct 2026, 08:29 UTC · Connected to it and listed its tools
Connect a personal/Business WhatsApp account via QR pairing (multi-device, like WhatsApp Web). Send
Working at last checkAbout 8,886 tokens per request once connected47 tools
https://api.mcp.ai/p_whatsapp
At a glance
- Type
- MCP server
- Publisher
- Not verified
- Status
- Working at last check
- Tools
- 47
- Token cost
- About 8,886 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 26 Oct 2026, 08:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http whatsapp-mcp https://api.mcp.ai/p_whatsapp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.whatsapp-mcp] url = "https://api.mcp.ai/p_whatsapp"
Gemini CLI
{"mcpServers":{"whatsapp-mcp":{"httpUrl":"https://api.mcp.ai/p_whatsapp"}}}
Cursor
{"mcpServers":{"whatsapp-mcp":{"url":"https://api.mcp.ai/p_whatsapp"}}}
VS Code
{"servers":{"whatsapp-mcp":{"type":"http","url":"https://api.mcp.ai/p_whatsapp"}}}
Antigravity
agy mcp add whatsapp-mcp https://api.mcp.ai/p_whatsapp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"whatsapp-mcp","server_url":"https://api.mcp.ai/p_whatsapp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"whatsapp-mcp","server_url":"https://api.mcp.ai/p_whatsapp"}
Tools
whatsapp_chat_archive~111 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: archive]whatsapp_chat_metadata~101 tokens
Get metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps). Requires chat_jid.whatsapp_chat_mute~109 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: mute]whatsapp_chat_pin~109 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: pin]whatsapp_chat_unarchive~112 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unarchive]whatsapp_chat_unmute~110 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unmute]whatsapp_chat_unpin~110 tokens
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unpin]whatsapp_chats~90 tokens
List WhatsApp chats (individual + group). Sorted by most recent activity.whatsapp_config_get~105 tokens
Show this install's editable-after-connect settings per connected number — currently the proxy (proxy_url): whether it's set and a masked preview (the raw value is never returned). Owner/admin or the connection owner.whatsapp_config_set~270 tokens
Change an editable-after-connect setting on a connected number WITHOUT re-pairing. Today the only field is `proxy_url` — the SOCKS5/HTTPS proxy WhatsApp connects through (recommended to avoid IP bans). Owner/admin or the connection owner. - `account`: which number (id/wa_jid, phone, or label; omit iwhatsapp_contacts_get~130 tokens
Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: get]whatsapp_contacts_list~131 tokens
Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: list]whatsapp_group_manage_create~279 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_manage_invite_link~282 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_manage_join~278 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_manage_leave~278 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_manage_requests~280 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_manage_update~279 tokens
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (whatsapp_group_members~113 tokens
List the members of a WhatsApp group (live). Returns each participant's JID, phone, and admin/super-admin flag. Requires group_jid (…@g.us, from whatsapp_groups).whatsapp_group_participants_add~162 tokens
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: add]whatsapp_group_participants_demote~164 tokens
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: demote]whatsapp_group_participants_promote~164 tokens
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: promote]whatsapp_group_participants_remove~164 tokens
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: remove]whatsapp_groups~74 tokens
List WhatsApp groups the account belongs to — subject, jid, participants count, owner.whatsapp_history_backfill~365 tokens
Request OLDER messages for a chat from your phone (on-demand history sync), extending what whatsapp_messages can read. Returns { status, messages_added }: - "done"/"partial": it pulled messages_added new messages — read them via whatsapp_messages (paginate with `before`). "partial" means WhatsApp stwhatsapp_history_coverage~190 tokens
Show how far back the LOCAL message archive reaches per chat (oldest_ts, newest_ts, message_count, status). Use it to find pagination boundaries for whatsapp_messages and to decide whether to pull more with whatsapp_history_backfill. Optional query (filter by name/JID), kind, limit, or a single chatwhatsapp_list_accounts~77 tokens
List WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status.whatsapp_message_deleteDeletes data · ~238 tokens
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of yourwhatsapp_message_edit~236 tokens
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of yourwhatsapp_message_forward~238 tokens
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of yourwhatsapp_messages~234 tokens
List messages in a chat from LOCAL history. Requires chat_jid (from whatsapp_chats). Paginate backwards by passing the oldest message's timestamp as `before` (ISO 8601); `after` pages forward; `order` sorts. NOTE: only messages already synced locally are returned — to see how far back the archive gowhatsapp_messages_write~144 tokens
Mark messages as read in a chat. Requires chat_jid. Optional message_id (marks up to this message; omit to mark all unread). Bulk support: accepts message_ids for batched execution.whatsapp_poll_create~206 tokens
Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: create] Bulk support: accepts message_ids for batched execution.whatsapp_poll_vote~204 tokens
Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: vote] Bulk support: accepts message_ids for batched execution.whatsapp_react~151 tokens
React to a message with an emoji (or remove your reaction by passing an empty emoji). Requires chat_jid + message_id. Bulk support: accepts message_ids for batched execution.whatsapp_search~115 tokens
Full-text search across all stored messages (SQLite FTS5). Optional chat_jid to scope. Returns matches with context.whatsapp_send_mediaSends messages · ~272 tokens
Send a WhatsApp message (text or media). Actions: - text: { to, text, reply_to? } - media: { to, type ('image'|'video'|'audio'|'document'|'sticker'), media_url | media_base64, caption?, filename?, mimetype? } `to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or a pwhatsapp_send_textSends messages · ~272 tokens
Send a WhatsApp message (text or media). Actions: - text: { to, text, reply_to? } - media: { to, type ('image'|'video'|'audio'|'document'|'sticker'), media_url | media_base64, caption?, filename?, mimetype? } `to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or a pwhatsapp_sync~155 tokens
Refresh this account's local data from WhatsApp — pulls recent messages and refreshes the groups/contacts lists into the local store. Call it BEFORE reading (chats/groups/messages/contacts/search) when results look stale or empty (e.g. right after connecting, or an account that hasn't synced recentlwhatsapp_webhook_get~119 tokens
Show this WhatsApp install's outbound webhook: the current URL, the subscribed events (empty = all), include_result, and the catalog of subscribable events (available_events — e.g. whatsapp.message, whatsapp.reaction, and the whatsapp.* wildcard). Owner/admin only.whatsapp_webhook_set~282 tokens
Set (or remove) this WhatsApp install's outbound webhook. Owner/admin only. - To set: pass `url` (https only, not localhost). `events` is the list of subscribed events ("permissions") — e.g. ["whatsapp.message"], or ["whatsapp.*"] for every WhatsApp event, or [] / omit for ALL events. See available_
Browse
Related MCP servers
- EnvoiSMS
Send SMS/WhatsApp and verify OTP codes in Morocco (+212) and worldwide. Direct carrier routing. - Skimguard
Ask whether a location has recent credit-card-skimmer detections, from a consumer sensor network. - Fine Structure
Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email. - Neuron
AI-powered WhatsApp chatbot platform with 196 tools for bots, campaigns, and contacts. - Whatsapp Wyjbao
WhatsApp: The WhatsApp Profile Data API lets you programmatically fetch a user’s profile picture. - KissCode
Relationship network for AI agents and people: your agent can date, chat, gift and fall in love. - Somosvelora Velora
Hosted Argentine commerce MCP: real AFIP invoicing, MercadoPago, logistics, catalog & WhatsApp. - FavCRM
Agentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing.
Badge for your README
[](https://aptlynx.net/servers/io.github.mcp-dir/whatsapp-mcp)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents