whatsapp-mcp
Allows sending WhatsApp messages, searching contacts, and checking connection status using a personal WhatsApp account.
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., "@whatsapp-mcpsend a message to mom saying I'll be home late"
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.
whatsapp-mcp
An MCP server for personal WhatsApp accounts. Lets Claude (or any MCP client) send WhatsApp messages on your behalf — no browser automation, no Business API, no Meta approval process. Pairs with your phone exactly like WhatsApp Web does: scan one QR, done.
Built on Baileys, which speaks WhatsApp's WebSocket protocol directly.
Learning MCP? This repo doubles as a small, heavily-commented example server — see LEARNING.md and start reading at
src/server.ts.
Tools
Tool | What it does |
| Send a text message, a local file (image/video/document, optionally with a caption), or both to a contact name, a phone number, or |
| Find contacts by name fragment, returns names + numbers |
| Connection/pairing state, contact-sync count — for diagnosing before sending |
Safety by design — born from a real incident where an automation picked the wrong "Omar":
A contact name must match exactly one saved contact (case-insensitive). Zero or several matches → the tool refuses and lists candidates instead of guessing.
Raw phone numbers are verified to exist on WhatsApp before anything is sent.
Every send confirms back exactly who received the message (name + number).
Related MCP server: personal-whatsapp-mcp
Setup
Requires Node.js ≥ 20.
git clone https://github.com/OmarYousef95/whatsapp-mcp.git
cd whatsapp-mcp
npm install && npm run build
# one-time pairing: prints a QR in your terminal
node dist/index.js login
# QR won't scan (some terminal fonts distort it)? Use a typed pairing code instead:
node dist/index.js login +962791234567 # your own number, international formatScan the QR with your phone (WhatsApp → Settings → Linked Devices → Link a Device). The session persists in ~/.whatsapp-mcp/ — you won't need to scan again unless you unlink the device.
No terminal handy? If you skip
loginand just call a tool from Claude, the error response includes the QR so you can scan it straight from the chat.
Add to Claude Code
claude mcp add whatsapp -- node /path/to/whatsapp-mcp/dist/index.jsAdd to Claude Desktop
// claude_desktop_config.json
{
"mcpServers": {
"whatsapp": {
"command": "node",
"args": ["/path/to/whatsapp-mcp/dist/index.js"]
}
}
}Then just ask: "send a WhatsApp to +962791234567 saying I'm running late" or "message me a reminder to buy milk".
Where your data lives
Path | Contents |
| Your paired session keys (treat like a password — anyone with this folder can act as your WhatsApp) |
| Local contact-name cache used for name → number resolution |
Everything stays on your machine. Nothing is sent anywhere except to WhatsApp itself. To revoke access: delete ~/.whatsapp-mcp/auth/ or remove the linked device from your phone.
Honest caveats
Unofficial API. Baileys reimplements the WhatsApp Web protocol and is not endorsed by Meta. Using it technically violates WhatsApp's Terms of Service, and there is a small but real risk of account suspension. Use a personal tool responsibly: low volume, real conversations, never spam. If that risk worries you, pair a secondary number for testing first.
Contact names come from WhatsApp's sync and may take a moment to populate after first pairing. Phone numbers always work.
Baileys tracks a moving target; if WhatsApp changes the protocol, update the pinned dependency.
Development
npm test # unit tests (contact resolution — the safety-critical bit)
npm run dev # run the server from source
npm run login # pairing flow from sourceRoadmap
npm publish for true
npx whatsapp-mcpone-liner install
MIT © Omar Yousef
This server cannot be deployed
Maintenance
Related MCP Connectors
Drive WhatsApp from any MCP client: pair devices, send text and media, manage contacts and groups.
Your own WhatsApp as an MCP server: read, search and send from any MCP client.
WhatsApp (Web + Business API), SMS, contacts, and call records via 2Chat's MCP server.
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.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables sending messages, managing templates, uploading media, and configuring webhooks for WhatsApp Business via the MCP protocol.6 npm5MIT
- AlicenseNot gradedqualityAmaintenanceEnables connecting a personal WhatsApp number to any MCP client, providing tools to send, search, and manage WhatsApp messages, with an optional auto-reply feature.31 PyPI4MIT
- AlicenseAqualityCmaintenanceSend WhatsApp messages from any MCP client — text, images and files, plus session management and contact checks. Authenticate by scanning a QR code: no Meta Business approval and no WhatsApp Business account required.921 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables connecting a personal or business WhatsApp account via QR pairing and then sending/reading messages, managing chats, contacts, groups, and searching message history through MCP tools.MIT