Yandex Direct MCP Server

MCP server for Yandex Direct API v5 — manage PPC campaigns, ad groups, ads, keywords, bid modifiers, sitelinks/callouts, and pull statistics.

Documentation

Yandex Direct MCP

npm CI Glama License: MIT

MCP-сервер для Yandex Direct API v5: управляйте контекстной рекламой из Claude, Cursor, Codex и других AI-клиентов на естественном языке.

Ассистент сам собирает данные из статистики, ключей, ставок и расширений, находит закономерности и вносит правки — то, что в веб-кабинете Директа приходится делать вручную и по одному экрану.

Что умеет

  • Полное покрытие API v5 — частые объекты как удобные инструменты, всё остальное — через универсальный raw_request.
  • Защита от случайных записей — универсальный raw_request блокирует любой не-read метод без confirmWrite=true; выделенные write-инструменты (ставки, бюджеты, минус-слова, статусы) проходят штатное подтверждение MCP-клиента перед вызовом.
  • Деньги в валюте аккаунта — бюджеты и ставки на вход и на выход в той же валюте, что и кабинет (например, в рублях), без ручного пересчёта микроединиц.
  • autoPaginate — проход всех страниц по курсору LimitedBy, без молчаливой обрезки на больших аккаунтах.
  • get_quota — остаток дневной квоты API в Units (потрачено / осталось / лимит).
  • Устойчивость — ретраи на лимитах и 5xx с бэкоффом плюс режим песочницы (YANDEX_DIRECT_SANDBOX) для безопасных тестов.

Примеры запросов

Попросите ассистента на русском — например:

  • «Какие ключевые фразы тратят бюджет, но не приносят кликов?»
  • «Подними ставки до 3 ₽ на фразы с CTR выше 15%»
  • «Найди id региона Москва и создай группу с таргетингом на Москву»
  • «Поставь корректировку −20% на мобильные в кампании 708589088»

Пример: аудит кампании

Вы: Проанализируй кампанию ClearTranscriptBot за последнюю неделю и предложи, что улучшить.

Claude (вызывает get_statistics, list_keywords, get_callouts, get_sitelinks):

Кампания «EPK/Поиск — бот в Max и Telegram» за 7 дней:

ДатаПоказыКликиCTRРасход, ₽Ср. клик, ₽
08.065449016.5%782.508.69
09.064567015.4%528.937.56
10.062063918.9%254.486.53
11.061983618.2%205.875.72
12.062753713.5%178.954.84
13.063324513.6%214.624.77
14.064198219.6%481.555.87
Итого2 43039916.4%2 646.906.63

Что улучшить:

  1. Автотаргетинг забирает почти весь трафик. Условие ---autotargeting собирает основную долю показов и кликов, а ключи («расшифровка интервью», «транскрибация записи» …) получают по 1–22 показа и почти 0 кликов — стоит усилить ставки на фразы или точнее настроить автотаргетинг.
  2. Ставки на минимуме (0.30 ₽), а CTR высокий (16–20%). На поиске при таком CTR имеет смысл поднять ставки на топ-фразы — заберёте больше недорогих показов.
  3. Объявление 17674525479 отстаёт (CTR 2–10% против 17–20% у основного) — кандидат на переработку заголовка/текста или отключение.
  4. Расширения в порядке — 9 уточнений и 3 быстрые ссылки; можно добавить ещё пару быстрых ссылок (лимит — 8).

Быстрая установка

Разверните своего клиента:

Claude Code
claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y mcp-yandex-direct
Claude Desktop

claude_desktop_config.json — macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\

{
  "mcpServers": {
    "yandex-direct": {
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct"],
      "env": { "YANDEX_DIRECT_TOKEN": "ваш_токен" }
    }
  }
}
Cursor

~/.cursor/mcp.json (или .cursor/mcp.json в проекте)

{
  "mcpServers": {
    "yandex-direct": {
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct"],
      "env": { "YANDEX_DIRECT_TOKEN": "ваш_токен" }
    }
  }
}
OpenAI Codex

Командой: codex mcp add yandex-direct --env YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y mcp-yandex-direct

Или в ~/.codex/config.toml:

[mcp_servers.yandex-direct]
command = "npx"
args = ["-y", "mcp-yandex-direct"]

[mcp_servers.yandex-direct.env]
YANDEX_DIRECT_TOKEN = "ваш_токен"
VS Code

.vscode/mcp.json — ключ servers (не mcpServers)

{
  "servers": {
    "yandex-direct": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct"],
      "env": { "YANDEX_DIRECT_TOKEN": "ваш_токен" }
    }
  }
}

Получение токена

Откройте ссылку, залогинившись под аккаунтом с доступом к нужному кабинету Яндекс Директа, и подтвердите доступ — токен покажется на странице:

→ Получить токен

Скопируйте токен в YANDEX_DIRECT_TOKEN. Токен персональный (привязан к вашему кабинету) и действует около года; при утере его можно получить заново по той же ссылке.

⚠️ Токен даёт полный доступ к рекламному кабинету (включая трату бюджета) и хранится открытым текстом в конфиге клиента — относитесь к нему как к паролю.

Настройка

ПеременнаяОбяз.Описание
YANDEX_DIRECT_TOKENдаOAuth-токен Яндекс Директа.
YANDEX_DIRECT_LOGINнетЛогин клиента (для агентских аккаунтов).
YANDEX_DIRECT_SANDBOXнетtrue — работать в песочнице API.

Полный список переменных (язык ответов, таймауты, повторы) и инструментов — в docs/TOOLS.md.

Требования

  • Node.js 18+ (запускается через npx, отдельная установка не нужна).
  • OAuth-токен Яндекс Директа — см. Получение токена.

Ограничения

  • get_statistics использует асинхронный сервис Reports: отчёт генерируется на стороне Яндекса (сервер опрашивает готовность) и имеет собственные лимиты на объём и число отчётов в сутки.
  • Токен живёт около года — потом нужно получить заново.
  • Для агентских аккаунтов укажите клиента через YANDEX_DIRECT_LOGIN.

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

Поддержка

Вопросы, идеи и доработки — пишите в Telegram: @gistrec.

Лицензия

MIT — см. LICENSE.