mrkeyoor.com_
Fri 02 Oct 15:37 UTC
LLM Toolsevaluationupdated 02 Oct 2026

whatsapp-mcp review

WhatsApp MCP connects Claude Desktop or Cursor to a personal WhatsApp account so the agent can search chats, read messages, download media, and send text or files. A Go bridge handles WhatsApp and local SQLite storage, while a Python MCP server exposes the tools to the model.

Verdict

Our WhatsApp MCP run built in 76 seconds, but its test command found 0 tests and the current bridge exposes unauthenticated send routes on port 8080, so we would not connect it to a primary account as shipped. It can be useful as code for a private experiment after a security review, localhost binding, authentication, and strict MCP approvals. For dependable messaging automation, choose a maintained API and add a narrower agent interface.

We ran it

Lab card: what happened when we ran whatsapp-mcpScreenshot of whatsapp-mcp (x.com/LukeHarries_/status/1905986562388635913)
Install✓ · 13s33 packages
Build✓ · 76s
Tests✓ · 18s0 passed · 0 failed of 0 (go test)
Repo14 files~2,479 lines of source · 3.3 MB · 0 CI workflows

Answers from our run

Does whatsapp-mcp build from source?

Dependencies installed in 13 seconds (33 packages), and the build succeeded in 76 seconds. We cloned commit 7d6a06d into a clean Debian container with 3 CPUs and no project-specific setup.

Do whatsapp-mcp's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use whatsapp-mcp?

Anyone planning to run the current bridge on an untrusted network: commit 7d6a06d listens on port 8080 across all interfaces and its send and download handlers have no authentication check.

What are the alternatives to whatsapp-mcp?

WhatsApp Cloud API, WAHA, WPPConnect Server. Our WhatsApp MCP run built in 76 seconds, but its test command found 0 tests and the current bridge exposes unauthenticated send routes on port 8080, so we would not connect it to a primary account as shipped.

Setup2/5Two runtimes, QR auth, CGO on Windows, and no Dockerfile
Docs3/5Clear flow and tools, but Python requirements contradict metadata
Community2/56,372 stars and new PRs, but no maintainer push since July 2025
Maturity1/5v0.0.1, zero tests, unauthenticated bridge, and 251 open items

Who it’s for

Developers experimenting on a spare or low-risk personal WhatsApp account.
MCP users who need local search across chats and understand prompt-injection risks.
Tinkerers prepared to audit the bridge, bind it to localhost, add authentication, and maintain a fork.
People who can run a persistent Go process beside a Python MCP client and manage QR reauthentication.

Who it’s NOT for

Anyone planning to run the current bridge on an untrusted network: commit 7d6a06d listens on port 8080 across all interfaces and its send and download handlers have no authentication check.
Users who want an actively maintained upstream: the last push was July 13, 2025, while 158 pull requests were still open on October 2, 2026.
Teams that require tested releases: our Go test run found 0 tests, the repository has no CI workflows, and the only GitHub release is v0.0.1.
Windows users unwilling to install a C compiler and enable CGO for SQLite, as the README requires both.
Accounts containing conversations that an agent must never disclose or act on: the README itself warns that prompt injection can lead to private-data exfiltration.

Setup reality

Our sandbox installed the Go bridge at commit 7d6a06d in 13 seconds, adding 33 packages. The build succeeded in 76 seconds. go test completed in 18 seconds but reported 0 passed and 0 failed because there were no tests.

The complete app also needs Python, uv, an MCP client, and a phone scan for WhatsApp authentication. The README says Python 3.6 or newer, while the Python package metadata requires 3.11 or newer. FFmpeg is optional unless you want automatic voice-message conversion.

Windows adds CGO plus a C compiler. The bridge and MCP server must run together, local SQLite files hold chats and session data, and the README says reauthentication may be needed after about 20 days. The measured commit has no Dockerfile or CI workflow.

Twelve tools put personal chats and outbound messages in one agent

WhatsApp MCP exposes 12 tools for contact search, chat listing, message retrieval, context lookup, text sending, file sending, voice messages, and media downloads. The Go bridge links a personal account through WhatsApp's multi-device interface and stores chat data in SQLite. A Python process then presents those operations to Claude Desktop or Cursor over MCP. That is a useful combination, but it puts private data and an action channel behind the same model.

The README names the risk directly: untrusted message content can carry prompt injection, the agent can read private material, and it can send data elsewhere. This is the familiar MCP security failure where outside content, sensitive access, and outbound actions meet. Tool approval helps, but the available action is still powerful. A retrieved message can influence the same agent that has access to send_message, send_file, and local downloaded media.

The working setup is two processes, two languages, and a phone

The documented route starts the Go bridge inside whatsapp-bridge, then launches the Python MCP server through uv from the client configuration. The first bridge run displays a QR code for phone authentication. The README says the session may need reauthentication after about 20 days. Claude Desktop and Cursor need absolute paths in their JSON configuration, while voice-message conversion adds FFmpeg when the input is not already Ogg Opus.

There is a documentation mismatch before you begin. The prerequisites say Python 3.6 or newer, but whatsapp-mcp-server/pyproject.toml requires Python 3.11 or newer. Windows is more involved because go-sqlite3 needs CGO and a C compiler. The README recommends MSYS2, enabling CGO_ENABLED=1, and adding its compiler directory to PATH. Linux still needs both the Go and Python processes kept alive.

What happened when we ran it

Our unprivileged Debian sandbox installed the Go bridge at commit 7d6a06d in 13 seconds. Go fetched 33 packages, and the build completed successfully in 76 seconds on 3 CPUs with 8 GB of RAM and no secrets. The repository was small: 14 files, roughly 2,479 lines of source, and a 3.3 MB checkout.

go test completed in 18 seconds and reported 0 passed and 0 failed out of 0 tests. That is a successful command, not evidence that QR login, message synchronization, SQLite writes, contact resolution, or media delivery works. Our scan found no tests directory, no CI workflow, and no Dockerfile. We did not authenticate a WhatsApp account or exercise the Python MCP process, so the run says only that the Go bridge installs and compiles.

Port 8080 can send messages without an authentication check

commit 7d6a06d starts the Go REST server with :8080, which listens across network interfaces rather than only on localhost. Its /api/send and /api/download handlers validate request fields but do not check a token or caller identity. A pending pull request proposes authenticated bridge access and safer media paths, but that code is not in the reviewed commit. Keep this bridge behind a local firewall, or patch it before linking any account.

Local SQLite storage does reduce routine dependence on a hosted message database. It does not mean messages stay away from the model. The README says content is sent to the language model when the agent accesses it through a tool. Session data lives in whatsapp.db, and indexed chats live in messages.db. Backups, filesystem permissions, MCP logs, downloaded media, and the model provider all become part of the privacy boundary.

A July 2025 main branch trails 158 open pull requests

The main branch's last push was July 13, 2025, at the same 7d6a06d commit our lab built. GitHub showed 6,372 stars and 251 combined open items on October 2, 2026: 93 issues and 158 pull requests. Contributors were still opening fixes in October 2026, including proposals for bridge authentication and updated pairing, but those changes had not reached main. Active contributors do not compensate for an upstream that is not merging them.

The issue queue shows what that lag costs. Issue 344 reports media downloads returning 403 even while text synchronization works. Issue 198 documents contact-name confusion after WhatsApp's move toward linked-device identifiers. Multiple open pull requests propose updates to the underlying whatsmeow client, contact mapping, and media handling. The only GitHub release, v0.0.1, was published in April 2025.

This repository is readable enough to fork, and our 76-second build gives a useful starting point. As a ready-to-connect personal assistant, it asks for too much trust: no tests, a stale main branch, unauthenticated network handlers, and direct access to private conversations. Use a spare account and narrow network boundary if you are studying the design. Do not treat the current main branch as a finished personal-messaging product.

Alternatives

ProjectWhat it isPick it when
WhatsApp Cloud APIMeta's supported API for business messaging through approved WhatsApp accounts.pick this instead when supported business messaging and a documented platform matter more than personal chat access.
WAHAA self-hosted WhatsApp HTTP API with several browser and socket engines.pick this instead when you want a maintained HTTP service and will build the MCP layer yourself.
WPPConnect ServerA ready-to-run WhatsApp automation server with an HTTP API.pick this instead when application integration matters more than direct Claude tools.

What people are saying

  1. [github-trending] lharries/whatsapp-mcp

Sources

  1. WhatsApp MCP repository and README
  2. WhatsApp MCP v0.0.1 release
  3. Repository maintenance question
  4. Media download 403 report
  5. Contact identity mapping report
  6. Bridge authentication pull request

More llm tools reviews

deepseek-recipe · Edge0 · ag-ui · awesome-codex-plugins · claude-style-patch · agent-toolkit-for-aws · the whole board →