WhatsApp MCP server
aimcpwhatsappwhatsapp apiOverview
From the repository's own README, as read at the audited commit.
# WhatsApp MCP ServerThis is a Model Context Protocol (MCP) server for WhatsApp.With this you can search and read your personal Whatsapp messages (including images, videos, documents, and audio messages), search your contacts and send messages to either individuals or groups. You can also send media files including images, videos, documents, and audio messages.It connects to your **personal WhatsApp account** directly via the Whatsapp web multidevice API (using the [whatsmeow](https://github.com/tulir/whatsmeow) library). All your messages are stored locally in a SQLite database and only sent to an LLM (such as Claude) when the agent accesses them through tools (which you control).Here's an example of what you can do when it's connected to Claude.> To get updates on this and other projects I work on [enter your email here](https://docs.google.com/forms/d/1rTF9wMBTN0vPfzWuQa2BjfGKdKIpTbyeKxhPMcEzgyI/preview)> *Caution:* as with many MCP servers, the WhatsApp MCP is subject to [the lethal trifecta](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/). This means that project injection could lead to private data exfiltration.## Installation### Prerequisites- Go- Python 3.6+- Anthropic Claude Desktop app (or Cursor)- UV (Python package manager), install with `curl -LsSf https://astral.sh/uv/install.sh | sh`- FFmpeg (_optional_) - Only needed for audio messages. If you want to send audio files as playable WhatsApp voice messages, they must be in `.ogg` Opus format. With FFmpeg installed, the MCP server will automatically convert non-Opus audio files. Without FFmpeg, you can still send raw audio files using the `send_file` tool.### Steps1. **Clone this repository** ```bash git clone https://github.com/lharries/whatsapp-mcp.git cd whatsapp-mcp ```2. **Run the WhatsApp bridge** Navigate to the whatsapp-bridge directory and run the Go application: ```bash cd whatsapp-bridge go run main.go ``` The first time you run
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add whatsapp-mcp-server -- uvx whatsapp-mcp-server
{
"mcpServers": {
"whatsapp-mcp-server": {
"command": "uvx",
"args": [
"whatsapp-mcp-server"
]
}
}
}Exposed tools (12) 9 read · 3 write · 0 destructive
| Tool | Risk | Description |
|---|---|---|
download_media | read | Download media from a WhatsApp message and get the local file path. |
get_chat | read | Get WhatsApp chat metadata by JID. |
get_contact_chats | read | Get all WhatsApp chats involving the contact. |
get_direct_chat_by_contact | read | Get WhatsApp chat metadata by sender phone number. |
get_last_interaction | read | Get most recent WhatsApp message involving the contact. |
get_message_context | read | Get context around a specific WhatsApp message. |
list_chats | read | Get WhatsApp chats matching specified criteria. |
list_messages | read | Get WhatsApp messages matching specified criteria with optional context. |
search_contacts | read | Search WhatsApp contacts by name or phone number. |
send_audio_message | write | Send any audio file as a WhatsApp audio message to the specified recipient. For group messages use the JID. If it errors due to ffmpeg not being installed, use send_file instead. |
send_file | write | Send a file such as a picture, raw audio, video or document via WhatsApp to the specified recipient. For group messages use the JID. |
send_message | write | Send a WhatsApp message to a person or group. For group chats use the JID. |
Details
- Source
- lharries/whatsapp-mcp
- PyPI
whatsapp-mcp-server- Transports
- stdio
- License
- MIT
- Stars
- 6,256 · pushed 426d ago
Trust audit
Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (2)
- UV (Python package manager), install with `curl -LsSf https://astral.sh/uv/install.sh | sh`
example-use.png
Gates applied: no_behavioural_pass.
Audited 2026-09-13 · audit v0.4.0 · source sha b3c2312ef81a · full audit: observations/trust-audit/mcp-server/lharries__whatsapp-3.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-13 | b3c2312ef81a | SAFE | B | 89 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the WhatsApp MCP server?
WhatsApp MCP server
What tools does WhatsApp expose?
12 in total: 9 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is WhatsApp safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does WhatsApp need?
No credential environment variables were found in its source, so it appears to need none.
How does WhatsApp run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as whatsapp-mcp-server.
How current is this page?
The grade is for one exact copy of the source (b3c2312ef81a), read on 2026-09-13. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-13 · job trust-audit-2026-09-13