VK Ads MCP

io.github.askads由 GitHub 帳號 askads 發布v1.8.3更新於 Nov 3, 2026

MCP server for VK Ads (VK Реклама) API: manage ad plans, ad groups, banners, and statistics.

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

針對 VK Ads 廣告帳戶 API 的在地 MCP 伺服器,讓助理讀取廣告計畫、廣告群組、廣告與統計資料,並直接修改線上帳戶。

可以做什麼
  • 列出、建立與更新廣告計畫、廣告群組和廣告,包含預算、出價、日期與定向
  • 依 id 啟用、暫停或刪除廣告計畫、廣告群組和廣告
  • 依日期區間取得廣告計畫、廣告群組或廣告的統計資料,以及帳戶餘額與使用者資訊
  • 查詢地區、目前 API 流量限制餘量與連線狀態
  • 上傳 JPEG 或 PNG 圖片到廣告素材庫,並在建立廣告時引用
  • 對任意 VK Ads API 端點送出原始請求,寫入操作需確認參數
適用情境
適合管理 VK Ads 帳戶的情境:讓助理在同一個對話中比較各廣告計畫、廣告群組與廣告的花費和點擊,說明廣告為何沒有投放,或準備並套用預算、出價與狀態變更。
執行需求
需要 Node.js 20 或更新版本,透過 npx 在地執行,不必另外安裝。一開始不需要權杖:在對話中提供 VK Ads 後台的 client_id 與 client_secret 即可連結帳戶,憑證會存在本機檔案。選用環境變數:VK_ADS_TOKEN、VK_ADS_API_BASE、VK_ADS_LANG、VK_ADS_TIMEOUT_MS、VK_ADS_MAX_RETRIES。需要連線至 VK Ads API 的網路。
安裝前請注意
沒有沙箱環境:每次呼叫都作用於真實帳戶與真實預算,具型別的建立、更新與狀態工具會立即生效,且沒有確認參數。client_id 與 client_secret 具備包含花費預算在內的完整帳戶權限,並會寫入磁碟;VK_ADS_TOKEN 是完整權限的 Bearer 權杖,伺服器不會更新或刪除它。預設開啟匿名遙測,可能包含錯誤文字片段,可用 ASKADS_TELEMETRY=0 關閉。發生網路錯誤或 5xx 後,重試寫入前應先查詢清單。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 VK Ads MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

VK Реклама MCP

[npm] [CI] [Glama] [License: MIT]

VK Реклама MCP подключает AI-приложение к рекламному кабинету VK Ads. Можно спросить, какие кампании тратят бюджет без результата, сравнить группы и объявления, подготовить новую кампанию или изменить ставку. В отличие от ручного перехода по разделам кабинета, ассистент сопоставляет кампании, статистику, баланс и статусы в одном диалоге.

  • 22 инструмента. Кампании, группы, объявления, статистика, баланс, лимиты API, регионы, подключение кабинета и универсальный запрос к API.
  • Подключение из диалога. Скажите «подключи ВК Рекламу» — сервер объяснит, где взять client_id и client_secret, получит токен и дальше продлевает его сам.
  • Живая реклама. Ставки, бюджеты и расход отображаются в валюте рекламного кабинета — без пересчёта микроединиц.
  • Полная иерархия. Кампания (ad_plan) → группа (ad_group) → объявление (banner).
  • Сначала анализ. Списки, отчёты, баланс и статусы доступны только на чтение.
  • Изменения — в боевом кабинете. Создание, обновление и действия со статусами применяются сразу; у VK Ads нет песочницы.

Начните с безопасного запроса:

Покажи кампании моего аккаунта VK Рекламы и расход за прошлую неделю по группам объявлений.

Подключить сервер · Посмотреть сценарии · Открыть техническую документацию


Увидеть работу за минуту

[Демонстрация: ассистент сопоставляет кампании, статистику и баланс VK Рекламы]

Содержание

Быстрый старт

Нужен Node.js 20 или новее. Сервер запускается через npx, поэтому отдельно устанавливать пакет не требуется; токен при установке не нужен.

  1. Добавьте сервер в AI-приложение — инструкции для пяти приложений ниже.
  2. Скажите: «Подключи ВК Рекламу» — сервер проведёт подключение прямо в диалоге.
  3. Спросите: «Покажи кампании моего аккаунта VK Рекламы и расход за прошлую неделю по группам объявлений».
Codex

Через интерфейс приложения:

  1. Откройте Settings → Plugins → MCP servers.
  2. Нажмите Add server.
  3. Добавьте команду запуска npx -y mcp-vk-ads@latest. Переменные окружения не нужны: кабинет подключается в диалоге.

Через командную строку:

bash
codex mcp add vk-ads -- npx -y mcp-vk-ads@latest

Проверьте подключение:

bash
codex mcp list

Официальная инструкция Codex

Claude Code
bash
claude mcp add \  --transport stdio \  --scope user \  vk-ads \  -- npx -y mcp-vk-ads@latest

Проверьте сервер:

bash
claude mcp list

Документация Claude Code

Claude Desktop

Откройте Settings → Developer → Edit Config и добавьте сервер в claude_desktop_config.json:

json
{  "mcpServers": {    "vk-ads": {      "command": "npx",      "args": ["-y", "mcp-vk-ads@latest"]    }  }}

Если Edit Config недоступна, отредактируйте ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.

Cursor

Для всех проектов создайте ~/.cursor/mcp.json; только для текущего проекта — .cursor/mcp.json:

json
{  "mcpServers": {    "vk-ads": {      "command": "npx",      "args": ["-y", "mcp-vk-ads@latest"]    }  }}

Документация Cursor

VS Code

Откройте палитру команд и выполните MCP: Open User Configuration. Добавьте в mcp.json:

json
{  "servers": {    "vk-ads": {      "type": "stdio",      "command": "npx",      "args": ["-y", "mcp-vk-ads@latest"]    }  }}

Проверьте запуск командой MCP: List Servers.

Документация VS Code

Что можно поручить

Разобраться с расходом и результатом

  • «Покажи расход, показы, клики и CTR по кампаниям за последние 7 дней».
  • «Какие объявления тратят больше всего и не приносят результата?»
  • «Сравни группы объявлений внутри этой кампании по расходу и кликам».

Понять, почему реклама не показывается

  • «Покажи статус, доставку и модерацию всех объявлений этой группы».
  • «Какие кампании сейчас остановлены?»
  • «Найди объявления, которые не прошли модерацию».

Подготовить изменения в рекламе

  • «Создай текстовую кампанию с дневным бюджетом 5 000 рублей».
  • «Измени дневной бюджет этой группы на 1 500 рублей».
  • «Останови объявление 12345».

Такие команды меняют боевой кабинет. Перед вызовом убедитесь, что ассистент правильно определил кампанию, группу, объявление и сумму.

Найти данные для настройки

  • «Покажи баланс и валюту моего кабинета».
  • «Сколько запросов к API осталось?»
  • «Найди ID региона Москва для таргетинга».

Как устроены объекты VK Рекламы

ОбъектРоль
Кампания (ad_plan)Верхний уровень: название, бюджет, ставка и период работы.
Группа (ad_group)Настройки аудитории и размещения, собственные бюджет и ставка.
Объявление (banner)Тексты, ссылки и креатив внутри группы.
СтатистикаОтчёт по кампаниям, группам или объявлениям за период.

У объекта есть три разных состояния. status можно менять: active, blocked или deleted. delivery и moderation_status только объясняют, почему объект показывается или нет; напрямую их изменить нельзя.

Что может изменить данные

ДействиеЧто происходит
Списки, статистика, баланс, лимиты и регионыТолько чтение.
Создание и обновление кампаний, групп и объявленийСразу создаёт или меняет объект в боевом рекламном кабинете.
Действие со статусомАктивирует, останавливает или удаляет объект в живом кабинете.
raw_requestGET читает данные; POST и DELETE меняют их и требуют confirmWrite=true.

У типизированных инструментов создания, обновления и смены статуса нет внутреннего параметра confirmWrite. Как AI-приложение запрашивает подтверждение, зависит от его настроек. После сетевой ошибки или 5xx не повторяйте создание вслепую: операция могла успеть примениться, сначала проверьте список объектов.

Подключение кабинета

Скажите ассистенту:

Подключи ВК Рекламу

Он покажет, что сделать: в ads.vk.com открыть Настройки → Доступ к API, создать приложение и прислать в чат client_id и client_secret. Дальше сервер сам получит токен и проверит, в какой кабинет попал. Перезапускать AI-приложение и править его конфигурацию не нужно. Если раздел «Доступ к API» недоступен, запросите доступ у поддержки VK Рекламы.

Дальше подключение живёт само: токен VK действует около суток и продлевается автоматически по refresh_token. Проверить состояние — «покажи статус подключения», отключить — «отключи ВК Рекламу».

client_id и client_secret дают полный доступ к рекламному кабинету, включая трату бюджета. Сервер хранит их в ~/.config/mcp-vk-ads/credentials.json с правами только для владельца (0600) — client_secret нужен потому, что VK требует его при каждом продлении токена. Ни один инструмент их не возвращает.

Браузерного «войти и подтвердить» у VK Рекламы для сторонних серверов нет: сценарий authorization_code VK выдаёт только партнёрам с согласованным redirect_uri, поэтому подключение идёт через приложение самого пользователя. Кабинеты клиентов агентства требуют гранта agency_client_credentials — для них нужен готовый токен в VK_ADS_TOKEN (см. документацию VK Ads API).

Настройка

Настраивать нечего: всё нужное сервер спрашивает в диалоге. Переменные окружения пригодятся только для CI и автоматических установок, где диалога нет. Все они необязательные — сервер работает без единой из них.

ПеременнаяНазначение
VK_ADS_TOKENГотовый OAuth2 access-токен VK Ads. Имеет приоритет над входом из чата; такой токен сервер не продлевает и не удаляет.
VK_ADS_LANGЯзык ответов API; по умолчанию ru.
VK_ADS_TIMEOUT_MSТаймаут одного запроса; по умолчанию 60 000 мс.
VK_ADS_MAX_RETRIESЧисло повторов при временных ошибках; по умолчанию 3.
VK_ADS_API_BASEБазовый адрес API; по умолчанию https://ads.vk.com/api.
Как выпустить токен для VK_ADS_TOKEN вручную
bash
curl -X POST https://ads.vk.com/api/v2/oauth2/token.json \  -d grant_type=client_credentials \  -d client_id=ВАШ_CLIENT_ID \  -d client_secret=ВАШ_CLIENT_SECRET

Из ответа возьмите access_token. Он живёт около суток и сам не продлевается: при invalid_token выпустите новый. У одного пользователя не больше 5 активных токенов на приложение; старые отзываются запросом POST /api/v2/oauth2/token/delete.json — он удаляет все токены этого пользователя для данного client_id.

Данные, лимиты и работа в фоне

  • Страницы и большие кабинеты. Одна страница списка содержит до 250 объектов. При autoPaginate сервер возвращает не более 1 000 объектов и помечает неполный результат полем _truncated.
  • Лимиты API. Инструмент get_throttling показывает текущий остаток лимитов. Проверяйте его перед массовыми операциями.
  • Повторы запросов. Таймаут одного запроса — 60 секунд. Сервер делает до трёх повторов: для любого метода при 429, а для чтения ещё при сетевой ошибке, тайм-ауте и 5xx. Задержка учитывает Retry-After и не превышает 30 секунд.
  • Нет фонового наблюдения. Сервер работает, когда его вызывает AI-приложение. Если приложение поддерживает задания по расписанию, в нём можно настроить периодический запрос статистики или статусов.
  • Анонимная телеметрия. По умолчанию сервер отправляет случайный идентификатор установки, имя события или инструмента, версии сервера, Node.js, ОС и AI-клиента. При вызове инструмента сервер также отправляет его исход, а при ошибке - фрагмент её текста: код и сообщение, в которых e-mail, адреса, токены, числа от 4 цифр и текст в кавычках заменены на «#». Если в тексте ошибки есть значение из запроса, оно тоже может попасть во фрагмент. В неё не попадают токен, данные кабинета, аргументы инструментов, ваши сообщения и значения переменных окружения. Отключить её для MCP-серверов Ask Ads: ASKADS_TELEMETRY=0.

Техническая документация

Поддержка

Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.

來源:README.md,提交 7b0c8f8

工具

23

auth_status

Статус подключения к VK Рекламе

Показывает, подключена ли VK Реклама: есть ли токен, откуда он взят (переменная окружения VK_ADS_TOKEN или сохранённый вход), когда истекает, какой client_id и аккаунт за ним стоят и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть, не показывает ни токен, ни client_secret. Вызовите это, если инструменты VK Рекламы отвечают, что подключение не настроено.

無需輸入參數。

start_login

Начать подключение VK Рекламы

Первый шаг подключения VK Рекламы без правки конфигурации и без перезапуска клиента. Ничего не отправляет в сеть — возвращает инструкцию, которую нужно показать пользователю целиком: где в кабинете создать приложение и откуда скопировать client_id и client_secret. Полученную пару передайте в finish_login. Предупредите, что client_secret — это пароль от рекламного кабинета: он сохранится на диске только для владельца и нужен, чтобы продлевать токен.

無需輸入參數。

finish_login

Завершить подключение VK Рекламы

Второй шаг подключения: обменивает client_id и client_secret из start_login на токен доступа (grant client_credentials), сохраняет всё в файл только для владельца (0600) и сразу проверяет живым запросом к VK Рекламе. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Токен живёт около суток и продлевается автоматически, поэтому повторно вызывать это не требуется: каждый вызов создаёт НОВЫЙ токен, а у VK не больше 5 активных токенов на пару client_id + пользователь. Ошибка invalid_client означает, что пара скопирована не полностью или относится к разным приложениям.

輸入參數clientId必填clientSecret必填

logout

Отключить VK Рекламу

Удаляет сохранённые токен и данные приложения VK Рекламы с диска. Токен, заданный переменной окружения VK_ADS_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. На стороне VK токен остаётся активным до истечения срока: отозвать его можно запросом POST v2/oauth2/token/delete.json, но он удаляет ВСЕ токены этого пользователя для данного client_id, поэтому здесь не вызывается.

無需輸入參數。

get_user_info

Информация об аккаунте

Возвращает информацию о текущем аккаунте VK Рекламы (user.json), включая additional_info.client_name. Позволяет убедиться, на какой аккаунт рекламодателя указывает токен. Токен гранта client_credentials агентского аккаунта видит объекты самого агентства, а не его клиентов: кабинет клиента открывает только токен гранта agency_client_credentials в VK_ADS_TOKEN.

輸入參數fields

get_balance

Баланс аккаунта

Возвращает текущий баланс аккаунта VK Рекламы: доступные средства и валюту. Вызывает user.json с полем `account`, в котором лежит кошелёк (account.balance, account.currency). Показывает баланс того аккаунта, на который указывает токен (параметров нет). Важно: точное имя поля с балансом в v3/user.json на новой платформе ads.vk.com не подтверждено на живом кабинете (домен закрыт JS); схема следует объектной модели myTarget/VK Ads (v2/v3). Инструмент отдаёт СЫРОЙ ответ VK без изменений, поэтому вызывающая сторона может аккуратно прочитать account.balance независимо от точной формы ответа — проверить на первом живом аккаунте с доступом read_payments.

無需輸入參數。

get_throttling

Лимиты запросов к API

Возвращает текущие лимиты запросов VK Рекламы и их остаток (throttling.json) — чтобы не упереться в лимит.

無需輸入參數。

get_regions

Список регионов

Возвращает гео-регионы VK Рекламы (id, name, type), при необходимости отфильтрованные по подстроке названия. Id регионов нужны для гео-таргетинга группы объявлений.

輸入參數limitquery

list_ad_plans

Список кампаний (ad_plans)

Возвращает список ad_plan (верхнеуровневый объект кампании в VK Рекламе) с необязательной фильтрацией по id и статусу. Денежные поля (budget_limit, budget_limit_day, max_price) — в валюте аккаунта.

輸入參數idslimitfieldsoffsetstatusesautoPaginate

create_ad_plan

Создать кампанию (ad_plan)

Создаёт кампанию (ad_plan). Денежные поля — в валюте аккаунта. Сложные и редкие поля передаются через `extra` (подмешиваются в тело запроса как есть). Пустую кампанию VK не создаёт: в `adGroups` нужен массив новых групп объявлений, у каждой — name, package_id, targetings, а для autobiddingMode=max_goals ещё priced_goal {source_id: id счётчика, name: цель}. Следующие группы добавляет create_ad_group. Кампании на сайт нужна привязка `extra.ad_object_type`="url" + `extra.ad_object_id` (id URL-объекта; без неё любой package_id отвергается как invalid_package) — проще всего взять ad_object_id, package_id и priced_goal у существующей кампании и её групп (list_ad_plans / list_ad_groups с нужными fields). budgetLimit и budgetLimitDay одновременно передавать нельзя — только одно из двух. Чтобы ничего не запустилось, передать status="blocked" и в `extra`, и у каждой группы в `adGroups`.

輸入參數name必填extradateEndadGroupsmaxPricedateStartobjectivebudgetLimitbudgetLimitDayautobiddingMode

update_ad_plan

Изменить кампанию (ad_plan)

Меняет у кампании название, бюджеты, предельную ставку или даты. Денежные поля — в валюте аккаунта. Для смены статуса — ad_plan_action.

輸入參數id必填nameextradateEndmaxPricebudgetLimitbudgetLimitDay

ad_plan_action

Действие над кампанией

Меняет статус кампаний по id: activate (status=active), stop (status=blocked) или delete (status=deleted). delete удаляет только саму кампанию: её группы и объявления остаются в прежнем статусе — их удаляют отдельно через ad_group_action и banner_action.

輸入參數ids必填action必填

list_ad_groups

Список групп объявлений

Возвращает список групп объявлений с необязательной фильтрацией по id, родительской кампании и статусу. Денежные поля — в валюте аккаунта; в `targetings` лежит структура таргетинга по гео, демографии и интересам.

輸入參數idslimitfieldsoffsetstatusesadPlanIdsautoPaginate

create_ad_group

Создать группу объявлений

Создаёт группу объявлений внутри кампании. Таргетинг задаётся в `targetings` (например, {"geo":{"regions":[188]},"age":{"age_list":[25,26]}}). Денежные поля — в валюте аккаунта. Остальные поля — через `extra`.

輸入參數name必填extrapricedateEndadPlanId必填maxPricedateStartobjectivetargetingsbudgetLimitbudgetLimitDayautobiddingMode

update_ad_group

Изменить группу объявлений

Меняет у группы объявлений название, бюджеты, предельную ставку, даты или таргетинг. Денежные поля — в валюте аккаунта. Для смены статуса — ad_group_action.

輸入參數id必填nameextradateEndmaxPricetargetingsbudgetLimitbudgetLimitDay

ad_group_action

Действие над группой объявлений

Меняет статус групп объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).

輸入參數ids必填action必填

list_banners

Список объявлений (banners)

Возвращает список banner (объект объявления/креатива в VK Рекламе) с необязательной фильтрацией по id, родительской группе объявлений и статусу. moderation_status (pending/allowed/banned) и delivery объясняют, почему объявление показывается или не показывается.

輸入參數idslimitfieldsoffsetstatusesadGroupIdsautoPaginate

create_banner

Создать объявление (banner)

Создаёт объявление внутри группы объявлений (POST v2/ad_groups/{adGroupId}/banners.json; верхний v2/banners.json — только список). Креатив ссылается на загруженные медиа через `content`, тексты объявления — в `textblocks`, ссылки — в `urls`. Эти структуры отправляются как есть; точная форма для каждого формата объявления — в документации VK Рекламы.

輸入參數nameurlsextracontentadGroupId必填textblocks

update_banner

Изменить объявление (banner)

Меняет у объявления название, текстовые блоки или ссылки. Для смены статуса — banner_action. Структуры отправляются как есть.

輸入參數id必填nameurlsextratextblocks

banner_action

Действие над объявлением

Меняет статус объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).

輸入參數ids必填action必填

upload_image

Загрузить изображение

Загружает изображение JPEG или PNG в медиатеку VK Рекламы (multipart POST v2/content/static.json) и возвращает его id и variants. Этот id передаётся в create_banner как content.<слот>={"id": <id>}; какие слоты нужны, зависит от формата (package) группы. Размер картинки должен подходить слоту: например, image_600x600 принимает не шире 600 px, иначе create_banner получит bad_width. Байты передаются base64 без префикса data:, вместе с шириной и высотой картинки в пикселях. При сетевой ошибке или 5xx загрузка могла пройти — не повторять вслепую.

輸入參數width必填height必填imageBase64必填

get_statistics

Статистика

Возвращает статистику по кампаниям (ad_plans), группам объявлений (ad_groups) или объявлениям (banners). По умолчанию группировка `summary` — одна сводная строка (`items[].total`) на объект: с dateFrom/dateTo — за этот период, без дат — за всё время. `day` нужна ТОЛЬКО для динамики и вопросов про тренд: добавляет к каждому объекту `rows` по дням, даты обязательны. Недель и месяцев API не отдаёт — их собирают из `day`. Ранжирование на стороне сервера (sortBy, например base.spent, и order) и постраничная выдача (limit/offset) работают только в `summary` с датами — в остальных режимах VK их молча игнорирует, поэтому инструмент вернёт ошибку. Там VK и так отдаёт все объекты одним ответом, так что autoPaginate безвреден в любом режиме. `total` в ответе — сумма по объектам ЭТОЙ страницы (при фильтре по ids — по этим объектам), а не по всему кабинету. Метрики лежат в `base` (shows, clicks, spent, ...); spent — в валюте аккаунта.

輸入參數idslimitorderdateToentityoffsetperiodsortBymetricsdateFromautoPaginate

raw_request

Произвольный запрос к API VK Рекламы

Универсальный запрос напрямую к любому эндпоинту API VK Рекламы (например, path "v2/ad_plans.json", method GET). Нужен для эндпоинтов, у которых нет отдельного инструмента. `query` уходит в строку запроса, `body` отправляется как JSON для POST. GET выполняется свободно; POST и DELETE — запись, для них нужен confirmWrite=true.

輸入參數bodypath必填querymethodconfirmWrite

版本歷史

8
  1. v1.8.3最新Nov 1, 2026
  2. v1.8.2Oct 31, 2026
  3. v1.8.1Oct 31, 2026
  4. v1.8.0Oct 30, 2026
  5. v1.7.0Oct 26, 2026
  6. v1.6.1Oct 22, 2026
  7. v1.5.0Sep 20, 2026
  8. v1.4.1Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分