VK Ads MCP
NPM · MCP-VK-ADS · SCANNED SEP 26
MCP server for VK Ads (VK Реклама) API: manage ad plans, ad groups, banners, and statistics.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability67
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4003 tokens (~181/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 97% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the VK Ads MCP server?
VK Ads MCP runs locally as an npm package, launched with npx -y mcp-vk-ads. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · mcp-vk-ads
claude mcp add askads-mcp-vk-ads -- npx -y mcp-vk-ads
{
"mcpServers": {
"askads-mcp-vk-ads": {
"command": "npx",
"args": [
"-y",
"mcp-vk-ads"
]
}
}
} {
"servers": {
"askads-mcp-vk-ads": {
"command": "npx",
"args": [
"-y",
"mcp-vk-ads"
]
}
}
} codex mcp add askads-mcp-vk-ads -- npx -y mcp-vk-ads
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"askads-mcp-vk-ads": {
"type": "local",
"command": [
"npx",
"-y",
"mcp-vk-ads"
],
"enabled": true
}
}
} openclaw mcp add askads-mcp-vk-ads --command npx --arg -y --arg mcp-vk-ads
mcp_servers:
askads-mcp-vk-ads:
command: "npx"
args: ["-y", "mcp-vk-ads"] {
"McpServers": {
"askads-mcp-vk-ads": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"mcp-vk-ads"
]
}
}
} assistant mcp add askads-mcp-vk-ads -t stdio -c npx -a -y mcp-vk-ads
{
"mcpServers": {
"askads-mcp-vk-ads": {
"command": "npx",
"args": [
"-y",
"mcp-vk-ads"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 23 Sept 26 0
- Package version: 1.4.1 → 1.5.0 functional
- 20 Sept 26 +30
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 97 functional
- First check of Schema quality: excellent functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 1.4.1 → 1.5.0 functional
- 7 Sept 26 0
- Security disclosure: unverified → fail ▼ functional
- 6 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 4 Sept 26 0
- Security disclosure: unverified → fail ▼ functional
- 2 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 31 Aug 26 0
- Security disclosure: unverified → fail ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 26 Sept 2026 · Analysed npm/mcp-vk-ads@1.5.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ad_group_action Действие над группой объявлений ~61
Меняет статус групп объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| ids | array | yes | Id групп объявлений, к которым применить действие. |
No output schema declared.
No examples provided.
ad_plan_action Действие над кампанией ~59
Меняет статус кампаний по id: activate (status=active), stop (status=blocked) или delete (status=deleted).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| ids | array | yes | Id кампаний, к которым применить действие. |
No output schema declared.
No examples provided.
auth_status Статус подключения к VK Рекламе ~114
Показывает, подключена ли VK Реклама: есть ли токен, откуда он взят (переменная окружения VK_ADS_TOKEN или сохранённый вход), когда истекает, какой client_id и аккаунт за ним стоят и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть, не показывает ни токен, ни client_secret. Вызовите это, если инструменты VK Рекламы отвечают, что подключение не настроено.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
banner_action Действие над объявлением ~58
Меняет статус объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| ids | array | yes | Id объявлений, к которым применить действие. |
No output schema declared.
No examples provided.
create_ad_group Создать группу объявлений ~281
Создаёт группу объявлений внутри кампании. Таргетинг задаётся в `targetings` (например, {"geo":{"regions":[188]},"age":{"age_list":[25,26]}}). Денежные поля — в валюте аккаунта. Остальные поля — через `extra`.
| Name | Type | Req | Description |
|---|---|---|---|
| adPlanId | integer | yes | Id родительской кампании. |
| autobiddingMode | string | – | Стратегия аукциона, например max_goals. |
| budgetLimit | number | – | Общий бюджет в валюте аккаунта. |
| budgetLimitDay | number | – | Дневной бюджет в валюте аккаунта. |
| dateEnd | string | – | Дата окончания, YYYY-MM-DD. |
| dateStart | string | – | Дата начала, YYYY-MM-DD. |
| extra | object | – | Дополнительные поля, подмешиваемые в тело запроса как есть. |
| maxPrice | number | – | Предельная ставка в валюте аккаунта. |
| name | string | yes | Название группы объявлений. |
| objective | string | – | Цель группы, например site_conversions, leadads, traffic. |
| price | number | – | Цена оптимизируемого события в валюте аккаунта. |
| targetings | object | – | Структура таргетинга, отправляется как есть. |
No output schema declared.
No examples provided.
create_ad_plan Создать кампанию (ad_plan) ~224
Создаёт кампанию (ad_plan). Денежные поля — в валюте аккаунта. Сложные и редкие поля передаются через `extra` (подмешиваются в тело запроса как есть).
| Name | Type | Req | Description |
|---|---|---|---|
| autobiddingMode | string | – | Стратегия аукциона, например max_goals, fixed, second_price_mean. |
| budgetLimit | number | – | Общий бюджет в валюте аккаунта. |
| budgetLimitDay | number | – | Дневной бюджет в валюте аккаунта. |
| dateEnd | string | – | Дата окончания, YYYY-MM-DD. |
| dateStart | string | – | Дата начала, YYYY-MM-DD. |
| extra | object | – | Дополнительные поля кампании, подмешиваемые в тело запроса (например, priced_goal, pricelist_id). |
| maxPrice | number | – | Предельная ставка в валюте аккаунта. |
| name | string | yes | Название кампании. |
| objective | string | – | Цель кампании, например site_conversions, leadads, traffic. |
No output schema declared.
No examples provided.
create_banner Создать объявление (banner) ~200
Создаёт объявление внутри группы объявлений. Креатив ссылается на загруженные медиа через `content`, тексты объявления — в `textblocks`, ссылки — в `urls`. Эти структуры отправляются как есть; точная форма для каждого формата объявления — в документации VK Рекламы.
| Name | Type | Req | Description |
|---|---|---|---|
| adGroupId | integer | yes | Id родительской группы объявлений. |
| content | object | – | Ссылки на содержимое креатива (id загруженных медиа). |
| extra | object | – | Дополнительные поля объявления, подмешиваемые в тело запроса как есть. |
| name | string | – | Название объявления. |
| textblocks | object | – | Текстовые блоки, например {"title":{"text":"..."},"text":{"text":"..."}}. |
| urls | object | – | Объекты ссылок, например {"primary":{"url":"https://..."}}. |
No output schema declared.
No examples provided.
finish_login Завершить подключение VK Рекламы ~208
Второй шаг подключения: обменивает client_id и client_secret из start_login на токен доступа (grant client_credentials), сохраняет всё в файл только для владельца (0600) и сразу проверяет живым запросом к VK Рекламе. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Токен живёт около суток и продлевается автоматически, поэтому повторно вызывать это не требуется: каждый вызов создаёт НОВЫЙ токен, а у VK не больше 5 активных токенов на пару client_id + пользователь. Ошибка invalid_client означает, что пара скопирована не полностью или относится к разным приложениям.
| Name | Type | Req | Description |
|---|---|---|---|
| clientId | string | yes | client_id приложения из раздела «Настройки → Доступ к API» кабинета VK Рекламы. |
| clientSecret | string | yes | client_secret того же приложения. Не показывайте его в ответе пользователю. |
No output schema declared.
No examples provided.
get_balance Баланс аккаунта ~176
Возвращает текущий баланс аккаунта 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_regions Список регионов ~110
Возвращает гео-регионы VK Рекламы (id, name, type), при необходимости отфильтрованные по подстроке названия. Id регионов нужны для гео-таргетинга группы объявлений.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Сколько регионов вернуть после фильтрации. По умолчанию 50. |
| query | string | – | Подстрока для фильтра по названию региона, без учёта регистра (например, «Москва»). |
No output schema declared.
No examples provided.
get_statistics Статистика ~448
Возвращает статистику по кампаниям (ad_plans), группам объявлений (ad_groups) или объявлениям (banners) из сервиса статистики VK Рекламы v3. По умолчанию группировка `summary` — одна сводная строка на объект за весь период; day/week/month нужны ТОЛЬКО для динамики по дням и вопросов про тренд (каждая добавляет по строке на объект за период). Ранжирование на стороне сервера — через sortBy (например, base.spent) и order; в ответе есть также `total` — сводка по ВСЕМ объектам за период (для вопросов «сколько всего» суммировать строки не нужно). Метрики лежат в `base` (shows, clicks, spent, ...); spent — в валюте аккаунта.
| Name | Type | Req | Description |
|---|---|---|---|
| autoPaginate | boolean | – | Забрать все страницы, идя по offset/count. |
| dateFrom | string | – | Дата начала, YYYY-MM-DD (обязательна для day/week/month). |
| dateTo | string | – | Дата окончания, YYYY-MM-DD (обязательна для day/week/month). |
| entity | string | – | Тип объектов для отчёта. По умолчанию banners. |
| ids | array | – | Ограничить отчёт этими id объектов (выбранного entity). |
| limit | integer | – | Сколько объектов на страницу (не больше 250). |
| metrics | array | – | Группы метрик в отчёте, например base, events, video. По умолчанию — набор API. |
| offset | integer | – | Смещение постраничной выдачи (сколько объектов пропустить). |
| order | string | – | Направление сортировки для sortBy. По умолчанию desc. |
| period | string | – | Группировка: summary (весь период, по умолчанию) либо day/week/month для динамики. |
| sortBy | string | – | Поле сортировки на стороне сервера, например base.spent / base.clicks / base.shows (топ-N по метрике). |
No output schema declared.
No examples provided.
get_throttling Лимиты запросов к API ~44
Возвращает текущие лимиты запросов VK Рекламы и их остаток (throttling.json) — чтобы не упереться в лимит.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_user_info Информация об аккаунте ~73
Возвращает информацию о текущем аккаунте VK Рекламы (user.json), включая additional_info.client_name. Позволяет убедиться, на какой аккаунт рекламодателя указывает токен.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Поля пользователя в ответе. По умолчанию — базовый набор. |
No output schema declared.
No examples provided.
list_ad_groups Список групп объявлений ~212
Возвращает список групп объявлений с необязательной фильтрацией по id, родительской кампании и статусу. Денежные поля — в валюте аккаунта; в `targetings` лежит структура таргетинга по гео, демографии и интересам.
| Name | Type | Req | Description |
|---|---|---|---|
| adPlanIds | array | – | Фильтр по id родительских кампаний. |
| autoPaginate | boolean | – | Забрать все страницы, идя по offset/count (limit при этом не ограничивает общее число объектов). |
| fields | array | – | Поля группы объявлений в ответе (с «targetings» вернётся полный объект таргетинга). |
| ids | array | – | Фильтр по id групп объявлений. |
| limit | integer | – | Сколько объектов на страницу (не больше 250). |
| offset | integer | – | Смещение постраничной выдачи (сколько объектов пропустить). |
| statuses | array | – | Фильтр по статусу. |
No output schema declared.
No examples provided.
list_ad_plans Список кампаний (ad_plans) ~176
Возвращает список ad_plan (верхнеуровневый объект кампании в VK Рекламе) с необязательной фильтрацией по id и статусу. Денежные поля (budget_limit, budget_limit_day, max_price) — в валюте аккаунта.
| Name | Type | Req | Description |
|---|---|---|---|
| autoPaginate | boolean | – | Забрать все страницы, идя по offset/count (limit при этом не ограничивает общее число объектов). |
| fields | array | – | Поля кампании в ответе. |
| ids | array | – | Фильтр по id кампаний. |
| limit | integer | – | Сколько объектов на страницу (не больше 250). |
| offset | integer | – | Смещение постраничной выдачи (сколько объектов пропустить). |
| statuses | array | – | Фильтр по статусу. |
No output schema declared.
No examples provided.
list_banners Список объявлений (banners) ~203
Возвращает список banner (объект объявления/креатива в VK Рекламе) с необязательной фильтрацией по id, родительской группе объявлений и статусу. moderation_status (pending/allowed/banned) и delivery объясняют, почему объявление показывается или не показывается.
| Name | Type | Req | Description |
|---|---|---|---|
| adGroupIds | array | – | Фильтр по id родительских групп объявлений. |
| autoPaginate | boolean | – | Забрать все страницы, идя по offset/count (limit при этом не ограничивает общее число объектов). |
| fields | array | – | Поля объявления в ответе. |
| ids | array | – | Фильтр по id объявлений. |
| limit | integer | – | Сколько объектов на страницу (не больше 250). |
| offset | integer | – | Смещение постраничной выдачи (сколько объектов пропустить). |
| statuses | array | – | Фильтр по статусу. |
No output schema declared.
No examples provided.
logout Отключить VK Рекламу ~110
Удаляет сохранённые токен и данные приложения VK Рекламы с диска. Токен, заданный переменной окружения VK_ADS_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. На стороне VK токен остаётся активным до истечения срока: отозвать его можно запросом POST v2/oauth2/token/delete.json, но он удаляет ВСЕ токены этого пользователя для данного client_id, поэтому здесь не вызывается.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
raw_request Произвольный запрос к API VK Рекламы ~213
Универсальный запрос напрямую к любому эндпоинту API VK Рекламы (например, path "v2/ad_plans.json", method GET). Нужен для эндпоинтов, у которых нет отдельного инструмента. `query` уходит в строку запроса, `body` отправляется как JSON для POST. GET выполняется свободно; POST и DELETE — запись, для них нужен confirmWrite=true.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | JSON-тело для POST-запросов. |
| confirmWrite | boolean | – | Должен быть true для записи (POST или DELETE). |
| method | string | – | HTTP-метод. По умолчанию GET. |
| path | string | yes | Путь эндпоинта с версией, например "v2/ad_plans.json", "v3/statistics/banners/day.json". |
| query | object | – | Параметры строки запроса (фильтры, поля, постраничная выдача). |
No output schema declared.
No examples provided.
start_login Начать подключение VK Рекламы ~115
Первый шаг подключения VK Рекламы без правки конфигурации и без перезапуска клиента. Ничего не отправляет в сеть — возвращает инструкцию, которую нужно показать пользователю целиком: где в кабинете создать приложение и откуда скопировать client_id и client_secret. Полученную пару передайте в finish_login. Предупредите, что client_secret — это пароль от рекламного кабинета: он сохранится на диске только для владельца и нужен, чтобы продлевать токен.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
update_ad_group Изменить группу объявлений ~191
Меняет у группы объявлений название, бюджеты, предельную ставку, даты или таргетинг. Денежные поля — в валюте аккаунта. Для смены статуса — ad_group_action.
| Name | Type | Req | Description |
|---|---|---|---|
| budgetLimit | number | – | Общий бюджет в валюте аккаунта. |
| budgetLimitDay | number | – | Дневной бюджет в валюте аккаунта. |
| dateEnd | string | – | Новая дата окончания, YYYY-MM-DD. |
| extra | object | – | Дополнительные поля, подмешиваемые в тело запроса как есть. |
| id | integer | yes | Id изменяемой группы объявлений. |
| maxPrice | number | – | Предельная ставка в валюте аккаунта. |
| name | string | – | Новое название. |
| targetings | object | – | Новая структура таргетинга взамен прежней, отправляется как есть. |
No output schema declared.
No examples provided.
update_ad_plan Изменить кампанию (ad_plan) ~160
Меняет у кампании название, бюджеты, предельную ставку или даты. Денежные поля — в валюте аккаунта. Для смены статуса — ad_plan_action.
| Name | Type | Req | Description |
|---|---|---|---|
| budgetLimit | number | – | Общий бюджет в валюте аккаунта. |
| budgetLimitDay | number | – | Дневной бюджет в валюте аккаунта. |
| dateEnd | string | – | Новая дата окончания, YYYY-MM-DD. |
| extra | object | – | Дополнительные поля, подмешиваемые в тело запроса как есть. |
| id | integer | yes | Id изменяемой кампании. |
| maxPrice | number | – | Предельная ставка в валюте аккаунта. |
| name | string | – | Новое название. |
No output schema declared.
No examples provided.
update_banner Изменить объявление (banner) ~127
Меняет у объявления название, текстовые блоки или ссылки. Для смены статуса — banner_action. Структуры отправляются как есть.
| Name | Type | Req | Description |
|---|---|---|---|
| extra | object | – | Дополнительные поля, подмешиваемые в тело запроса как есть. |
| id | integer | yes | Id изменяемого объявления. |
| name | string | – | Новое название. |
| textblocks | object | – | Новые текстовые блоки взамен прежних, отправляются как есть. |
| urls | object | – | Новые объекты ссылок взамен прежних, отправляются как есть. |
No output schema declared.
No examples provided.
What is the VK Ads MCP server?
VK Ads MCP is listed in the public MCP registry as io.github.askads/mcp-vk-ads. MCP server for VK Ads (VK Реклама) API: manage ad plans, ad groups, banners, and statistics. This page covers its npm package (mcp-vk-ads).
Is the VK Ads MCP server safe to use?
VK Ads MCP scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 26 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the VK Ads MCP server expose?
VK Ads MCP exposes 22 tools: auth_status, start_login, finish_login, logout, get_user_info, and 17 more. Their descriptions and schemas cost roughly 3,563 tokens of context every time the server is loaded.
Is the VK Ads MCP server still maintained?
VK Ads MCP is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the VK Ads MCP server under?
VK Ads MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.