Эта страница полезна, если вы хотите, чтобы приложение ИИ без терминала работало с вашим WhatsApp, например Claude Desktop или чат в Cursor. Это также помогает, когда вы хотите, чтобы само приложение спрашивало вас перед каждым действием. Прочитав его, вы сможете подключить приложение к своему аккаунту, выбирать, что может делать агент, а также использовать готовые подсказки и упоминания в чате.
Сначала несколько терминов:
MCP (Протокол контекста модели) — это стандартный способ использования приложениями ИИ внешних инструментов. Приложение является клиентом MCP; wa personal mcp — это сервер MCP.
Инструмент — это одно действие, которое сервер предлагает агенту, например «чтение» или «запись».
– Подсказка — это готовая задача, которую приложение отображает в виде команды, например «Просмотреть непрочитанные чаты».
– Ресурс — это данные, которые приложение может прикрепить к разговору, например один чат.
Профиль – это один набор настроек и одно связанное устройство в wa; см. профили.
Сервер поставляется с wa; больше нечего устанавливать. По умолчанию он обращается к приложению через стандартный ввод и вывод. Вместо этого wa personal mcp --http --public-url передает его через локальный порт за вашим HTTPS-туннелем.
Запрещённые разрешения не скрывают команды. Полные списки и результаты поиска содержат availability каждой команды: у заблокированных команд available: false, причина и ключ нужного разрешения; у разрешённых available: true. Аргументы остаются видимыми, а при выполнении текущие разрешения проверяются снова. С указанным профилем справка CLI и обнаружение команд тоже показывают доступность.
ИИ-агент, который может запускать команды в терминале (например, Claude Code, Codex, агент Cursor или Gemini CLI), не нуждается в MCP. Он напрямую вызывает wa, который предоставляет те же команды; он узнает, как это сделать, благодаря навыку, который печатает wa skill show. MCP предназначен для:
приложения без терминала, такие как Claude Desktop или чат Cursor;
всем, кто хочет, чтобы приложение спрашивало перед каждой отправкой.
Профиль решает, какие команды агент может выполнять
Инструменты используют тот же каталог, что и tg и max. Команды, которые привязанное устройство WhatsApp выполнить не может, например завершение других сеансов и удаление контактов, скрыты. Команда, которую WhatsApp пока не может выполнить, при запуске отклоняется с кодом завершения 2 и сообщением об этом.
Командам, которые меняют будущие разрешения или автоматизацию, нужен permissions.mcp.authority со значением allow; прямым вызовам Cloud API нужен permissions.bot.api со значением allow. Через MCP оба ключа по умолчанию равны deny. Остальные изменения по-прежнему подчиняются разрешениям своих команд, спискам получателей и лимитам отправки.
Команды для терминала
MCP-сервер личного аккаунта никогда не предлагает wa session, wa setup, wa complete и wa mcp с их подкомандами, а также долгоиграющие wa watch и wa serve, которые никогда не возвращают агенту ответ. Команды бизнес-бота (wa bot …) обслуживает отдельный сервер, wa bot mcp. Все остальные команды перечислены вместе с их доступностью.
Сначала запустите wa personal setup --agent none в локальном терминале. Он связывает профиль с вашей учетной записью WhatsApp. Сервер MCP не привязывает устройство за вас. Затем wa personal mcp add подключает приложение в качестве отдельного шага. Агент может прочитать wa skill show до привязки устройства; это объясняет оба шага.
Codex или Claude Code на этом компьютере:
wa personal mcp check # check that MCP starts and lists toolswa personal mcp add codex # add it to Codexwa personal mcp add claude-code # or add it to Claude Code
Сначала поставьте профиль, например wa work mcp add codex. Программа установки использует собственную команду приложения и не трогает другие серверы. Если запись с таким именем уже существует, удалите ее в приложении, прежде чем снова запускать установку. По умолчанию профиль разрешает инструменты изменения данных. Поэтому программа установки попросит вас просмотреть разрешения профиля и запустить его снова с помощью --allow-writes. Этот флаг только подтверждает установку; он не меняет разрешения. Чтобы ограничить возможности агента, сначала установите permissions профиля (ниже).
mcp check не читает сообщения и не подключается к WhatsApp. Хороший результат означает, что согласование MCP и список инструментов работают. Это не означает, что устройство все еще подключено; wa personal doctor и wa personal account show проверяют это.
Claude Code, вручную:
claude mcp add wa -- wa personal mcp
При другом профиле — идет первым, как и в любой команде:
claude mcp add wa-work -- wa work mcp
Claude Desktop, Cursor и другие приложения:wa печатает запись для своего файла настроек:
wa personal mcp configwa work mcp config # another profile
Прежде чем подключать агента, просмотрите разрешения профиля. Затем вставьте запись под mcpServers в файл настроек приложения. Для Claude Desktop это ~/Library/Application Support/Claude/claude_desktop_config.json в macOS и %APPDATA%\Claude\claude_desktop_config.json в Windows; для Cursor ~/.cursor/mcp.json. Сама команда ничего не пишет.
Пути заполнены, поскольку приложение, запущенное с рабочего стола, не видит PATH терминала. Запись копирует WA_CONFIG_DIR, WA_STATE_DIR, WA_CACHE_DIR, MESSAGING_STORE и XDG_RUNTIME_DIR, когда они установлены. Если Node установлен через nvm, fnm или Volta, его путь принадлежит одной версии Node: запустите wa personal mcp config еще раз после его изменения.
⚠ WA_CONFIG_DIR, WA_STATE_DIR и WA_CACHE_DIR меняют место поиска ключей устройства. Если они установлены в терминале, а не для приложения MCP, или наоборот, сервер отвечает, что профиль не привязан, хотя wa работает в терминале. Установите их одинаковыми в обоих случаях или ни в одном.
WhatsApp допускает одно подключение для каждого связанного устройства (одно подключение на устройство). Сервер MCP следует тому же правилу, что и любая другая команда wa:
Чтение из локального хранилища никогда не подключается к WhatsApp: chats list, messages list, search messages, inbox и
review работает, пока работает serve.
Инструмент, требующий подключения WhatsApp и блокирующий устройство: каждое изменение — отправка, редактирование, реакция, отметка прочтения — и несколько операций чтения, которые запрашивают WhatsApp, например account show и chats members list.
Пока работает serve, внутри него работает сервер, и эти инструменты используют соединение serve. Разрешения профиля и защита отправки применяются, как и раньше. В Windows они не проходят через serve: там им отказывают, пока работает serve, и ошибка его называет. HTTP-сервер никогда не проходит через serve (удаленный).
Пока сервер MCP поддерживает соединение, serve не может запуститься для этого профиля. Сервер освобождает соединение через 2 минуты без вызовов (ниже).
⚠️ По умолчанию агент может отправлять сообщения, не спрашивая вас. Если permissions не установлен, messages.send разрешен, и
Сервер не показывает собственную форму подтверждения. Единственное ограничение — это лимит отправки профиля, sends_per_hour: 30 отправок в час, совместно с каждой командой. WhatsApp может заблокировать аккаунт за массовые или нежелательные сообщения, поэтому снизьте лимит до подключения агента:
wa personal config set sends_per_hour 5 # a lower hourly capwa personal config set permissions.messages.send readonly # no sends from this profile
Или запустите сервер с помощью --permission messages.send=readonly, чтобы прекратить отправку только для этого процесса.
permissions профиля определяет доступ (разрешения). deny блокирует команду, readonly разрешает только чтение, а ask или allow разрешает запись, запрошенную агентом. Сервер не отображает формы подтверждения: настройте одобрение в приложении агента. В терминале команда ask все еще требует вашего подтверждения. С JSON или --no-input вопросов нет, поэтому запись будет запрещена, если вы не добавите --yes.
wa agent config set permissions.messages readonlywa agent config set permissions.messages.send allow
Здесь agent — имя профиля. При изменениях сохраняются ограничения получателей, часовой лимит и журнал отправки (wa agent sends list). Маркировка чтения — это отдельная запись, под chats.mark-read: другая сторона это видит. Агент никогда не удаляет сообщения для всех, независимо от уровня: messages delete через MCP предназначен только для владельца (wa просит WhatsApp убрать сообщения с устройств владельца) и не имеет --for-everyone. Удаление для всех остается wa <profile> messages delete --for-everyone владельца. --permission key=level сужает уровень только для этого серверного процесса; тот, который ослабит профиль, останавливает сервер при запуске.
Оба инструмента запуска используют {command, arguments}. Используйте путь к команде, полученный поиском; аргументы — это собственные аргументы и параметры команды в Snake_case (search messages принимает query, polls create принимает question):
Поиск показывает только то, что разрешено разрешениями профиля. Ответы структурированы в формате JSON: списки сохраняют свои страницы, а идентификаторы остаются строками. Ошибка — {error:{code,reason,message,details}}; имя, соответствующее нескольким чатам, имеет details.candidates. Сервер проверяет аргументы на соответствие схеме команды и отклоняет неизвестные поля перед подключением или действием. Если результат записи неизвестен, проверьте журнал отправки и чат, прежде чем думать о повторной попытке. Текст сообщения — это данные, а не инструкции для агента. Схемы, ограничения и правила повтора находятся в разделе как wa ведет себя в сценариях.
Сервер предлагает шесть готовых подсказок — в Claude Code это команды /:
Подсказка
Аргумент
Чем занимается агент
catch-up
kind, mode — опционально
вызывает wa_read (command: "inbox"); mode — unread (по умолчанию), new или время; для маркировки чтения требуется отдельный утвержденный вызов инструмента
reply
chat
читает чат, пишет черновик и отправляет его только после вашего одобрения текста
find
text
ищет человека или слова и показывает сообщения вокруг каждого попадания; ничего не отправляет
link-conversations
нет
сообщает стоимость и запрашивает ваше согласие, затем читает пакеты, сохраняет ссылки и перестраивает
review
since, groups — опционально
вызывает wa_read (command: "review") один раз и сортирует его на то, что вы должны, что должны другие и что нужно уточнить; создает черновики напоминаний, отправляет одно только после вашего «да»
open-tasks
chat — опционально
вызывает проверку для обновления задач, перечисляет открытые задачи и предлагает черновики; закрывает задачу только после вашего одобрения; ничего не отправляет
reply и review отправляются через wa_write (command: "messages send"). Таким образом, если messages.send — readonly, агент показывает только черновики. Пока работает serve, отправка из командной строки проходит через него, как и любая другая запись.
Чаты — это ресурсы wa://chat/<id> — в Claude Code их можно упоминать с помощью @. Ресурс — это чат и его недавние сообщения. Список поступает из локального хранилища и никогда не подключается к WhatsApp; пока serve или ссылка не заполнили локальное хранилище, она пуста.
Проверочные точки «Входящие» и «Проверка» в MCP отделены от контрольных точек --new терминала.
Первый вызов, которому нужен WhatsApp, открывает соединение; следующие используют его повторно. Закрывается через 2 минуты без вызовов, и в любом случае через 5 минут после открытия. Следующий вызов снова подключается. Вызовы выполняются по одному, даже если приложение отправляет их вместе.
Через стандартный ввод и стандартный вывод сервер завершает работу, как только приложение закрывает стандартный ввод, и закрывает соединение с WhatsApp. По HTTP он работает до нажатия Ctrl-C. wa personal mcp --revoke завершает каждый вход в систему браузерного приложения и сохраняет связанное устройство. См. ChatGPT, Codex или Claude в браузере.