vk-ads-mcp
Read-only MCP server for analyzing VK Ads campaigns, listing ad structures, retrieving statistics, and generating optimization recommendations.
README
vk-ads-mcp
MCP-сервер для Claude Code: отдаёт статистику и структуру рекламных кампаний
VK Рекламы (новый кабинет ads.vk.com, база https://ads.vk.com/api/v2).
Только чтение. Ничего не создаёт и не меняет. Рассчитан на свой кабинет.
Под капотом — тот же движок, что у myTarget. Словарь объектов:
ad_plans — кампании, ad_groups — группы объявлений, banners — объявления.
Инструменты
| Инструмент | Что делает |
|---|---|
list_campaigns |
список кампаний (ad_plans), фильтр по статусу, пагинация |
list_ad_groups |
список групп объявлений, фильтр по кампании |
list_banners |
список объявлений, фильтр по группе |
get_statistics |
статистика по ad_plans/ad_groups/banners за период (day/summary); сам режет диапазон >92 дней и список >50 id на части |
get_top_objects |
топ кампаний / групп / объявлений по метрике (ctr, cpc, cpa, spent и т.д.); order=asc — для метрик стоимости |
describe_fields |
список допустимых полей для ad_plans/ad_groups/banners — узнаёт их у API на лету |
export_to_csv |
выгрузка статистики в CSV-файл |
get_rate_limits |
остаток квоты API для диагностики |
Списочные инструменты по умолчанию отдают минимальный набор полей. Чтобы получить
больше данных, передайте fields (через запятую). Какие поля доступны для объекта —
подскажет describe_fields.
Ресурсы и промпт
| Ресурс | Что внутри |
|---|---|
vk-ads://metrics |
справочник групп метрик статистики (base, uniques, video, events, viral, carousel, tps, romi, moat, playable) с единицами измерения |
vk-ads://objects |
иерархия ad_plans → ad_groups → banners и ключевые поля для анализа |
Промпт campaign_analysis — пошаговый сценарий разбора кампаний на русском.
Принимает необязательные date_from, date_to, objective.
Анализ и рекомендации
Сервер не только отдаёт данные, но и помогает их разобрать по схеме анализ → ранжирование → рекомендации:
- Анализ.
list_campaignsиget_statisticsдают структуру и цифры за период. Ресурсыvk-ads://metricsиvk-ads://objectsобъясняют, что значат метрики и поля. - Ранжирование.
get_top_objectsпоказывает лучшие и худшие объекты по нужной метрике:order=descдля CTR и конверсий,order=ascдляcpc/cpa, где меньше — лучше. - Рекомендации. Промпт
campaign_analysisсобирает шаги в готовый сценарий: на что смотреть, что отключить, где поднять ставку.
Доступ к API
client_id/client_secret не выдаются автоматически. В кабинете VK Рекламы:
Настройки → Доступ к API → Запросить доступ к API (или письмо на
ads_api@vk.team). client_secret показывают один раз. Подробнее —
в исходном обзоре ../Open-Source решения для MCP Server VK Ads — полный обзор.md.
Настройка
Скопируйте .env.example в .env и задайте пару из кабинета:
VK_ADS_CLIENT_ID=...
VK_ADS_CLIENT_SECRET=...
Сервер сам получит и обновит токен через grant_type=client_credentials
(и перезапросит при 401). Если когда-нибудь окажется готовый Bearer-токен —
можно вместо пары задать VK_ADS_TOKEN, тогда OAuth не используется.
.env в git не попадает. .mcp.json хранит только плейсхолдеры
${VK_ADS_CLIENT_ID} / ${VK_ADS_CLIENT_SECRET}.
VK ограничивает кабинет 5 живыми токенами на client_id, а Claude Code часто
перезапускает сервер. Поэтому токен кешируется на диск
(~/.cache/vk-ads-mcp/token.json, права 0600) и переиспользуется между
перезапусками — новый токен не выпускается, пока старый не истёк. Путь меняется
через VK_ADS_TOKEN_CACHE.
Подключение к Claude Code
claude mcp add vk-ads --scope project \
--env VK_ADS_CLIENT_ID=$VK_ADS_CLIENT_ID \
--env VK_ADS_CLIENT_SECRET=$VK_ADS_CLIENT_SECRET \
-- uv run --with fastmcp fastmcp run src/vk_ads_mcp/server.py
Команда дописывает .mcp.json в корень проекта (он уже здесь). Реальный токен
берётся из окружения при запуске, в репозиторий не коммитится.
Разработка
uv sync --all-extras --dev
uv run pytest -q # тесты, сеть не нужна (httpx замокан через respx)
uv run ruff check . # линт
uv run ruff format . # форматирование
Отладка вручную
uv run fastmcp dev src/vk_ads_mcp/server.py
Поднимает MCP Inspector — можно дёргать инструменты руками и смотреть ответы.
Структура
src/vk_ads_mcp/
app.py общий FastMCP-инстанс + ленивый клиент
config.py чтение env
auth.py OAuth2 client_credentials + refresh / Bearer-override
client.py весь HTTP: пагинация, чанкинг 92 дней / 50 id, бэкофф на 429
models.py pydantic-модели ответов
tools/ по файлу на инструмент
resources.py ресурсы vk-ads://metrics и vk-ads://objects
prompts.py промпт campaign_analysis
server.py точка входа (регистрирует инструменты, ресурсы, промпт, запускает stdio)
tests/ pytest + respx
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.