Skip to main content
Glama
DimitrisPasakaleris

WhatsApp MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WEBHOOK_URLNoWebhook for incoming messageshttp://localhost:8769/whatsapp/webhook
FORWARD_SELFNoForward messages sent by selffalse
WHATSAPP_API_URLNoGo bridge REST API URLhttp://localhost:8080/api
WHATSAPP_DB_PATHNoPath to SQLite database../whatsapp-bridge/store/messages.db
WHATSMEOW_DB_PATHNowhatsmeow DB used for LID ↔ phone resolution../whatsapp-bridge/store/whatsapp.db
WHATSAPP_BRIDGE_PORTNoPort for Go bridge REST API8080

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_contactsB

Search WhatsApp contacts by name or phone number.

Args: query: Search term to match against contact names or phone numbers

get_contactA

Look up a WhatsApp contact by phone number, LID, or full JID.

Automatically detects the identifier type and queries appropriately.

Args: identifier: Phone number, LID, or full JID. Examples: - "12025551234" (phone number) - "184125298348272" (LID - long numeric) - "12025551234@s.whatsapp.net" (phone JID) - "184125298348272@lid" (LID JID) phone_number: Backward-compatible alias for identifier. phone: Backward-compatible alias for identifier (matches README parameter name).

Returns: Dictionary with jid, name, display_name, is_lid, and resolved status

list_messagesA

Get WhatsApp messages matching specified criteria with optional context.

Each message includes sender_display showing "Name (phone)" for easy identification.

Args: after: ISO-8601 date string (e.g., "2026-01-01" or "2026-01-01T09:00:00") before: ISO-8601 date string (e.g., "2026-01-09" or "2026-01-09T18:00:00") sender_phone_number: Phone number to filter by sender (e.g., "12025551234") chat_jid: Chat JID to filter by (e.g., "12025551234@s.whatsapp.net" or group JID) query: Search term to filter messages by content limit: Max messages to return (default 50, max 500) page: Page number for pagination (default 0) include_context: Include surrounding messages for context (default True) context_before: Messages to include before each match (default 1) context_after: Messages to include after each match (default 1) sort_by: "newest" (default, most recent first) or "oldest" (chronological)

list_chatsB

Get WhatsApp chats matching specified criteria.

Args: query: Search term to filter chats by name or JID limit: Max chats to return (default 50, max 200) page: Page number for pagination (default 0) include_last_message: Include the last message in each chat (default True) sort_by: "last_active" (default, most recent first) or "name" (alphabetical)

get_chatC

Get WhatsApp chat metadata by JID.

Args: chat_jid: The JID of the chat to retrieve include_last_message: Whether to include the last message (default True)

get_direct_chat_by_contactB

Get WhatsApp chat metadata by sender phone number.

Args: sender_phone_number: The phone number to search for

get_contact_chatsB

Get all WhatsApp chats involving the contact.

Args: jid: The contact's JID to search for limit: Maximum number of chats to return (default 20) page: Page number for pagination (default 0)

get_last_interactionB

Get the most recent WhatsApp message involving the contact.

Args: jid: The JID of the contact to search for

Returns: Message dictionary with id, timestamp, sender, content, etc. or empty dict if not found.

get_message_contextA

Get context around a specific WhatsApp message.

Args: message_id: The ID of the message to get context for before: Number of messages to include before the target message (default 5) after: Number of messages to include after the target message (default 5) chat_jid: Chat containing the message; required when its ID occurs in multiple chats

send_messageA

Send a WhatsApp message to a person or group. For group chats use the JID.

Args: recipient: The recipient — either a phone number with country code but no + or other symbols, or a JID (e.g., "123456789@s.whatsapp.net" or a group JID like "123456789@g.us") message: The message text to send

Returns: A dictionary containing success status and a status message

send_fileA

Send a file (image / raw audio / video / document) via WhatsApp. For group messages use the JID.

Args: recipient: The recipient — either a phone number with country code but no + or other symbols, or a JID (e.g., "123456789@s.whatsapp.net" or a group JID like "123456789@g.us") media_path: The absolute path to the media file to send (image, video, document)

Returns: A dictionary containing success status and a status message

send_audio_messageA

Send any audio file as a WhatsApp audio message. For group messages use the JID.

If ffmpeg isn't installed, use send_file instead.

Args: recipient: The recipient — either a phone number with country code but no + or other symbols, or a JID (e.g., "123456789@s.whatsapp.net" or a group JID like "123456789@g.us") media_path: The absolute path to the audio file (will be converted to Opus .ogg if needed)

Returns: A dictionary containing success status and a status message

download_mediaA

Download media from a WhatsApp message and get the local file path.

Args: message_id: The ID of the message containing the media chat_jid: The JID of the chat containing the message

Returns: A dictionary containing success status, a status message, and the file path if successful

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have clear, distinct purposes, but the chat-retrieval set has some overlap: list_chats, get_chat, get_direct_chat_by_contact, and get_contact_chats can be confusing depending on whether the agent has a contact, phone number, or JID. send_audio_message and send_file also overlap for audio files, though the description clarifies the distinction.

Naming Consistency5/5

All tools use consistent snake_case verb_noun naming (search_contacts, get_chat, list_messages, send_message, download_media, etc.). The pattern is predictable throughout despite a few longer names.

Tool Count5/5

At 13 tools, the set is well-scoped for a WhatsApp MCP server. Each tool maps to a meaningful contact, chat, message, send, or media operation without excessive surface area.

Completeness4/5

The surface covers the core WhatsApp workflows: contact lookup, chat listing, message reading/context, sending text/files/audio, and media download. Minor gaps remain around message editing/deletion, reactions, and group administration, but the main agent workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues