← MCP servers · lharries

WhatsApp

SAFEgrade B · trust 89/100

WhatsApp MCP server

aimcpwhatsappwhatsapp api

Overview

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.![WhatsApp MCP](./example-use.png)> 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-code
claude mcp add whatsapp-mcp-server -- uvx whatsapp-mcp-server
claude-desktop
{
  "mcpServers": {
    "whatsapp-mcp-server": {
      "command": "uvx",
      "args": [
        "whatsapp-mcp-server"
      ]
    }
  }
}

Exposed tools (12) 9 read · 3 write · 0 destructive

ToolRiskDescription
download_mediareadDownload media from a WhatsApp message and get the local file path.
get_chatreadGet WhatsApp chat metadata by JID.
get_contact_chatsreadGet all WhatsApp chats involving the contact.
get_direct_chat_by_contactreadGet WhatsApp chat metadata by sender phone number.
get_last_interactionreadGet most recent WhatsApp message involving the contact.
get_message_contextreadGet context around a specific WhatsApp message.
list_chatsreadGet WhatsApp chats matching specified criteria.
list_messagesreadGet WhatsApp messages matching specified criteria with optional context.
search_contactsreadSearch WhatsApp contacts by name or phone number.
send_audio_messagewriteSend 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_filewriteSend a file such as a picture, raw audio, video or document via WhatsApp to the specified recipient. For group messages use the JID.
send_messagewriteSend 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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (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)

LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:24
- UV (Python package manager), install with `curl -LsSf https://astral.sh/uv/install.sh | sh`
INFOInventory / provenance · inv.oversize · CWE-1104
example-use.png
example-use.png
Why it matters. 3149200 bytes not read

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

DateSourceVerdictGradeScoreChange
2026-09-13b3c2312ef81aSAFEB89first 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