MCP «Яндекс Директ»
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP «Яндекс Директ»create a new text ad campaign for online store"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Yandex Direct MCP
MCP-сервер для Yandex Direct JSON API v5 на Bun + TypeScript.
50 инструментов: кампании (включая ЕПК, стратегии торгов и цели Метрики), группы объявлений, объявления (текстовые и комбинаторные), расширения (быстрые ссылки, уточнения), изображения, ставки и прогноз цены клика, корректировки ставок, ключевые фразы, отчёты, справочники.
Требования
Bun 1.1+
Related MCP server: yandex-direct-mcp
Установка
git clone https://github.com/ai-hub-open/yandex-direct-mcp.git
cd yandex-direct-mcp
bun installНастройка
Скопируйте .env.example в .env и заполните один из двух режимов (переменные окружения имеют приоритет над .env):
A. Прямой режим — свой OAuth-токен Яндекс.Директа:
YANDEX_DIRECT_TOKEN=y0__...
YANDEX_DIRECT_SANDBOX=false # true — песочницаПо умолчанию используется версия API v501 (обязательна для ЕПК); переключить можно через YANDEX_DIRECT_API_VERSION=v5.
B. Через прокси Click.ru — OAuth-токен Яндекса не нужен:
CLICK_RU_PROXY=true
CLICK_RU_TOKEN=<API-токен из профиля click.ru>
CLICK_RU_CLIENT_LOGIN=<логин аккаунта Яндекс.Директа>
CLICK_RU_USER_ID=<ID пользователя click.ru> # только при работе из мастер-аккаунтаТокен создаётся в профиле https://click.ru/userinfo.html → поле «API Token» → «Создать». Аккаунт Яндекс.Директа должен быть подключён в Click.ru. Справка: https://help.click.ru/81, https://api.click.ru/V0/docs/.
Прокси Click.ru работает только с продакшн-API Яндекса (песочница недоступна).
Запуск
bun run src/index.ts # stdio — для локальных MCP-клиентов
MCP_AUTH_TOKEN=<секрет> bun run src/index.ts --http # HTTP-сервер на :3000В HTTP-режиме MCP_AUTH_TOKEN обязателен — см. HTTP-режим.
Тесты
Обязательный гейт перед изменениями — мок-тесты (тела запросов к API, без сети) и тесты HTTP-транспорта (авторизация, CORS):
bun run testРелизы
Публикация автоматическая: при выпуске релиза на GitHub workflow прогоняет проверки, публикует пакет в npm и обновляет запись в реестре MCP. Тег релиза должен совпадать с версией в package.json (версия 0.5.0 → тег v0.5.0), иначе публикация останавливается. Версию поднимают в трёх местах: package.json, server.json (корневое поле и packages[0].version) и CHANGELOG.md.
Авторизация в обоих реестрах идёт через доверенного издателя по GitHub OIDC — долгоживущих токенов в секретах нет.
E2E-прогон на песочнице (создаёт и удаляет тестовые кампании; нужны YANDEX_DIRECT_TOKEN и YANDEX_DIRECT_SANDBOX=true):
bun run test:sandboxОграничения песочницы Яндекса (в проде их нет; часть лечится пересозданием песочницы в кабинете — Инструменты → Настройки API → Песочница). E2E помечает такие шаги как «пропуск», а не как ошибку:
adgroups.addвозвращает ID, но группа не появляется вadgroups.get, аads.addотвечает «Группа объявлений не найдена» — заливка объявлений в песочнице непроверяема;bidmodifiers.addвозвращает ID, ноbidmodifiers.getвсегда пуст при любом фильтре;сервис
sitelinksотвечает «Сервис временно недоступен».
Подключение к Claude Code
.mcp.json в корне вашего проекта (см. также .mcp.json.example):
{
"mcpServers": {
"yandex-direct": {
"command": "bun",
"args": ["run", "/абсолютный/путь/к/yandex-direct-mcp/src/index.ts"],
"env": {
"CLICK_RU_PROXY": "true",
"CLICK_RU_TOKEN": "<ваш токен>",
"CLICK_RU_CLIENT_LOGIN": "<логин Директа>"
}
}
}
}Для прямого режима в env вместо CLICK_RU_* укажите YANDEX_DIRECT_TOKEN.
📋 Инструкция для AI-агента — скопируйте и передайте своему агенту (Claude Code / Codex), подставив ключи:
Установи и подключи MCP-сервер «Yandex Direct»: склонируй
https://github.com/ai-hub-open/yandex-direct-mcp.git, проверь Bun (bun --version, если нет — установи с https://bun.sh), выполниbun installв корне репозитория. Зарегистрируй локальный stdio-MCP: командаbun, аргументыrun <абсолютный_путь_к_репо>/src/index.ts, переменные окружения — мои ключи:CLICK_RU_PROXY=true,CLICK_RU_TOKEN=<...>,CLICK_RU_CLIENT_LOGIN=<...>(илиYANDEX_DIRECT_TOKEN=<...>для прямого режима). Проверьtools/listи сообщи результат.
HTTP-режим
MCP_TRANSPORT=http MCP_PORT=3000 MCP_AUTH_TOKEN=<секрет> bun run src/index.tsMCP_AUTH_TOKEN обязателен: без него сервер не стартует, потому что открытый эндпоинт даёт полный доступ к рекламному кабинету. Запросы должны нести Authorization: Bearer <секрет>. Если сервер закрыт reverse-proxy или слушает только localhost, запуск без авторизации подтверждается явно: MCP_ALLOW_ANONYMOUS=true.
Переменные: MCP_PORT (3000), MCP_HOST (0.0.0.0), MCP_AUTH_TOKEN, MCP_ALLOW_ANONYMOUS, MCP_ALLOWED_ORIGIN. CORS-заголовки по умолчанию не выдаются (MCP-клиенты ходят не из браузера) — разрешите конкретный источник через MCP_ALLOWED_ORIGIN, если он действительно нужен.
Метод + путь | Назначение |
| JSON-RPC 2.0 запрос (или батч) |
| health check |
| список инструментов (отладка) |
Multi-tenant: креды можно передавать заголовками на каждый запрос (перекрывают .env) — один инстанс обслуживает несколько клиентов:
X-Yandex-Token: <OAuth> X-Click-Ru-Token: <токен>
X-Yandex-Sandbox: true|false X-Click-Ru-User-Id: <ID>
X-Yandex-Api-Version: v501|v5 X-Client-Login: <логин Директа>
X-Click-Ru-Base-Url: <база API Click.ru>В режиме Click.ru по HTTP обязательны все три заголовка. Сервер можно запустить без кред в .env — тогда каждый запрос обязан нести заголовки.
⚠️ Безопасность: при публикации в сеть держите MCP_AUTH_TOKEN заданным и закройте порт за reverse-proxy с TLS. Запуск с MCP_ALLOW_ANONYMOUS=true на MCP_HOST=0.0.0.0 открывает кабинет всем, кто дотянется до порта.
Docker
cp .env.example .env # заполните ключи и MCP_AUTH_TOKEN
docker compose up -d --build
curl http://localhost:3000/healthzИнструменты (50)
Campaigns: get / add / update / delete / suspend / resume — текстовые кампании и ЕПК (единая перформанс-кампания), стратегии торгов с недельным бюджетом, счётчики Метрики и приоритетные цели
AdGroups: get / add / update / delete — включая группы ЕПК (UnifiedAdGroup)
Ads: get / add / add_responsive (комбинаторное объявление ЕПК) / update (текстовые и комбинаторные) / delete / suspend / resume / moderate
AdImages: add (с кропом) / get
Sitelinks: add / get / delete — наборы быстрых ссылок
AdExtensions: add / get / delete — уточнения
BidModifiers: devices / regional / retargeting / demographics / set / delete / get — корректировки ставок на запись и чтение
Keywords: get / add / update / delete / suspend / resume
KeywordBids: set / get — ставки по фразам и данные аукциона (объёмы трафика, цены)
Forecast: forecast_bids — прогноз цены клика и трафика по произвольным фразам без создания кампании
Reports: campaign / ad / search_queries / custom (произвольный тип и набор столбцов)
Dictionaries: regions / currencies / interests / all
Предпросмотр записи (dry-run)
Любой инструмент, меняющий кабинет, принимает dry_run: true — вернёт тело запроса, которое ушло бы в API, и ничего не изменит. Валидация параметров при этом выполняется полностью, так что предпросмотр ловит ошибки до записи:
{ "name": "yandex_direct_campaigns_add", "arguments": { "name": "Тест", "start_date": "2026-08-01", "dry_run": true } }Отказы API
Любой отказ Директа возвращается агенту помеченным как ошибка, с причиной и следующим шагом — включая частичные отказы, когда запрос выполнен, но отдельные объекты не приняты. Пример реального ответа:
Запрос к API Яндекс.Директа отклонён (код 152).
Причина: Недостаточно баллов
Баллы API: потрачено 0, осталось 0 из 64000
Что делать: Закончились баллы API (units) — это дневной лимит на обращения
к Директу, а не проблема моста. Баллы начисляются раз в 60 минут...Ниже подсказки всегда идёт полный ответ API — для разбора нестандартных случаев.
Расход контекста
Полное описание инструментов (tools/list) занимает около 16 800 токенов — 8,4% окна на 200k и 1,7% на 1M. Три четверти веса приходятся на JSON-схемы параметров, на текстовые описания — 17%.
Сокращённый режим (отдельные методы «список / описание / вызов») решено не вводить: выигрыш не оправдывает потерю штатной валидации аргументов на стороне клиента и лишние round-trip'ы, а доля окна не критична. Решение пересмотреть, если число инструментов заметно вырастет.
Замер воспроизводится:
bun run scripts/measure-context.tsЧто осознанно вне этого моста
Мост покрывает только API Яндекс.Директа. Смежные задачи живут в других контурах и сюда не встраиваются:
Вордстат (подбор семантики, частота запросов, спрос) — отдельный API Яндекса, не Директ. Остаётся за скиллом или отдельным MCP. Граница проходит по смыслу данных: частота и спрос — там, аукционные деньги (прогноз цены клика) — здесь, инструментом
forecast_bids.Метрика как сервис (создание целей, чтение статистики, сегменты) — отдельный API Метрики. Мост Директа привязывает цель по готовому ID (
counter_ids,priority_goals,goal_idв стратегиях) — на этом граница.
Причина: «одно подключение к Яндексу = Директ + Метрика + Вордстат» — это уровень пакета или прокси (например Click.ru), а не одного сервера. Смешение трёх API в одном мосте увеличивает связность и зону отказа.
Лицензия
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for AI agents to manage ad campaigns across Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, and moreLast updated212314MIT
- AlicenseAqualityBmaintenanceMCP server for Yandex.Direct API v5 enabling management of campaigns, ad groups, ads, keywords, statistics, and account info via 12 tools.Last updated201035MIT
- Alicense-qualityDmaintenanceMCP server for managing ad campaigns across Google Ads, Meta, and more. Enables deploying campaigns, checking performance, and managing budgets from terminal or AI assistants.Last updatedMIT
- AlicenseBqualityBmaintenanceMCP server for managing Yandex Direct advertising, Yandex Metrica analytics, Wordstat keyword research, and Yandex Webmaster SEO tools, with self-configuring OAuth; provides 153 tools for complete ad and search workflows from AI assistants.Last updated100166MIT
Related MCP Connectors
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai-hub-open/yandex-direct-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server