An MCP server that enables interaction with WhatsApp using the Baileys library and Streamable HTTP transport. It supports managing contacts, chats, and messages, while providing a web admin UI for QR code authentication and media handling.
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.
Install from
M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Baileys has message upsert / hist sync spoofing and app state corruption when using maliciously crafted protocolMessage payload
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
process.env. You'll be asked to provide them before it can run.AUTO_DOWNLOAD_MAX_MBAUTO_DOWNLOAD_MEDIAAUTO_SELECT_CONTACTBAILEYS_LOG_LEVELDB_PATH— SESSION_DIR>/store.sqlite SQLite database path for chats/messages persistence.FFMPEG_PATHLOG_LEVELMCP_BASE_URLMCP_HTTP_ENABLE_JSON_RESPONSE— 1 Use direct JSON responses for Streamable HTTP POST requests by default. Set to 0 to force the older SSE-style POST response handling.MEDIA_DIR— Settings can be edited in the admin UI and are persisted to SETTINGS_PATH (defaults to /settings.json).MEDIA_PUBLIC_BASE_URLPUBLIC_BASE_URLREQUIRE_UPLOAD_TOKENSESSION_DIR— DB_PATH <>/store.sqlite SQLite database path for chats/messages persistence.SETTINGS_PATH— Settings can be edited in the admin UI and are persisted to (defaults to MEDIA_DIR/settings.json).TRANSPORTUPLOAD_ENABLEDUPLOAD_MAX_FILESUPLOAD_MAX_MBUPLOAD_TOKENWA_AUTO_DOWNLOAD_CONCURRENCY— 3 Max parallel auto-downloads. Auto-download runs through an in-process bounded queue so a burst of inbound media cannot saturate the I/O.WA_AUTO_DOWNLOAD_QUEUE_MAX— 200 Max queued auto-download jobs. Excess is dropped FIFO (oldest first) with a warning log; recent messages stay prioritised.WA_DISCONNECT_RECOVERY_DELAY_MS— 30000 How long to wait after a socket close before the disconnect watchdog forces reconnect/restart.WA_DISCONNECT_RECOVERY_RESTART_CODES— 428 Comma-separated disconnect status codes that should escalate straight to an internal restart watchdog.WA_EVENT_LOG— 0 Enable detailed WhatsApp event logs.WA_EVENT_STREAM— 0 Write raw Baileys event stream to a file for deep debugging.WA_EVENT_STREAM_PATH— /app/logs/wa-events.log File path for the event stream log.WA_IDEMPOTENCY_TTL_MS— 86400000 How long completed send_message idempotency records are retained in SQLite for safe retries.WA_INITIALIZE_TIMEOUT_MS— 120000 Race the WhatsApp client initialise against this deadline; set to 0 to disable. Throws on timeout so recovery can retry instead of hanging.WA_MESSAGE_INDEX_MAX— 20000 Max in-memory entries for message index (jid:id -> raw message).WA_MESSAGE_KEY_INDEX_MAX— 20000 Max in-memory entries for message key index (id -> raw message).WA_READINESS_GRACE_MS— 180000 Grace period during recovery/disconnect before /healthz turns unhealthy.WA_RESYNC_RECONNECT— 1 Enable reconnect safety net after force resync.WA_RESYNC_RECONNECT_DELAY_MS— 15000 Delay before reconnect after force resync (ms).WA_SEND_DEDUP_WINDOW_MS— 45000 Suppress exact duplicate send_message requests to the same JID within this window.WA_SYNC_RECOVERY_COOLDOWN_MS— 300000 Minimum delay between automatic app-state recoveries.WA_SYNC_RECOVERY_WINDOW_MS— 900000 Time window used to count repeated app-state corruption failures.WA_SYNC_SOFT_RECOVERY_LIMIT— 2 Number of soft recoveries before escalating to an internal restart.[](https://m8ven.ai/mcp/loglux-whatsapp-mcp-stream-0ltxck)