WhatsApp MCP via web.js or browserless Baileys: messages, media, chats, groups and contacts
Connect Runs on your machine
claude mcp add mcp-whatsapp-web -e WHATSAPP_BACKEND=<WHATSAPP_BACKEND> -e BAILEYS_SESSION_DIR=<BAILEYS_SESSION_DIR> -e LOG_LEVEL=<LOG_LEVEL> -e LOG_STDERR_LEVEL=<LOG_STDERR_LEVEL> -e WHATSAPP_HEADLESS=<WHATSAPP_HEADLESS> -e WHATSAPP_NO_SANDBOX=<WHATSAPP_NO_SANDBOX> -e BROWSER_EXECUTABLE_PATH=<BROWSER_EXECUTABLE_PATH> -e WHATSAPP_SESSION_DIR=<WHATSAPP_SESSION_DIR> -e WHATSAPP_PAIRING_PHONE_NUMBER=<WHATSAPP_PAIRING_PHONE_NUMBER> -e FFMPEG_PATH=<FFMPEG_PATH> -e WA_WEB_VERSION=<WA_WEB_VERSION> -e HEALTH_CHECK_INTERVAL_MS=<HEALTH_CHECK_INTERVAL_MS> -e TOOL_READY_TIMEOUT_MS=<TOOL_READY_TIMEOUT_MS> -e MCP_HTTP_PORT=<MCP_HTTP_PORT> -e MCP_HTTP_HOST=<MCP_HTTP_HOST> -e MCP_OAUTH=<MCP_OAUTH> -- npx -y [email protected]
{
"mcpServers": {
"mcp-whatsapp-web": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"WHATSAPP_BACKEND": "<WHATSAPP_BACKEND>",
"BAILEYS_SESSION_DIR": "<BAILEYS_SESSION_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"LOG_STDERR_LEVEL": "<LOG_STDERR_LEVEL>",
"WHATSAPP_HEADLESS": "<WHATSAPP_HEADLESS>",
"WHATSAPP_NO_SANDBOX": "<WHATSAPP_NO_SANDBOX>",
"BROWSER_EXECUTABLE_PATH": "<BROWSER_EXECUTABLE_PATH>",
"WHATSAPP_SESSION_DIR": "<WHATSAPP_SESSION_DIR>",
"WHATSAPP_PAIRING_PHONE_NUMBER": "<WHATSAPP_PAIRING_PHONE_NUMBER>",
"FFMPEG_PATH": "<FFMPEG_PATH>",
"WA_WEB_VERSION": "<WA_WEB_VERSION>",
"HEALTH_CHECK_INTERVAL_MS": "<HEALTH_CHECK_INTERVAL_MS>",
"TOOL_READY_TIMEOUT_MS": "<TOOL_READY_TIMEOUT_MS>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_OAUTH": "<MCP_OAUTH>"
}
}
}
}
{
"mcpServers": {
"mcp-whatsapp-web": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"WHATSAPP_BACKEND": "<WHATSAPP_BACKEND>",
"BAILEYS_SESSION_DIR": "<BAILEYS_SESSION_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"LOG_STDERR_LEVEL": "<LOG_STDERR_LEVEL>",
"WHATSAPP_HEADLESS": "<WHATSAPP_HEADLESS>",
"WHATSAPP_NO_SANDBOX": "<WHATSAPP_NO_SANDBOX>",
"BROWSER_EXECUTABLE_PATH": "<BROWSER_EXECUTABLE_PATH>",
"WHATSAPP_SESSION_DIR": "<WHATSAPP_SESSION_DIR>",
"WHATSAPP_PAIRING_PHONE_NUMBER": "<WHATSAPP_PAIRING_PHONE_NUMBER>",
"FFMPEG_PATH": "<FFMPEG_PATH>",
"WA_WEB_VERSION": "<WA_WEB_VERSION>",
"HEALTH_CHECK_INTERVAL_MS": "<HEALTH_CHECK_INTERVAL_MS>",
"TOOL_READY_TIMEOUT_MS": "<TOOL_READY_TIMEOUT_MS>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_OAUTH": "<MCP_OAUTH>"
}
}
}
}
{
"servers": {
"mcp-whatsapp-web": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"WHATSAPP_BACKEND": "<WHATSAPP_BACKEND>",
"BAILEYS_SESSION_DIR": "<BAILEYS_SESSION_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"LOG_STDERR_LEVEL": "<LOG_STDERR_LEVEL>",
"WHATSAPP_HEADLESS": "<WHATSAPP_HEADLESS>",
"WHATSAPP_NO_SANDBOX": "<WHATSAPP_NO_SANDBOX>",
"BROWSER_EXECUTABLE_PATH": "<BROWSER_EXECUTABLE_PATH>",
"WHATSAPP_SESSION_DIR": "<WHATSAPP_SESSION_DIR>",
"WHATSAPP_PAIRING_PHONE_NUMBER": "<WHATSAPP_PAIRING_PHONE_NUMBER>",
"FFMPEG_PATH": "<FFMPEG_PATH>",
"WA_WEB_VERSION": "<WA_WEB_VERSION>",
"HEALTH_CHECK_INTERVAL_MS": "<HEALTH_CHECK_INTERVAL_MS>",
"TOOL_READY_TIMEOUT_MS": "<TOOL_READY_TIMEOUT_MS>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_OAUTH": "<MCP_OAUTH>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
WHATSAPP_BACKENDOptional | WhatsApp backend: webjs uses a persistent browser profile; baileys connects without a browser and requires separate pairing |
BAILEYS_SESSION_DIROptional | Baileys credentials and synchronized history directory (default: <working directory>/baileys-sessions). Use a private absolute path, owned by one server process. |
LOG_LEVELOptional | Log level for the log file (logs/mcp-whatsapp.log) |
LOG_STDERR_LEVELOptional | Log level for stderr (visible in most MCP client logs) |
WHATSAPP_HEADLESSOptional | webjs only: set to false to show the browser window instead of running headless |
WHATSAPP_NO_SANDBOXOptional | webjs only: explicitly disable the browser sandbox for containers that require it. The sandbox is enabled by default. |
BROWSER_EXECUTABLE_PATHOptional | webjs only: browser executable. Chrome and Edge are auto-detected; set this to use a specific browser. Chrome/Edge is required for sending videos and GIFs. |
WHATSAPP_SESSION_DIROptional | webjs only: persistent browser profile directory (default: <working directory>/whatsapp-sessions) |
WHATSAPP_PAIRING_PHONE_NUMBEROptional | Phone number pairing: when set (international, symbol-free format, e.g. 4915112345678), an 8-character pairing code is logged to stderr on startup instead of relying on the QR code |
FFMPEG_PATHOptional | Path to an ffmpeg binary (only needed to override the ffmpeg installed automatically via the ffmpeg-static npm package) |
WA_WEB_VERSIONOptional | webjs only: pin the WhatsApp Web version if a WhatsApp-side update breaks the client. |
HEALTH_CHECK_INTERVAL_MSOptional | webjs only: connection health check interval in milliseconds (<=0 disables) |
TOOL_READY_TIMEOUT_MSOptional | How long tool calls wait for the WhatsApp client to become ready before erroring |
MCP_HTTP_PORTOptional | When set, additionally exposes the MCP endpoint at http://127.0.0.1:<port>/mcp (Streamable HTTP) from the same process |
MCP_HTTP_HOSTOptional | Bind address for the HTTP endpoint (do not expose publicly; the endpoint controls your personal WhatsApp account) |
MCP_OAUTHOptional | Enable OAuth for the HTTP endpoint: /mcp requires a bearer token and clients authenticate via a browser page showing the WhatsApp QR code / pairing form |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 5 Sep 2026 |
| Last updated | 5 Sep 2026 |
| Registry name | io.github.mario-andreschak/mcp-whatsapp-web |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
