{"name":"io.github.askads/mcp-vk-ads","slug":"askads-mcp-vk-ads","title":"VK Ads MCP","description":"MCP server for VK Ads (VK Реклама) API: manage ad plans, ad groups, banners, and statistics.","url":"https://mcp.market/server/askads-mcp-vk-ads","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":36,"stars":7,"forks":0,"downloads_week":67,"last_push_at":"2026-09-20T13:33:11.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/askads/mcp-vk-ads","website":"https://github.com/askads/mcp-vk-ads#readme","version":"1.5.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"mcp-vk-ads","version":"1.5.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.","isSecret":true,"name":"VK_ADS_TOKEN"},{"description":"Language for API responses (Accept-Language header), e.g. ru, en.","default":"ru","name":"VK_ADS_LANG"},{"description":"Per-request timeout in milliseconds.","default":"60000","name":"VK_ADS_TIMEOUT_MS"},{"description":"Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).","default":"3","name":"VK_ADS_MAX_RETRIES"},{"description":"API root without a version segment. Defaults to https://ads.vk.com/api.","default":"https://ads.vk.com/api","name":"VK_ADS_API_BASE"}]}],"tools":[{"name":"ad_group_action","description":"Меняет статус групп объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ad_plan_action","description":"Меняет статус кампаний по id: activate (status=active), stop (status=blocked) или delete (status=deleted).","write_action":false,"price_micros":0,"input_schema":null},{"name":"auth_status","description":"Показывает, подключена ли VK Реклама: есть ли токен, откуда он взят (переменная окружения VK_ADS_TOKEN или сохранённый вход), когда истекает, какой client_id и аккаунт за ним стоят и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть, не показывает ни токен, ни client_secret. Вызовите это, если инструменты VK Рекламы отвечают, что подключение не настроено.","write_action":false,"price_micros":0,"input_schema":null},{"name":"banner_action","description":"Меняет статус объявлений по id: activate (status=active), stop (status=blocked) или delete (status=deleted).","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_ad_group","description":"Создаёт группу объявлений внутри кампании. Таргетинг задаётся в `targetings` (например, {\"geo\":{\"regions\":[188]},\"age\":{\"age_list\":[25,26]}}). Денежные поля — в валюте аккаунта. Остальные поля — через `extra`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_ad_plan","description":"Создаёт кампанию (ad_plan). Денежные поля — в валюте аккаунта. Сложные и редкие поля передаются через `extra` (подмешиваются в тело запроса как есть).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_banner","description":"Создаёт объявление внутри группы объявлений. Креатив ссылается на загруженные медиа через `content`, тексты объявления — в `textblocks`, ссылки — в `urls`. Эти структуры отправляются как есть; точная форма для каждого формата объявления — в документации VK Рекламы.","write_action":true,"price_micros":0,"input_schema":null},{"name":"finish_login","description":"Второй шаг подключения: обменивает client_id и client_secret из start_login на токен доступа (grant client_credentials), сохраняет всё в файл только для владельца (0600) и сразу проверяет живым запросом к VK Рекламе. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Токен живёт около суток и продлевается автоматически, поэтому повторно вызывать это не требуетс","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_balance","description":"Возвращает текущий баланс аккаунта VK Рекламы: доступные средства и валюту.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_regions","description":"Возвращает гео-регионы VK Рекламы (id, name, type), при необходимости отфильтрованные по подстроке названия. Id регионов нужны для гео-таргетинга группы объявлений.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_statistics","description":"Возвращает статистику по кампаниям (ad_plans), группам объявлений (ad_groups) или объявлениям (banners) из сервиса статистики VK Рекламы v3. По умолчанию группировка `summary` — одна сводная строка на объект за весь период; day/week/month нужны ТОЛЬКО для динамики по дням и вопросов про тренд (каждая добавляет по строке на объект за период). Ранжирование на стороне сервера — через sortBy (например","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_throttling","description":"Возвращает текущие лимиты запросов VK Рекламы и их остаток (throttling.json) — чтобы не упереться в лимит.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user_info","description":"Возвращает информацию о текущем аккаунте VK Рекламы (user.json), включая additional_info.client_name. Позволяет убедиться, на какой аккаунт рекламодателя указывает токен.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_ad_groups","description":"Возвращает список групп объявлений с необязательной фильтрацией по id, родительской кампании и статусу. Денежные поля — в валюте аккаунта; в `targetings` лежит структура таргетинга по гео, демографии и интересам.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_ad_plans","description":"Возвращает список ad_plan (верхнеуровневый объект кампании в VK Рекламе) с необязательной фильтрацией по id и статусу. Денежные поля (budget_limit, budget_limit_day, max_price) — в валюте аккаунта.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_banners","description":"Возвращает список banner (объект объявления/креатива в VK Рекламе) с необязательной фильтрацией по id, родительской группе объявлений и статусу. moderation_status (pending/allowed/banned) и delivery объясняют, почему объявление показывается или не показывается.","write_action":false,"price_micros":0,"input_schema":null},{"name":"logout","description":"Удаляет сохранённые токен и данные приложения VK Рекламы с диска. Токен, заданный переменной окружения VK_ADS_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. На стороне VK токен остаётся активным до истечения срока: отозвать его можно запросом POST v2/oauth2/token/delete.json, но он удаляет ВСЕ токены этого пользователя для данного client_id, поэтому здесь не вызывается.","write_action":false,"price_micros":0,"input_schema":null},{"name":"raw_request","description":"Универсальный запрос напрямую к любому эндпоинту API VK Рекламы (например, path \"v2/ad_plans.json\", method GET). Нужен для эндпоинтов, у которых нет отдельного инструмента. `query` уходит в строку запроса, `body` отправляется как JSON для POST. GET выполняется свободно; POST и DELETE — запись, для них нужен confirmWrite=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_login","description":"Первый шаг подключения VK Рекламы без правки конфигурации и без перезапуска клиента. Ничего не отправляет в сеть — возвращает инструкцию, которую нужно показать пользователю целиком: где в кабинете создать приложение и откуда скопировать client_id и client_secret. Полученную пару передайте в finish_login. Предупредите, что client_secret — это пароль от рекламного кабинета: он сохранится на диске т","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_ad_group","description":"Меняет у группы объявлений название, бюджеты, предельную ставку, даты или таргетинг. Денежные поля — в валюте аккаунта. Для смены статуса — ad_group_action.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_ad_plan","description":"Меняет у кампании название, бюджеты, предельную ставку или даты. Денежные поля — в валюте аккаунта. Для смены статуса — ad_plan_action.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_banner","description":"Меняет у объявления название, текстовые блоки или ссылки. Для смены статуса — banner_action. Структуры отправляются как есть.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-20T16:16:04.245Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T16:16:04.220Z","components":{"code":{"score":25,"max":25,"notes":["17 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"mcp-vk-ads","version":"1.5.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-20T13:26:20.933Z","repositoryUrl":"git+https://github.com/askads/mcp-vk-ads.git","weeklyDownloads":67}],"repo":{"found":true,"owner":"askads","repo":"mcp-vk-ads","archived":false,"pushedAt":"2026-09-20T13:33:11Z","stars":7,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/293946193?v=4","ownerCreatedAt":"2026-06-15T17:57:33Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/293946193?v=4&s=128","source":"github"},"presence":{"stars":7,"forks":0,"downloadsWeek":67,"license":"MIT","lastPushAt":"2026-09-20T13:33:11.000Z","score":36}}}},"grade_history":[],"reviews":[]}