whatsapp-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RUST_LOG | No | Log level for logs written to stderr. Default is info. | info |
| WA_BRIDGE | No | Path to the wa-bridge binary. Defaults to wa-bridge located next to wa-mcp. Equivalent flag: --bridge. | |
| WA_DATA_DIR | No | Directory for WhatsApp sessions, databases and media. Defaults to ~/Library/Application Support/wa-mcp on macOS or ~/.local/share/wa-mcp. Equivalent flag: --data-dir. | |
| WA_READ_ONLY | No | When enabled, hides every tool that writes to WhatsApp. Equivalent flag: serve --read-only. Default is off. | off |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {
"subscribe": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| blocklistC | Liste des contacts bloqués, ou blocage / déblocage d'un contact. |
| check_whatsappB | Vérifie si des numéros ont un compte WhatsApp, sans rien leur envoyer. |
| create_groupA | Crée un groupe (avec ses membres) ou une communauté ; un groupe peut être rattaché d'emblée à une communauté. |
| delete_messageA | Supprime un message pour tout le monde : les miens pendant environ deux jours et demi, ceux des autres seulement si je suis administrateur du groupe. Irréversible. |
| edit_messageA | Modifie le texte d'un de mes messages, dans les 15 minutes qui suivent son envoi. L'ancien texte est remplacé chez tous les destinataires. |
| get_chatB | Détail d'une discussion : pour un groupe, sujet, réglages et participants ; pour une personne, ses noms, son numéro et les groupes en commun. |
| get_contactB | Fiche d'un contact : noms, numéro, dernière discussion et groupes en commun. |
| get_mediaA | Télécharge le média d'un message (vocal, image, vidéo, document, sticker) et le rend tel quel : chemin local, et le fichier lui-même joint pour une image ou un audio de taille raisonnable. Aucune transcription ni description : c'est au modèle de les faire. |
| get_message_contextB | Un message et ceux qui l'entourent dans sa discussion, par exemple après une recherche. |
| get_profileB | Profil public d'un contact : texte « Infos », photo, nom vérifié, nombre d'appareils, et fiche entreprise s'il en a une. |
| group_invite_linkB | Lien d'invitation d'un groupe (il faut en être administrateur) ; |
| handle_join_requestsB | Accepte ou refuse des demandes d'adhésion à un groupe. |
| join_groupC | Rejoint un groupe par son lien d'invitation. |
| leave_groupB | Quitte un groupe. Pour y revenir, il faudra y être réinvité. |
| link_to_communityC | Rattache un groupe existant à une communauté, ou l'en détache ( |
| list_accountsA | Liste les comptes WhatsApp servis, avec leur état de connexion et le volume de données. |
| list_chatsB | Liste les discussions (individuelles et groupes), épinglées puis les plus récentes, avec le dernier message. |
| list_join_requestsB | Demandes d'adhésion en attente d'un groupe à approbation (il faut en être administrateur). |
| list_messagesA | Messages d'une discussion en ordre chronologique, la page la plus récente d'abord ; |
| list_recentA | Tout ce qui est arrivé depuis un moment donné, toutes discussions confondues, en ordre chronologique : le point de départ pour « quoi de neuf ». |
| mark_readB | Marque une discussion comme lue : envoie les accusés de lecture (coches bleues) des derniers messages reçus. |
| preview_group_linkB | Aperçu d'un groupe à partir de son lien d'invitation, sans le rejoindre. |
| privacy_settingsB | Réglages de confidentialité (vu à, en ligne, photo, statut, confirmations de lecture, qui peut m'ajouter à un groupe…), en lecture ou pour en modifier un. |
| reactA | Réagit à un message avec un emoji, ou retire sa réaction (emoji vide). Remplace une réaction précédente. |
| request_historyA | Demande au téléphone des messages plus anciens que le plus ancien connu d'une discussion (le téléphone doit être en ligne). Attend jusqu'à 45 s leur arrivée, puis |
| search_contactsA | Cherche des contacts par nom (carnet, nom WhatsApp, nom d'entreprise) ou par partie de numéro. |
| search_messagesA | Recherche plein texte dans les messages (texte, légendes, noms de fichiers), les plus récents d'abord. Tous les mots sont requis ; accents et casse ignorés. |
| send_locationB | Envoie une position (latitude, longitude), avec un nom et une adresse facultatifs. |
| send_mediaB | Envoie un fichier local : image, vidéo, audio, document, ou message vocal (OGG Opus avec as_voice_note). Le type est déduit de l'extension. |
| send_messageA | Envoie un message texte, éventuellement en réponse à un message (cité) et avec des mentions. Irréversible une fois parti (voir delete_message). |
| send_pollB | Crée un sondage (2 à 12 choix, un seul ou plusieurs par personne). |
| send_presenceB | Affiche « en train d'écrire » ou « enregistre un vocal » dans une discussion, ou l'arrête (paused). À utiliser juste avant un envoi. |
| session_logoutA | Délie un compte : la session est fermée côté WhatsApp (l'appareil disparaît du téléphone). Les messages déjà stockés restent sur disque. Irréversible sans nouvel appairage. |
| session_pairA | Lie un nouveau compte WhatsApp à ce serveur : rend un code à 8 caractères à saisir sur le téléphone. L'historique arrive ensuite en quelques minutes. |
| session_statusB | État d'un compte : connexion, numéro, dernière connexion, volume de messages et période couverte. |
| set_aboutC | Change le texte « Infos » de mon profil. |
| update_chatB | Réglages d'une discussion, synchronisés sur tous mes appareils : archiver, épingler, mettre en sourdine, marquer comme lue ou non lue. |
| update_groupA | Modifie un groupe : nom, description, qui peut écrire, qui peut le modifier, approbation des nouveaux membres, messages éphémères, photo. Il faut en être administrateur. |
| update_group_participantsB | Ajoute, retire, nomme administrateur ou rétrograde des membres d'un groupe. Le résultat est donné personne par personne. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| catch_up | Rattraper ce qui s'est passé sur WhatsApp : qui attend une réponse, ce qui est important, le reste en bref. |
| daily_digest | Digest d'une journée dans les groupes : un paragraphe par groupe actif. |
| draft_reply | Proposer une réponse à une discussion, dans mon style d'écriture. |
| extract_actions | Extraire les actions : tâches, rendez-vous, dates, engagements pris. |
| summarize_chat | Résumer une discussion sur une période : sujets, décisions, questions en suspens. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| accounts | Les comptes servis et leur état de connexion. |
TDQS
Scored across 39 tools
Most tools target a distinct resource+action (send_message vs edit_message vs delete_message vs react; list_messages vs list_recent vs get_message_context). A few could be mildly confused, such as get_contact vs get_profile vs get_chat, and list_join_requests vs handle_join_requests, but the descriptions clearly differentiate them.
The set is consistently snake_case and predominantly verb_noun (send_message, create_group, update_group, delete_message). A handful deviate with noun-only or ambiguous names (blocklist, react, group_invite_link, privacy_settings), but the pattern remains largely readable.
39 tools is heavy and pushes into the crowded range, even though the WhatsApp domain (messaging, groups, communities, sessions, privacy, media, presence) is genuinely broad. Most tools earn their place, but the surface is large enough to burden selection.
Coverage is extensive: full messaging CRUD, groups and communities, participants, sessions (pair/logout/status), privacy settings, presence, media, polls, contacts, search, and history backfill. Little of the domain appears to be missing.