关于 Яндекс.Директ
Яндекс.Директ 是面向广告运营者的 MCP 服务,可在对话中管理 Яндекс.Директ v5 广告并查看统计数据。它提供读写工具,明确区分可能消耗预算或不可逆删除的操作,并支持代理商模式。
主要功能
- 01管理广告系列、广告组和广告
- 02维护关键词、出价与否定关键词
- 03查看统计、搜索词和账户余额
- 04按卢布处理金额与字符串 ID
- 05区分预算变更和不可逆删除操作
适用场景
- 01通过对话创建和调整广告系列
- 02分析搜索词并整理否定关键词
- 03查看广告支出和账户余额
MCP 相关
该服务器通过 stdio 向 MCP 客户端提供 Яндекс.Директ API v5 工具,并可配置为 HTTP 远程服务。客户端启动服务器时传入 OAuth 令牌等环境变量。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
59收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 返回的对象数(最多 10000 个) |
| types | array | 否 | 按广告系列类型筛选 |
| fields | array | 否 | 要返回的字段;默认值为 Id、Name、Status、StatusClarification、State、DailyBudget、StartDate、Type、Statistics |
| offset | integer | 否 | 结果偏移量:此处传入上一页的 LimitedBy |
| status | enum | 否 | 按广告系列审核状态筛选ACCEPTED | DRAFT | MODERATION | REJECTED |
详细介绍
yandex-direct-mcp-plus
通过与助手对话管理 Yandex.Direct 上下文广告:创建广告系列、分析搜索查询、清理否定关键词、调整出价并查看花费,无需在账户的各个版块之间切换。可在任何 MCP 客户端中使用:Claude Code、Claude Desktop、Cursor 等。
- 60 个工具,其中 25 个仅供读取。广告系列和策略、广告组、广告及审核、关键词和出价、否定关键词和共享列表、附加链接、补充信息、图片、名片、出价调整、再营销、受众和动态目标、信息流、展示时间表、统计数据、搜索查询、余额和参考资料。
- 金额均以卢布计,输入和输出皆如此;服务器会自行将金额转换为 API 使用的微单位。支持代理模式(
Client-Login)。 - ID 使用字符串(
"1915016273214320641"):Yandex.Direct 的 64 位标识符无法用 JavaScript 数值准确表示,精度会在不提示的情况下丢失。 - 广告会实际投放。 Yandex.Direct 已不再提供测试环境;哪些工具会花费资金、哪些操作会不可逆地删除数据,请参阅会更改数据的操作。
- 没有遥测。 除了向 Yandex API 发送请求,服务器不会向任何地方发送任何内容。
目录
- 可以做什么 — 使用普通文本发送请求的示例
- 安装 — Claude Code、Claude Desktop、Cursor,以及从源代码安装
- 令牌 — 如何获取及所需的环境变量
- 会更改数据的操作 — 哪些操作会花费预算,哪些操作不可逆
- 工具 — 完整列表及说明
- 开发 — 构建、测试、架构
可以做什么
在聊天中使用普通文本即可,服务器会自行选择工具:
Собери кампанию «Летняя распродажа»: бюджет 5000 ₽/день, старт 1 мая, показы будни 9–21
Добавь минус-фразы «бесплатно» и «скачать» в кампанию 12345, не затерев остальные
Посмотри поисковые запросы за месяц и предложи, что заминусовать
Подними ставку до 25 ₽ там, где CTR выше 8%, а показов меньше сотни
Что изменилось в кампаниях со вчера?
Покажи расход по кампаниям за неделю и баланс аккаунта
Найди код региона для Новосибирска
完整列表请参阅工具。
安装
需要 Node.js 22 或更高版本,以及 Yandex.Direct OAuth 令牌(获取方式)。无需单独安装服务器:客户端会通过 npx 自行启动软件包,并通过 stdio 与其通信。
Claude Code
claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y yandex-direct-mcp-plus
Claude Desktop、Cursor 和其他客户端
在客户端的 MCP 服务配置文件(claude_desktop_config.json、.cursor/mcp.json 等)中添加一条配置:
{
"mcpServers": {
"yandex-direct": {
"command": "npx",
"args": ["-y", "yandex-direct-mcp-plus"],
"env": { "YANDEX_DIRECT_TOKEN": "ваш_токен" }
}
}
}
代理令牌还需要在 env 中设置 YANDEX_DIRECT_LOGIN,详见令牌。
从源代码安装
git clone [email protected]:Pavelsiba/yandex-direct-mcp-plus.git
cd yandex-direct-mcp-plus
npm ci
npm run build
此时,客户端配置中的 npx 应替换为 "command": "node",args 中填写 dist/app/index.js 的绝对路径。
远程服务
也可以在自己的机器上通过 HTTP 运行同一服务器,例如在 Docker 中,或通过启用 HTTPS 的 nginx;然后使用 claude.ai 中的地址、手机或 Claude Desktop 连接,无需安装 Node。访问需要密钥。配置方法见 docs/deploy.md。
令牌
OAuth 令牌需要通过在 Yandex OAuth 注册的应用申请,并授予 Yandex.Direct API 访问权限。详情请参阅注册应用并获取令牌。还需要在 Yandex.Direct 界面中申请 API 访问权限;申请审核需要 1 小时到数天不等。
服务器只从客户端传递的进程环境中读取配置:
YANDEX_DIRECT_TOKEN— OAuth 令牌。未设置时,服务器仍会启动,但任何工具调用都会返回错误。YANDEX_DIRECT_LOGIN— 广告主登录名,会放入Client-Login标头。仅代理令牌需要此项:未设置时,请求会发往代理公司的自有账户,而不是客户账户。
Что меняет данные
Тестовой среды у Яндекс.Директа больше нет: песочница отключена с июля 2026, и любой вызов идёт по боевому аккаунту. Отлаживать сценарии приходится на отдельной кампании, оставленной черновиком, — показов она не даёт и потому не тратит бюджет, пока не пройдёт модерацию и не будет включена.
Граница проходит не по «чтение или запись», а по скорости, с которой действие превращается в деньги.
Только читают все list_*, get_* и справочники. Вызвать их безопасно всегда.
Тратят бюджет или запускают показы:
| Инструмент | Чем именно |
|---|---|
manage_campaigns | resume — включает показы остановленной кампании |
manage_ads | resume и moderate — возвращает объявления в показ |
moderate_ads | Отправляет объявления на модерацию, после неё начнутся показы |
update_campaign | Меняет дневной бюджет |
set_keyword_bids | Меняет ставки, то есть цену клика |
set_auto_keyword_bids | Пересчитывает ставки под цену нужного объёма трафика — до потолка, если он задан |
set_strategy | Меняет стратегию — переписывает всю экономику кампании |
add_bid_adjustments | Заводит корректировку: +N% к ставке на срезе аудитории |
set_bid_adjustments | Меняет коэффициент существующей корректировки |
Удаляют необратимо — эти инструменты помечены аннотацией DESTRUCTIVE, и хороший MCP-клиент спросит подтверждение перед вызовом:
manage_campaigns (delete), manage_ads (delete), manage_keywords (delete), delete_ad_groups, delete_ad_extensions, delete_sitelinks, delete_vcards, delete_bid_adjustments, delete_retargeting_lists, manage_ad_images (delete), manage_dynamic_targets (delete), set_audience_targets (delete), manage_negative_keyword_shared_sets (delete).
Сюда же — set_campaign_negative_keywords и set_ad_group_negative_keywords в режиме replace: он затирает прежний список минус-фраз целиком. Именно поэтому у них нет режима по умолчанию — mode приходится назвать явно. Так же устроен set_priority_goals: replace и remove убирают цели стратегии, а любая смена целей перезапускает её обучение.
Остальные инструменты создают и правят объекты. Пока кампания не прошла модерацию и не включена, показов по ней нет и бюджет не расходуется.
Чего API не умеет. Смарт-баннеры и динамические объявления Директ через API не создаёт с 22 мая 2026, визитки — тоже: в WSDL методы есть, боевой API отвечает ошибкой 3500. Такие объекты заводятся в интерфейсе Директа, а дальше сервер с ними работает: кампании читает и правит, визитки читает и удаляет. Единую перфоманс-кампанию сервер пока только читает.
Инструменты
В таблицах — первое предложение описания, которое сервер отдаёт модели; таблицы собираются из кода, поэтому список всегда полный.
Кампании и стратегии
| Инструмент | Описание |
|---|---|
list_campaigns | Список рекламных кампаний Яндекс.Директ с фильтрацией по статусу и типу. |
get_campaign | Детальная информация о кампании по ID: бюджет (руб), статус и пояснение к нему, даты, статистика, UTM-разметка, цели и их ценность (PriorityGoals), счётчики Метрики, модель атрибуции и прочие настройки. |
create_campaign | Создать новую текстово-графическую кампанию. |
update_campaign | Обновить кампанию: название, бюджет (руб), UTM-разметку и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE). |
manage_campaigns | Запустить, остановить, архивировать, разархивировать или удалить кампании. |
get_strategy | Получить текущую стратегию показов текстово-графической кампании вместе с целями (PriorityGoals), счётчиками и моделью атрибуции. |
set_strategy | Изменить стратегию текстово-графической кампании: ручная, максимум кликов, средняя цена клика или конверсии, оплата за конверсию. |
set_priority_goals | Задать цели стратегии кампании (PriorityGoals) и их ценность в рублях — по ним автостратегия оптимизирует ставки, в том числе «максимум конверсий» со служебным GoalId 13. |
get_time_targeting | Временной таргетинг кампании: часовой пояс, часы показов по дням недели, почасовые коэффициенты и настройка праздников. |
set_time_targeting | Задать расписание показов кампании: дни, часы, почасовые коэффициенты, праздники и часовой пояс. |
Группы объявлений
| Инструмент | Описание |
|---|---|
list_ad_groups | Группы объявлений выбранных кампаний: названия, регионы, статусы. |
create_ad_group | Создать группу объявлений в кампании с таргетингом по регионам (см. get_regions). |
delete_ad_groups | Удалить группы объявлений по их ID. |
Объявления
| Инструмент | Описание |
|---|---|
list_ads | Объявления: заголовки, тексты, ссылки, статусы, тип и подтип объявления, привязанные сайтлинки, визитка и изображение. |
create_text_ad | Создать текстовое объявление: заголовок (≤56), второй заголовок (≤30), текст (≤81), ссылка. |
update_text_ad | Обновить текстовое объявление: заголовок, текст, ссылка. |
manage_ads | Действие над объявлениями: suspend/resume/archive/unarchive/moderate/delete. |
moderate_ads | Отправить выбранные объявления на модерацию. |
Ключевые фразы и ставки
| Инструмент | Описание |
|---|---|
list_keywords | Ключевые фразы в группах объявлений: фразы, ставки (руб), статусы. |
add_keywords | Добавить ключевые фразы в группу объявлений. |
update_keywords | Изменить текст ключевых фраз, подстановочные переменные {param1}/{param2} и настройки автотаргетинга. |
manage_keywords | Действие над ключевыми фразами: suspend/resume/delete. |
set_keyword_bids | Установить фиксированные ставки (поиск/сети, в рублях) на уровне фраз, групп или кампаний и включить или выключить автоставку автотаргетинга. |
set_auto_keyword_bids | Назначить ставки по правилу вместо суммы: на поиске — под желаемый объём трафика (5–100%), в сетях — под долю аудитории, с надбавкой в процентах и потолком в рублях. |
get_keyword_auction | Сколько стоит трафик по фразам: текущие ставки и торги на поиске и в сетях. |
Минус-фразы
| Инструмент | Описание |
|---|---|
get_campaign_negative_keywords | Получить текущие минус-фразы кампаний по их ID. |
set_campaign_negative_keywords | Минус-фразы на уровне кампании. |
set_ad_group_negative_keywords | Минус-фразы на уровне группы объявлений. |
list_negative_keyword_shared_sets | Получить общие наборы минус-фраз аккаунта. |
manage_negative_keyword_shared_sets | Создать, изменить или удалить общие наборы минус-фраз аккаунта. |
link_negative_keyword_sets | Заменить привязки общих наборов минус-фраз у кампаний и/или групп объявлений. |
Ассеты объявления
| Инструмент | Описание |
|---|---|
list_sitelinks | Получить все или выбранные наборы быстрых ссылок. |
set_sitelinks | Создать новый набор из 1–8 быстрых ссылок. |
delete_sitelinks | Удалить наборы быстрых ссылок по ID. |
list_ad_extensions | Получить уточнения (callouts) с их статусами и текстом. |
add_ad_extensions | Создать уточнения (callouts), каждый текст до 25 символов. |
delete_ad_extensions | Удалить уточнения по ID. |
manage_ad_images | Загрузить, получить или удалить изображения объявлений (AdImages). |
list_vcards | Получить виртуальные визитки по ID или найти их через объявления выбранных кампаний. |
delete_vcards | Удалить визитки по ID; удаление необратимо. |
Таргетинг и корректировки
| Инструмент | Описание |
|---|---|
list_audience_targets | Получить условия нацеливания на аудиторию по ID кампании, группы, ретаргетинга или интереса. |
set_audience_targets | Добавить, остановить, возобновить, удалить аудиторные цели или изменить их ставки. |
list_dynamic_targets | Получить условия нацеливания динамических текстовых объявлений. |
manage_dynamic_targets | Создать, изменить ставки, остановить, возобновить или удалить динамические цели. |
list_retargeting_lists | Получить условия ретаргетинга и подбора аудитории с правилами и областью применения. |
add_retargeting_list | Создать условие ретаргетинга из целей Метрики, сегментов или интересов. |
update_retargeting_lists | Изменить название, описание и правила условий ретаргетинга. |
delete_retargeting_lists | Удалить условия ретаргетинга и подбора аудитории по ID; удаление необратимо. |
get_bid_adjustments | Получить корректировки ставок кампании или группы: устройства, пол и возраст, аудитории, регионы, платёжеспособность, размещение. |
add_bid_adjustments | Создать корректировки ставок на кампаниях или группах. |
set_bid_adjustments | Изменить коэффициенты существующих корректировок по их ID. |
delete_bid_adjustments | Удалить корректировки по их ID. |
Отчёты
| Инструмент | Описание |
|---|---|
get_statistics | Статистика за период по кампаниям, группам, объявлениям, условиям показа или аккаунту: показы, клики, расход (руб), CTR, CPC (ReportService, TSV). |
get_search_queries | Отчёт по фактическим поисковым запросам для анализа и добавления минус-фраз. |
Аккаунт и справочники
| Инструмент | Описание |
|---|---|
get_account_balance | Баланс и финансовая информация аккаунта (Amount, Currency) через Live API v4. |
list_businesses | Получить доступные профили организаций из Яндекс Бизнеса. |
get_changes | Проверить изменения кампаний, групп и объявлений начиная с указанного времени, а также изменения справочников (mode=dictionaries) и текущее время сервера Директа. |
list_feeds | Получить товарные фиды, их источники, статусы обработки и связанные кампании. |
get_regions | Справочник кодов регионов (GeoRegions) для таргетинга. |
list_time_zones | Справочник часовых поясов (TimeZones) для set_time_targeting и create_campaign. |
Разработка
npm ci # зависимости строго по lock-файлу
npm run dev # сервер из исходников, без сборки
npm run build # dist/ — то, что запускает MCP-клиент
npm test # юнит-тесты, сеть подменена
npm run lint # Biome: формат и линт
npm run typecheck # типы в src, тестах и конфигах
npm run lint:dead # knip: неиспользуемый код и зависимости
npm run lint:workflows # actionlint + zizmor: корректность и безопасность workflow
npm run lint:secrets # gitleaks по всей истории
npm run docs:tools # таблицы инструментов в README из реестра
gitleaks, actionlint, zizmor и shellcheck — не npm-пакеты; без них хуки pre-commit не пропустят коммит. На Windows:
winget install -e --id Gitleaks.Gitleaks
winget install -e --id rhysd.actionlint
winget install -e --id zizmor.zizmor
winget install -e --id koalaman.shellcheck
Без режима разработчика winget не создаёт ссылки в %LOCALAPPDATA%\Microsoft\WinGet\Links,
и каталоги пакетов из %LOCALAPPDATA%\Microsoft\WinGet\Packages придётся добавить в PATH.
Таблицы инструментов выше руками не правятся: после смены описания инструмента — npm run docs:tools, иначе юнит-тест покажет расхождение.
Сетевые тесты (npm run test:int) идут по боевому аккаунту и пишут только в кампанию-полигон, оставленную черновиком: её ID задаётся переменной YANDEX_DIRECT_POLYGON_CAMPAIGN_ID. Без переменной они пропускаются.
Код разложен по слоям app → tools → shared; инструмент — это каталог
src/tools/<домен>/ с schema.ts, handler.ts и tool.ts. Подробности —
в docs/architecture.md.
Происхождение и благодарности
Проект начат на коде theYahia/yandex-direct-mcp под лицензией MIT. Расширение с 20 до 48 инструментов и перевод ID на строки — работа Maxim (DrSeedon), PR #7; в npm эта версия не публиковалась. Дальше проект развивается самостоятельно и апстрим не отслеживает.
История изменений с отделения от апстрима — в CHANGELOG.md.
Лицензия
Copyright © 2026 Pavelsiba. GNU AGPL-3.0-only.
Пользоваться сервером, изменять его и разворачивать у себя можно свободно, в том числе в работе с клиентами. Кто предоставляет изменённый сервер другим людям по сети, обязан дать им исходный код своей версии (раздел 13 лицензии).
Версии до 1.7.0 включительно вышли под MIT и под ней остаются.
Pull request'ы принимаются вместе с передачей прав на вклад автору проекта (CLA) — без этого проект не сможет распоряжаться своим кодом. Перед большой правкой лучше завести issue.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。