mcpField
Я
Яндекс.Директ

Яндекс.Директ

本地服务
github.com/Pavelsiba商业与营销12 周前更新

关于 Яндекс.Директ

Яндекс.Директ 是面向广告运营者的 MCP 服务,可在对话中管理 Яндекс.Директ v5 广告并查看统计数据。它提供读写工具,明确区分可能消耗预算或不可逆删除的操作,并支持代理商模式。

主要功能

  1. 01管理广告系列、广告组和广告
  2. 02维护关键词、出价与否定关键词
  3. 03查看统计、搜索词和账户余额
  4. 04按卢布处理金额与字符串 ID
  5. 05区分预算变更和不可逆删除操作

适用场景

  1. 01通过对话创建和调整广告系列
  2. 02分析搜索词并整理否定关键词
  3. 03查看广告支出和账户余额

MCP 相关

该服务器通过 stdio 向 MCP 客户端提供 Яндекс.Директ API v5 工具,并可配置为 HTTP 远程服务。客户端启动服务器时传入 OAuth 令牌等环境变量。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pavelsiba-yandex-direct-mcp-plus": {
"command": "npx",
"args": [
"-y",
"yandex-direct-mcp-plus"
],
"env": {
"YANDEX_DIRECT_TOKEN": "<YANDEX_DIRECT_TOKEN>",
"YANDEX_DIRECT_LOGIN": "<YANDEX_DIRECT_LOGIN>"
}
}
}
}
启动命令npx -y yandex-direct-mcp-plus
需要配置的环境变量
YANDEX_DIRECT_TOKEN密钥OAuth-токен Яндекс.Директа
YANDEX_DIRECT_LOGINЛогин клиента (Client-Login), нужен для агентского токена

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmyandex-direct-mcp-plus1.8.0

工具

59

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否返回的对象数(最多 10000 个)
typesarray否按广告系列类型筛选
fieldsarray否要返回的字段;默认值为 Id、Name、Status、StatusClarification、State、DailyBudget、StartDate、Type、Statistics
offsetinteger否结果偏移量:此处传入上一页的 LimitedBy
statusenum否按广告系列审核状态筛选ACCEPTED | DRAFT | MODERATION | REJECTED

详细介绍

yandex-direct-mcp-plus

通过与助手对话管理 Yandex.Direct 上下文广告:创建广告系列、分析搜索查询、清理否定关键词、调整出价并查看花费,无需在账户的各个版块之间切换。可在任何 MCP 客户端中使用:Claude Code、Claude Desktop、Cursor 等。

npm License: AGPL v3 Node

  • 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_campaignsresume — включает показы остановленной кампании
manage_adsresume и 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.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。