VK API в 2026: токен сообщества может опубликовать пост, но не может его прочитать

Хотелось простого: чтобы AI-ассистент помогал вести сообщество ВКонтакте. Но сначала пришлось выяснить, что VK вообще разрешает в 2026 году. Спойлер: гораздо меньше, чем написано в документации.

Сводка по живым вызовам API. Ниже — откуда она взялась
Сводка по живым вызовам API. Ниже — откуда она взялась

Я делаю открытый MCP-сервер для ВКонтакте. Это переходник, через который Claude, Cursor и другие AI-ассистенты работают с VK: читают стены, отвечают на сообщения сообщества, публикуют посты.

Вот как это выглядит в Claude Code. Просишь разобрать чужое сообщество — ассистент сам сходит в VK и ответит:

Claude Code читает стену сообщества через vk-mcp-server и разбирает, какой пост зашёл
Claude Code читает стену сообщества через vk-mcp-server и разбирает, какой пост зашёл

Казалось, вся работа — обернуть методы API. На деле больше всего времени ушло на другое: проверить на живом сообществе, что VK ещё разрешает. Документация в этом вопросе ошибается, так что всё ниже — реальные вызовы, октябрь 2026.

Три токена, и ни один не умеет всё

Полного пользовательского токена новым приложениям больше не дают: VK ID выдаёт токен для входа, а не для работы с API. Остаются три варианта:

  • Токен сообщества создаётся в настройках сообщества за три клика. Пишет от имени сообщества: посты, комментарии, истории, сообщения.
  • Сервисный ключ берётся в настройках вашего приложения VK. Читает публичное: стены, профили, сообщества.
  • Токен VK ID (vk2.a…) получает приложение, когда пользователь входит через VK ID. Читает то же, что сервисный ключ. Писать не может.

Главный парадокс: токен сообщества может опубликовать пост, но не может его прочитать, исправить или удалить. А редактировать посты, загружать фото на стену и смотреть статистику сегодня не может ни один из трёх.

Ассистент это знает и честно говорит, что получится, а что нет:

Сервер сам спрашивает у VK, какой у него токен, и показывает модели только то, что сработает
Сервер сам спрашивает у VK, какой у него токен, и показывает модели только то, что сработает

Пять сюрпризов

1. Документация говорит «нельзя», а на деле можно

По официальной схеме API публиковать посты может только пользовательский токен. Проверяем токеном сообщества — работает. Верить можно только живому вызову.

2. Пост «в никуда»

Если не указать, на чью стену писать (owner_id), VK пытается опубликовать пост на стене самого токена. А своей стены у токена сообщества нет — ошибка 214. Лечится одной строкой: id сообщества со знаком минус.

3. Картинка исчезает без ошибки

Загружать фото на стену токену сообщества нельзя. Обходной путь — загрузить картинку как фото для сообщений: она сохраняется, её можно прикрепить к посту. VK пост публикует. А картинку молча выбрасывает.

Тестовый пост, к которому прикрепляли фото. Ни фото, ни ошибки
Тестовый пост, к которому прикрепляли фото. Ни фото, ни ошибки

Второй обход — загрузить картинку документом. Прикрепится, но в ленте будет ссылкой на файл «имя.jpg», а не изображением.

4. Комментарии не прочитать, но можно подслушать

Прочитать комментарии к постам не может ни токен сообщества, ни сервисный ключ. Зато VK сам присылает новые комментарии, лайки, репосты и вступления событиями, если сообщество слушать (Bots Long Poll). Истории нет: видно только то, что случилось после подключения.

5. Одно сообщение может уйти дважды

VK отбрасывает повтор сообщения, только если у него тот же random_id. Генерируете его заново на каждой попытке — скажем, после ошибки «слишком много запросов» — и человек получит сообщение два раза.

Как с этим жить

Раз токен сообщества пишет, но не читает, а сервисный ключ читает, но не пишет, нужны оба. Сервер сначала пробует токен сообщества. Если VK отвечает «этому типу токена нельзя» (ошибки 27 и 1051), тот же запрос уходит с ключом. Запись на ключ не уходит никогда: отказ значит, что VK ничего не сделал, и повторять безопасно.

Снаружи этой кухни не видно. Достаточно попросить — и пост выходит:

Просьба в Claude Code…
Просьба в Claude Code…
…и пост на стене сообщества
…и пост на стене сообщества

Попробовать

vk-mcp-server открытый, лицензия MIT. В Claude Desktop ставится одним файлом со страницы релизов, в Claude Code и Cursor — несколькими строками в конфиге, они есть в README.

Если MCP не нужен, пригодится хотя бы проверка токена. Одна команда покажет, что он умеет на самом деле:

VK_ACCESS_TOKEN=... VK_SERVICE_KEY=... \ npx vk-mcp-server --check

Вопрос к вам

Если вы знаете, как в 2026 году прикрепить фото к посту токеном сообщества, — напишите в комментариях. Проверю и добавлю в сервер. А если у вас сохранился старый полный токен, интересно, что из списка «не может никто» у вас работает.

GitHub · npm: vk-mcp-server · сайт проекта

33