Skip to main content
Glama
whatsapp-mcp

whatsapp-mcp

by eurogas-bbl

whatsapp-mcp

MCP-сервер к WhatsApp через шлюз GREEN-API. Даёт агенту чтение переписки (история чата, журналы входящих и исходящих, контакты, группы) и отправку сообщений и файлов.

Работает с обычным личным номером: номер один раз привязывается к инстансу GREEN-API по QR-коду в консоли шлюза, дальше никакого локального процесса и никакого повторного сканирования не нужно.

Зачем шлюз

Официальный WhatsApp Business Cloud API от Meta не даёт доступа к личной переписке и истории — только к диалогам, начатым после подключения бизнес-номера. Локальные мосты (whatsmeow, Baileys) требуют постоянно работающего процесса на машине пользователя. GREEN-API закрывает обе проблемы ценой платного тарифа и того, что под капотом у него неофициальный протокол.

Репозиторий пока лежит в личном пространстве eurogas-bbl, а не в brain-boost-academy: прав на создание репозиториев в организации нет. После переноса GitHub оставит редирект, и ссылки ниже продолжат работать.

Related MCP server: lingtai-whatsapp

Установка

Зависимостей, кроме uv, нет:

uvx --from git+https://github.com/eurogas-bbl/whatsapp-mcp whatsapp-mcp

Как запись в .mcp.json:

{
  "mcpServers": {
    "whatsapp": {
      "command": "uvx",
      "args": [
        "--env-file", "/путь/к/whatsapp-mcp.env",
        "--from", "git+https://github.com/eurogas-bbl/whatsapp-mcp",
        "whatsapp-mcp"
      ]
    }
  }
}

Переменные окружения

Переменная

Обязательна

Описание

GREENAPI_ID_INSTANCE

да

idInstance из консоли GREEN-API

GREENAPI_API_TOKEN_INSTANCE

да

apiTokenInstance оттуда же

GREENAPI_API_URL

нет

Личный хост инстанса, например https://7105.api.greenapi.com. По умолчанию https://api.green-api.com

GREENAPI_MEDIA_URL

нет

По умолчанию https://media.green-api.com; используется только при отправке локального файла

WHATSAPP_READONLY

нет

true — инструменты отправки не регистрируются вовсе

Токен не попадает в текст ошибок: он лежит в URL, а URL — в сообщениях httpx, поэтому перед выдачей модели он заменяется на ***.

Инструменты

Чтение — всегда:

get_state, get_settings, list_chats, get_chat_history, get_last_incoming_messages, get_last_outgoing_messages, get_contact_info, get_group_data, check_whatsapp, get_file_link, receive_notification, delete_notification.

Запись — если не выставлен WHATSAPP_READONLY:

send_message, send_file, send_file_by_url, mark_chat_read, set_settings.

delete_notification доступен и в режиме чтения: он убирает обработанное событие из очереди шлюза и ничего не меняет в самих чатах, а без него receive_notification бесконечно возвращает одно и то же.

Идентификаторы чатов

Личный чат — 79001234567@c.us, группа — 120363043968066561@g.us, скрытый номер — 123456789012345@lid. Голый номер телефона (79001234567, +7 (900) 123-45-67) достраивается до @c.us; для групп и @lid идентификатор нужно передавать целиком, потому что от номера они неотличимы.

Ограничения

  • История видна только за то время, пока номер привязан к инстансу: GREEN-API не выгружает переписку, накопленную до подключения.

  • У getChatHistory нет постраничного обхода — только count.

  • Журналы входящих и исходящих и отметка прочитанным работают лишь при включённых уведомлениях инстанса: set_settings с incomingWebhook: yes, outgoingMessageWebhook: yes, outgoingAPIMessageWebhook: yes.

  • Ответы обрезаются на 256 КБ, чтобы длинная переписка не вытеснила контекст; обрезанный ответ помечен полем truncated.

Разработка

uv sync
uv run pytest -q
uv run pyright

Тесты офлайн: HTTP замокан через httpx.MockTransport, инструменты вызываются настоящим MCP-клиентом.

Available Tools

17 tools
check_whatsappCheck WhatsappB

Есть ли WhatsApp у номера. Проверяйте перед первой отправкой незнакомцу.

Inputs: phone (required).

delete_notificationDelete NotificationA

Удаляет обработанное событие из очереди по receiptId.

Inputs: receipt_id (required).

get_chat_historyGet Chat HistoryA

Последние сообщения чата, новые первыми.

Основной инструмент чтения переписки. Постраничного обхода у GREEN-API нет — можно только увеличить count (по умолчанию у шлюза 100).

Inputs: chat_id (required), count.

get_contact_infoGet Contact InfoA

Карточка контакта: имя, аватар, признак бизнес-аккаунта, последний онлайн.

Для групп не работает — используйте get_group_data.

Inputs: chat_id (required).

get_group_dataGet Group DataB

Данные группы: название, владелец, участники, права.

Inputs: group_id (required).

get_last_incoming_messagesGet Last Incoming MessagesA

Входящие по всем чатам за последние minutes минут (по умолчанию сутки).

Чтобы посмотреть, что нового вообще пришло, не перебирая чаты. Требует включённого incomingWebhook.

Inputs: minutes.

get_last_outgoing_messagesGet Last Outgoing MessagesA

Исходящие по всем чатам за последние minutes минут со статусом доставки.

Inputs: minutes.

get_settingsGet SettingsA

Настройки инстанса, включая флаги уведомлений.

Без incomingWebhook: yes журналы входящих сообщений и отметки прочитанным не работают.

Inputs: no named parameters.

get_stateGet StateA

Состояние инстанса GREEN-API.

authorized — номер подключён и всё работает; notAuthorized — нужно заново отсканировать QR в консоли GREEN-API; blocked — номер забанен.

Inputs: no named parameters.

list_chatsList ChatsB

Список известных инстансу чатов и контактов (id, имя, тип).

Обновление списка на стороне WhatsApp занимает до 5 минут; пустой ответ сразу после подключения — норма, повторите позже.

Inputs: only, count.

mark_chat_readMark Chat ReadA

Отмечает чат прочитанным. Без id_message — весь чат.

Собеседник увидит две синие галочки, так что это тоже заметное действие.

Inputs: chat_id (required), id_message.

receive_notificationReceive NotificationA

Одно событие из очереди входящих (FIFO, хранится 24 часа).

Возвращает receiptId и body, либо null, если за receive_timeout секунд (5–60) ничего не пришло. После обработки события вызовите delete_notification, иначе следующий вызов вернёт то же самое.

Inputs: receive_timeout.

send_fileSend FileB

Отправляет локальный файл (до 100 МБ) в чат.

Как и send_message — действие необратимо, спрашивайте подтверждение.

Inputs: path (required), chat_id (required), caption, file_name.

send_file_by_urlSend File By UrlA

Отправляет файл по публичной ссылке — без выкачивания на эту машину.

Inputs: chat_id (required), url_file (required), file_name (required), caption.

send_messageSend MessageA

Отправляет текст в чат. Возвращает idMessage.

Действие необратимо и видно человеку на том конце — спрашивайте подтверждение у пользователя перед вызовом.

Inputs: chat_id (required), message (required), link_preview, quoted_message_id.

set_settingsSet SettingsA

Меняет настройки инстанса; инстанс при этом перезагружается (до 5 минут).

Нужен в основном один раз при подключении: {"incomingWebhook": "yes", "outgoingMessageWebhook": "yes", "outgoingAPIMessageWebhook": "yes"} — без этого журналы входящих и исходящих остаются пустыми.

Inputs: settings (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 17 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (sending, reading, settings, notifications, contacts/groups). The only mild overlap is between get_chat_history and get_last_incoming/outgoing_messages, but the descriptions clarify the scope: one is per-chat, the others are cross-chat time-based summaries.

    Naming Consistency4/5

    The tool names follow a fairly consistent verb_noun pattern (get_*, send_*, list_*, mark_*, set_*, delete_*, receive_*). Minor deviations like check_whatsapp and receive_notification are still readable and consistent with the general style, so there are no mixed conventions.

    Tool Count4/5

    17 tools is slightly on the heavier side but appropriate for a WhatsApp integration that covers messaging, files, groups, contacts, settings, and webhooks. Each tool maps to a distinct API operation, and none feel redundant.

    Completeness4/5

    The surface covers the main WhatsApp workflows: sending and receiving messages/files, reading history, managing chats read state, contact and group info, and instance settings. Missing operations like editing/deleting sent messages or more granular media handling are minor gaps, since the core lifecycle is present.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP (Multi-Agent Conversation Protocol) Server that enables interaction with the WhatsApp Business API, allowing agents to send messages, manage media, and perform other WhatsApp business operations through natural language.
      1
      -
    • A
      license
      Not graded
      quality
      F
      maintenance
      MCP server for interacting with the official Meta WhatsApp Business Platform/Cloud API, enabling sending messages, managing contacts, templates, and handling webhook callbacks.
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server that connects AI agents to WhatsApp using the multi-device API, enabling messaging, group management, and more as a regular user.
      7 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP gateway for GREEN-API WhatsApp that lets AI agents send messages, manage instances, and receive notifications via WhatsApp using the Model Context Protocol.
      MIT