WAHA WhatsApp MCP Server
The WAHA WhatsApp MCP Server integrates WhatsApp messaging with AI assistants via the Model Context Protocol (MCP), providing 28 tools across messaging, contacts, media, search, and automation.
Session & Account
Check WhatsApp session connection status and authenticated account info (connected number, display name)
Chats & Messages
List recent chats with previews
Read message history with filtering by sender, type, and date range
Send text messages to individuals or groups (rate-limited)
React to messages with emojis, edit previously sent messages, delete (unsend) for everyone, and forward messages
Contacts
Check if a phone number is registered on WhatsApp
List all contacts (people and groups) with activity stats
Get detailed info on a specific person or group (members, metadata, message stats)
View a contact's social graph — shared groups and mutual connections
Media
Download images, audio, video, and documents from messages (images/audio returned inline)
Transcribe voice messages to text using server-side Whisper-based transcription
Generate text-to-speech (TTS) audio inline without sending to WhatsApp
Message Store & Search
Full-text search across all message history with date, sender, and type filters
Get readable chat summaries (up to 200 recent messages)
View activity stats: message totals, top chats, top contacts, group/DM breakdown
Import WhatsApp chat export files (ZIP or TXT) to backfill historical messages
Auto-Reply
Enable/disable automatic voice-note transcription replies for specific contacts
List all contacts with auto-reply currently enabled
Media Automation
Read and update per-conversation media automation policies (capture, analysis, archiving, Nextcloud integration)
Disable all media automation flags for a conversation
Check system health diagnostics for backend, listener, media, and worker components
Click on "Install 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., "@WAHA WhatsApp MCP Serversend 'Running late' to my contact John"
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.
WAHA WhatsApp MCP Server
A TypeScript Model Context Protocol stdio server for WhatsApp through a unified WAHA backend. It exposes 28 tools for messages, contacts, media, transcription, speech generation, automatic voice-note replies, message-store search, and per-conversation media automation.
Architecture
MCP client → this package → unified backend /api (:8200)
├─ PostgreSQL message store
├─ WAHA live proxy
├─ transcription and TTS providers
└─ media analysis/archive workerThe MCP server only talks to the authenticated /api facade. It does not connect
directly to WAHA, databases, Nextcloud, or model providers. LAN-only management
routes for archive review and LLM provider administration are intentionally excluded.
This release targets waha-backend commit 46acc32 or a compatible newer build.
Related MCP server: WhatsApp MCP Server
Install
Claude Code
claude mcp add waha-whatsapp -- \
env WAHA_API_URL=http://your-server:8200/api \
WAHA_API_KEY=your-backend-api-key \
npx -y @marcos-heidemann/waha-mcp-serverMCP JSON configuration
{
"mcpServers": {
"waha-whatsapp": {
"command": "npx",
"args": ["-y", "@marcos-heidemann/waha-mcp-server"],
"env": {
"WAHA_API_URL": "http://your-server:8200/api",
"WAHA_API_KEY": "your-backend-api-key"
}
}
}
}Configuration
Variable | Required | Default | Description |
| no |
| Unified backend API URL |
| yes | — | Value sent as |
| no |
| WAHA session name |
| no |
| Minimum delay between outbound sends; non-negative integer |
Older WAHA_STORE_* and WAHA_TRANSCRIPTION_* variables are no longer used.
Those services are configured behind the unified backend.
Contact identifiers
Chat-targeting tools use a stable contactId:
Person: phone digits with country code, such as
5521999999999.Group: the stable group JID ending in
@g.us.Legacy
@c.usand@lidaliases remain accepted on routes where the backend supports them.Imported chat IDs ending in
@importwork with message read/search, but not with the backend chat-summary route.
Use whatsapp_list_contacts to discover identifiers.
Tools (28)
Area | Tool | Purpose |
Session |
| Connection and account presence |
Session |
| Authenticated WhatsApp identity |
Chats |
| Live chat overview with previews |
Chats |
| Persistent history with live fallback and optional mark-read |
Messaging |
| Rate-limited text send |
Messaging |
| Add or remove a reaction |
Messaging |
| Edit an outgoing text message |
Messaging |
| Unsend a message |
Messaging |
| Copy stored text into another chat |
Media |
| Return images/audio up to 10 MiB inline; save larger/other files in |
Media |
| Transcribe with language and prompt hints |
Media |
| Generate inline TTS audio; does not send it to WhatsApp |
Contacts |
| Check whether a phone is registered |
Contacts |
| Unified people and groups address book |
Contacts |
| Person or group detail |
Store |
| Search text plus indexed captions, OCR, summaries, tags, and documents |
Store |
| Shared groups and mutual contacts |
Store |
| Recent readable history, up to 100 messages |
Store |
| Activity totals and top chats/contacts |
Store |
| Import a local |
Auto-reply |
| Enable person/group voice-note replies; optional contextual mode |
Auto-reply |
| Disable automatic voice-note replies |
Auto-reply |
| Check enabled/found state |
Auto-reply |
| List enabled people and groups |
Automation |
| Read per-conversation media policy |
Automation |
| Partially update capture/analysis/reply/archive policy |
Automation |
| Turn every media automation flag off for a conversation |
Automation |
| Combined backend/listener/media/worker diagnostics |
Media automation settings
whatsapp_media_settings_update supports:
captureEnabledanalyzeImagesanalyzeDocumentswhatsappReplyEnabledincludeMediaInRecaparchiveMode:off,review, orautofixedNextcloudFolderId: integer ornullarchiveConfirmationEnabledallowSensitiveProcessingaskOnReview
Conversation settings are combined with backend-wide kill switches. Always inspect
returned warnings or call whatsapp_automation_health before assuming a feature is
active. The current public health/warning contract does not expose the global gates
for recap inclusion or review questions.
Current backend limitations
Manual quote replies are not implemented by the public backend send route. Supplying
replyToreturns an MCP error and sends nothing.whatsapp_forward_messagere-sends stored text. It does not preserve media, sender attribution, or WhatsApp's Forwarded label.Some current GOWS media is still exposed as stored type
chat; type filters may miss it until the backend public API switches tonormalized_type.Public chat summaries are not fully
@lidalias-aware. Read/search are the safer choices for migrated histories.Imported sender identities are history-only and are omitted from
whatsapp_list_contacts; imported*@importchats support read/search but not live read receipts or chat summaries.Durable staged-media preview, Nextcloud folder discovery, archive review/actions, and Motor/LLM configuration remain operator-only management functions.
Development and verification
npm ci
npm test # hermetic unit + backend-contract tests
npm run build
npm pack --dry-runReleases are deployed by pushing a tag that exactly matches the package version,
for example v2.4.0. The publish workflow repeats unit tests and the build before
publishing to npm with the repository secret.
Live tests require WAHA_API_URL and WAHA_API_KEY:
npm run test:live # read-only suites
WAHA_TEST_LEVEL=2 npm run test:live # includes self-chat writes
WAHA_TEST_LEVEL=3 npm run test:live # includes configured contact writesThe default test and CI paths never contact WhatsApp.
Security
Treat the backend API key as a password; never commit it.
Sending through an unofficial WhatsApp API can trigger anti-abuse controls. Keep automation narrow and rate-limited.
Media and chat exports can contain sensitive data. Review automation policy before enabling analysis, replies, or archival.
Rotate any credential that has previously appeared in Git history.
License
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceEnables WhatsApp integration through Evolution API, allowing users to send messages, manage media, track conversations, and control presence status directly from Claude.MIT
- Alicense-qualityCmaintenanceEnables Claude to read and send WhatsApp messages, including media and call history, via a local bridge.MIT
- Alicense-qualityDmaintenanceEnterprise-grade WhatSMS integration for Claude AI providing 173 tools for SMS, WhatsApp, OTP, contacts, and device management.7MIT
- AlicenseBqualityDmaintenanceEnables Claude to manage WhatsApp templates, flows, and send messages through the WhatsApp Cloud API.3124MIT
Related MCP Connectors
Drive your real WhatsApp inbox from Claude — send, reply, label, assign, and triage via TimelinesAI.
Send and read WhatsApp messages on your Leporis account from AI coding agents, via your own API key.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Maheidem/waha-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server