WhatsApp MCP Server
An MCP server that enables AI to control WhatsApp Web via Puppeteer Stealth for reading and sending messages. It features human-like interaction patterns and anti-ban protections to securely manage chats and communications through natural language.
README
đą WhatsApp MCP Server

Un serveur MCP (Model Context Protocol) pour contrĂŽler WhatsApp Web via Puppeteer Stealth, permettant Ă ton IA (Claude/Antigravity) de lire et envoyer des messages comme un humain.
đ Architecture
whatsapp-server/
âââ src/
â âââ index.ts â EntrĂ©e FastMCP, enregistre les outils
â âââ services/
â â âââ whatsappService.ts â Singleton : gĂšre browser/page/delays
â âââ tools/
â âââ connectWhatsappTool.ts â Outil : se connecter Ă WhatsApp Web
â âââ listChatsTool.ts â Outil : lister les discussions
â âââ sendMessageTool.ts â Outil : envoyer un message
â âââ readMessageTool.ts â Outil : lire les messages
âââ assets/ â Screenshots README
âââ .gitignore â ProtĂšge session, .env, configs perso
âââ eslint.config.js
âââ tsconfig.json
âââ package.json
Flow :
AI (Claude/Antigravity)
â tool calls (MCP stdio)
âŒ
whatsapp-mcp-server (FastMCP)
âââ ConnectWhatsappTool
âââ ListChatsTool
âââ SendMessageTool
âââ ReadMessageTool
â shared singleton
âŒ
WhatsappService
â puppeteer-extra + stealth plugin
âŒ
Chrome (headless ou visible)
â
âŒ
https://web.whatsapp.com/
âïž Installation
1. Copier le dossier
cd "whatsapp-server"
2. Installer les dépendances
pnpm install
3. Compiler
pnpm run build
4. Ajouter dans mcp_config.json
"whatsapp-server": {
"command": "node",
"args": [
"/chemin/vers/whatsapp-server/dist/index.js"
],
"disabled": false
}
đ Utilisation
Ătape 1 â Connexion (premiĂšre fois)
Demande Ă l'IA :
"Connecte-toi Ă WhatsApp en mode non headless"
L'outil connect_whatsapp ouvre Chrome et affiche le QR code :

Sur ton téléphone :
- Ouvre WhatsApp
- Menu > Appareils connectés (Android) ou ParamÚtres > Appareils connectés (iPhone)
- Connecter un appareil
- Scanne le QR code
â
La session est sauvegardĂ©e dans ./whatsapp_session/ â pas besoin de rescanner.
Ătape 2 â Lister les discussions
Demande Ă l'IA :
"Liste mes conversations WhatsApp"

Ătape 3 â Envoyer un message
Demande Ă l'IA :
"Envoie 'Bonjour !' Ă [Nom du contact] sur WhatsApp"

Ătape 4 â Lire les messages
Demande Ă l'IA :
"Lis les derniers messages de [Nom du contact] sur WhatsApp"
L'outil read_messages extrait l'historique récent avec l'expéditeur et l'horodatage.
đĄïž Anti-Ban â Comportement Humain
| Protection | Détail |
|---|---|
| Puppeteer Stealth | Masque les empreintes Puppeteer (navigator.webdriver, etc.) |
| DĂ©lais alĂ©atoires | 300msâ5000ms entre chaque action |
| Frappe humaine | 100â300ms par touche pour la recherche |
| Session persistante | whatsapp_session/ évite les reconnexions fréquentes |
| User Agent réaliste | Chrome 120 / Windows 10 64-bit |
| Auto-dismiss dialog | Clique automatiquement sur "Utiliser ici" si détecté |
| Reconnexion propre | Ferme l'ancien browser avant d'en ouvrir un nouveau |
đ§ Outils MCP disponibles
connect_whatsapp
Lance le navigateur et ouvre WhatsApp Web.
| ParamÚtre | Type | Défaut | Description |
|---|---|---|---|
headless |
boolean | false |
Mode invisible. Mettre false pour scanner le QR code. |
list_chats
Liste les discussions récentes.
| ParamÚtre | Type | Défaut | Description |
|---|---|---|---|
limit |
number | 10 |
Nombre max de chats Ă retourner. |
send_message
Envoie un message Ă un contact ou groupe.
| ParamĂštre | Type | Requis | Description |
|---|---|---|---|
chatName |
string | â | Nom exact du contact ou groupe. |
message |
string | â | Contenu du message Ă envoyer. |
read_messages
Lit les messages récents d'une discussion spécifique.
| ParamĂštre | Type | Requis | Description |
|---|---|---|---|
chatName |
string | â | Nom exact du contact ou groupe. |
limit |
number | 10 | Nombre de messages à récupérer (max visibles). |
đ Commandes
pnpm install # Installer les dépendances
pnpm run build # Compiler TypeScript â dist/
pnpm run dev # Lancer en mode développement (tsx)
pnpm run lint # Vérifier le code avec ESLint
pnpm run format # Formater avec Prettier
â ïž Recommandations
- Ne pas spammer : laisser des délais naturels entre les usages.
- Session warmup : aprĂšs le premier QR scan, ouvre 2-3 discussions manuellement avant de fermer Chrome.
- Headless=false pour le premier scan. Ensuite
trueest possible pour les relances. - 1 compte = 1 session : ne pas utiliser le mĂȘme numĂ©ro sur plusieurs instances simultanĂ©es.
đ SĂ©curitĂ© â Ce qui est protĂ©gĂ© par .gitignore
| Dossier/Fichier | Raison |
|---|---|
whatsapp_session/ |
Cookies et tokens de session WhatsApp |
.env |
Variables sensibles (clés API, numéros de téléphone) |
mcp_config.json |
Chemins locaux et configs privées |
dist/ |
Build gĂ©nĂ©rĂ© â reconstruit avec pnpm build |
node_modules/ |
DĂ©pendances â reconstruit avec pnpm install |
DĂ©veloppĂ© par Deamon â Architecture calquĂ©e sur le serveur SMS/VoIP.ms MCP
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.