WhatsApp Web MCP
The WhatsApp Web MCP server allows agents to interact with WhatsApp Web programmatically via browser automation, enabling reading, searching, exporting, and sending messages. Key capabilities include:
Session Management: Open/close browser sessions in headless or headed mode, capture QR codes for login, and configure browser policies (
whatsapp_browser_open,whatsapp_browser_close,whatsapp_browser_policy).Chat & Contact Discovery: List and search contacts/chats directly from the WhatsApp Web DOM — no SQLite or IndexedDB access required (
whatsapp_find_contacts,whatsapp_select_context).Message Reading & Search: Retrieve recent messages, browse history, and search by text, message type, and date/time range. View chat structure grouped by day or hour (
whatsapp_search_messages,whatsapp_chat_structure).Export: Export full conversations to JSON, including media and transcriptions (
whatsapp_export_conversation).Media Capture & Transcription: Capture images, stickers, GIFs, audio, video, and documents from messages. Transcribe audio/video using WhisperX with optional speaker diarization, supporting WAV, MP3, M4A, OGG, OPUS, FLAC, WebM, MP4, MOV, MKV, and AVI formats (
whatsapp_transcribe_file).Sending Messages (Two-Step Confirmation): Prepare a text message or document (returns a token/preview without sending), then explicitly confirm to dispatch. Probe media attachment or reply-to mode without actually sending (
whatsapp_prepare_send_message,whatsapp_confirm_send_message,whatsapp_probe_send_media,whatsapp_probe_reply_to_message).Status & Capabilities: Check server capabilities, supported formats, and browser runtime status (
whatsapp_capabilities,whatsapp_browser_runtime_status).
Key design principles: All reads and exports never send messages. Sending always requires a two-step prepare → confirm flow. The server operates entirely via the rendered DOM with no direct database access, and supports auto-recovery with persistent profiles.
Allows agents to search, structure, and export authorized WhatsApp Web conversations, including media transcription and message sending with confirmation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WhatsApp Web MCPsearch for 'invoice' in my chat with John"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WhatsApp Web MCP
Servidor MCP de domínio para agentes consultarem e exportarem conversas autorizadas do WhatsApp Web. O cliente pede chats, mensagens, mídia, transcrições ou ações; sessão, busca, seleção, scroll e recuperação ficam encapsulados no servidor.
Projeto independente e não oficial. Não é afiliado ao WhatsApp ou à Meta. Use somente em contas e conversas que você tem autorização para acessar.
Recursos
Perfil persistente
default, headless por padrão.observe=truepara mostrar somente a operação atual.Busca e leitura pelo DOM renderizado, sem SQLite ou IndexedDB local.
Mensagens recentes sempre reposicionadas no fim da conversa.
Histórico e pesquisa paginados por cursor opaco.
Texto, direção, participante, reply, forwarded e tipo de mídia em JSON.
Captura de mídia pelo
message_id; associações incertas ficam separadas.Transcrição de áudio e vídeo exclusivamente com WhisperX.
Export persistente com mensagens, replies, mídia e transcrições.
Autorrecuperação com uma única reinicialização no mesmo perfil.
Envios protegidos por intenção explícita, preview e confirmação literal.
Related MCP server: WhatsApp MCP Stream
API MCP v0.2
O servidor publica somente estas ferramentas:
whatsapp_statuswhatsapp_list_chatswhatsapp_get_messageswhatsapp_get_mediawhatsapp_export_chatwhatsapp_transcribe_filewhatsapp_prepare_actionwhatsapp_confirm_actionwhatsapp_action_status
Todas recebem um objeto request. Parâmetros de navegador, sessão, seletores,
scroll e Playwright não fazem parte da API.
Ler mensagens recentes
{
"request": {
"selector": "Troco Solidário - Anotações",
"mode": "recent",
"limit": 50
}
}selector aceita string ou objeto com title, query, phone e jid.
Depois de whatsapp_list_chats, prefira o chat_id retornado.
Histórico e pesquisa
{
"request": {
"chat_id": "chat_...",
"mode": "search",
"query": "contrato",
"message_types": ["text", "document", "audio"],
"date_from": "2026-06-01",
"date_to": "2026-06-13",
"limit": 100,
"cursor": "cur_..."
}
}Modos disponíveis: recent, history e search. A resposta inclui
latest_boundary_verified, métricas de paginação e next_cursor.
Capturar mídia
{
"request": {
"chat_id": "chat_...",
"message_id": "3EB0...",
"transcribe": true,
"diarize": false
}
}Áudio e vídeo podem ser transcritos com WhisperX. Imagens, stickers, GIFs e documentos retornam o caminho do arquivo capturado.
Mostrar uma operação
{
"request": {
"chat_id": "chat_...",
"mode": "recent",
"limit": 10,
"observe": true
}
}O override vale somente para essa chamada. A sessão volta ao modo headless ao terminar.
Estado de suporte
Recurso | Estado |
Listar e localizar chats | Suportado |
Ler recente, histórico e pesquisa | Suportado |
Exportar JSON | Suportado |
Capturar imagem, sticker e mídia renderizada | Suportado |
Capturar/transcrever áudio e vídeo | Suportado quando a mídia e o WhisperX estão disponíveis |
Enviar texto | Verificado, sempre com confirmação |
Enviar documento, incluindo | Verificado, sempre com confirmação |
Enviar outras mídias, reply ou encaminhamento | Bloqueado até smoke confirmado específico |
SQLite/IndexedDB local | Não utilizado |
Instalação
Requisitos: Python 3.11 ou 3.12, Chrome/Chromium e FFmpeg.
git clone https://github.com/KingDonRush/whatsapp-web-mcp.git
cd whatsapp-web-mcp
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m playwright install chromiumO servidor usa transporte MCP stdio:
whatsapp-web-mcpConfiguração do harness
{
"mcpServers": {
"whatsapp-web": {
"command": "/absolute/path/whatsapp-web-mcp/.venv/bin/whatsapp-web-mcp",
"args": [],
"env": {
"WHATSAPP_MCP_DATA_DIR": "/absolute/persistent/path/whatsapp-web-mcp"
}
}
}
}Exemplo para Codex:
[mcp_servers.whatsapp-web]
command = "/absolute/path/whatsapp-web-mcp/.venv/bin/whatsapp-web-mcp"
enabled = true
startup_timeout_sec = 30.0
[mcp_servers.whatsapp-web.env]
WHATSAPP_MCP_DATA_DIR = "/absolute/persistent/path/whatsapp-web-mcp"Comece com whatsapp_status. Se a conta não estiver autenticada, a resposta
será login_required com um qr_artifact. Depois do login, o perfil
persistente default será reutilizado.
Confirmação de envio
O envio é sempre uma operação em duas etapas:
whatsapp_prepare_actionexige ordem explícita do usuário e retorna preview,action_ide a frase exata de confirmação.whatsapp_confirm_actionsó despacha comCONFIRMO ENVIAR <action_id>euser_confirmed=true.
Exemplo:
{
"request": {
"type": "send_document",
"chat_id": "chat_...",
"file_path": "/absolute/arquivo.zip",
"caption": "Entrega",
"user_order_text": "Envie este arquivo para o grupo"
}
}Leituras e exports nunca enviam mensagens. A confirmação é consumida atomicamente após sucesso para impedir replay.
WhisperX
python -m pip install -e '.[transcription]'Ou configure uma venv separada:
python3.11 -m venv .venv-whisperx
.venv-whisperx/bin/pip install whisperx
export WHISPERX_PYTHON="$PWD/.venv-whisperx/bin/python"Formatos aceitos incluem os formatos de áudio definidos pelo FFmpeg/WhisperX
como WAV, MP3, M4A, OGG, OPUS, FLAC e WebM, além de vídeos como MP4, MOV, MKV,
AVI e WebM. Vídeos têm o áudio extraído antes da transcrição. Diarização usa
diarize=true e pode receber min_speakers e max_speakers.
Docker e VPS
docker build -t whatsapp-web-mcp .
mkdir -p runtime
sudo chown -R 10001:10001 runtime
docker run --rm -i -v "$PWD/runtime:/data" whatsapp-web-mcpEm VPS, execute o servidor atrás de um harness autenticado ou por SSH stdio.
Não exponha o processo diretamente à internet. O volume persistente deve
proteger o perfil autenticado, exports e ações pendentes.
Dados sensíveis
WHATSAPP_MCP_DATA_DIR/
├── state/
│ ├── browser-profiles/default/
│ └── domain/
└── exports/Nunca publique state/, exports/, QR codes, transcrições, tokens ou arquivos
de mídia. O .gitignore também exclui node_modules/, ambientes locais e
arquivos .env.
Variáveis principais:
Variável | Uso |
| Raiz de estado e exports |
| Override do estado |
| Override dos exports |
| Chrome/Chromium específico |
| Executável FFmpeg |
| Python com WhisperX |
| Cache dos modelos |
| Token opcional para diarização |
Desenvolvimento
python -m unittest discover -s tests -v
python -m compileall server.py whatsapp_web_mcp testsLicença MIT. Consulte SECURITY.md antes de hospedar uma instância autenticada.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KingDonRush/whatsapp-web-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server