yandex-direct-mcp-plus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YANDEX_DIRECT_LOGIN | No | Логин клиента для агентских токенов (заголовок Client-Login). Обязателен, если токен агентский | |
| YANDEX_DIRECT_TOKEN | Yes | OAuth-токен Яндекс.Директ |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_campaignsA | Список рекламных кампаний Яндекс.Директ с фильтрацией по статусу и типу. Бюджеты — в рублях. По умолчанию возвращается узкий набор полей; нужны другие (Funds, TimeZone, NegativeKeywords и прочие из CampaignFieldEnum) — перечислите их в fields. Кампаний «Баннер на поиске» (MCBANNER) API не отдаёт вовсе: их нет в списке, и это граница API, а не ошибка логина или фильтра — такие кампании видны только в веб-интерфейсе. |
| get_campaignA | Детальная информация о кампании по ID: бюджет (руб), статус и пояснение к нему, даты, статистика, UTM-разметка, цели и их ценность (PriorityGoals), счётчики Метрики, модель атрибуции и прочие настройки. Реальные ID целей — PriorityGoals.Items[].GoalId; GoalId 13 в стратегии — служебное «ключевые цели», то есть оптимизация по этим PriorityGoals. Пустой ответ по ID из веб-интерфейса не значит, что номер неверный: кампании «Баннер на поиске» (MCBANNER) API не отдаёт, по ID они приходят пустыми. |
| create_campaignA | Создать новую рекламную кампанию. Бюджет в рублях. ⚠️ Тестовой среды у Директа нет: кампания создаётся в боевом аккаунте. Деньги она начнёт тратить после модерации и включения, поэтому созданную для проверки оставляйте черновиком. |
| update_campaignA | Обновить кампанию: название, бюджет (руб), UTM-разметку и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE). Разметка действует на ссылки всех объявлений кампании. |
| manage_campaignsA | Запустить, остановить, архивировать, разархивировать или удалить кампании. ⚠️ delete необратимо и недоступен кампании с накопленной статистикой — такую только архивировать. |
| get_strategyA | Получить текущую стратегию показов текстово-графической кампании вместе с целями (PriorityGoals), счётчиками и моделью атрибуции. Реальные ID целей Метрики, по которым работает кампания, — TextCampaign.PriorityGoals.Items[].GoalId (рядом их ценность Value в рублях), счётчики — CounterIds. GoalId внутри BiddingStrategy бывает служебным: 13 — «оптимизировать по ключевым целям», то есть по тем же PriorityGoals; 12 — «Вовлечённые сессии». Названий целей API Директа не отдаёт — они есть только в Метрике. |
| set_strategyB | Изменить стратегию текстово-графической кампании: ручная, максимум кликов, средняя цена клика или конверсии, оплата за конверсию. Цены — в рублях, цель Метрики — goal_id. |
| set_priority_goalsA | Задать цели стратегии кампании (PriorityGoals) и их ценность в рублях — по ним автостратегия оптимизирует ставки, в том числе «максимум конверсий» со служебным GoalId 13. Режим mode обязателен: add добавляет цели или меняет ценность уже заданных, remove убирает названные, replace заменяет список целиком (пустой массив очищает). Текущий список сервер читает сам. Чтобы добавить цель к существующим, нужен add: replace с одной целью сотрёт остальные. ⚠️ Смена целей перезапускает обучение стратегии. Поддерживаются текстово-графические, динамические, смарт и единые перфоманс-кампании; ID целей — из Метрики. |
| get_time_targetingB | Временной таргетинг кампании: часовой пояс, часы показов по дням недели, почасовые коэффициенты и настройка праздников. |
| set_time_targetingA | Задать расписание показов кампании: дни, часы, почасовые коэффициенты, праздники и часовой пояс. ⚠️ Расписание заменяется целиком: часы вне переданных правил показов не получат. |
| list_ad_groupsB | Группы объявлений выбранных кампаний: названия, регионы, статусы. |
| create_ad_groupB | Создать группу объявлений в кампании с таргетингом по регионам (см. get_regions). |
| delete_ad_groupsA | Удалить группы объявлений по их ID. ⚠️ Необратимо. |
| list_adsA | Объявления в группах: заголовки, тексты, ссылки, статусы, тип и подтип объявления, привязанные сайтлинки, визитка и изображение. Причина отказа модерации приходит в StatusClarification. Отбор только по группам — по ID объявления не ищет. Архивные приходят наравне с активными. Список может быть неполным: объявления, тексты которых генерирует нейросеть Яндекса, через API недоступны и в выдачу не попадают, а по ответу это никак не видно. Поэтому «в группе только эти объявления» из ответа не следует — ни из пустого, ни из непустого; для полноты картины сверяйтесь с интерфейсом Директа. |
| create_text_adC | Создать текстовое объявление: заголовок (≤56), второй заголовок (≤30), текст (≤81), ссылка. |
| update_text_adA | Обновить текстовое объявление: заголовок, текст, ссылка. Изменённое объявление уходит на модерацию. |
| manage_adsA | Действие над объявлениями: suspend/resume/archive/unarchive/moderate/delete. ⚠️ delete необратимо. |
| moderate_adsC | Отправить выбранные объявления на модерацию. |
| list_keywordsB | Ключевые фразы в группах объявлений: фразы, ставки (руб), статусы. По умолчанию возвращается узкий набор полей; нужны другие (StatisticsSearch, StatisticsNetwork, Productivity, ServingStatus и прочие из KeywordFieldEnum) — перечислите их в fields. |
| add_keywordsC | Добавить ключевые фразы в группу объявлений. |
| update_keywordsA | Изменить текст ключевых фраз и подстановочные переменные {param1}/{param2}. Правка текста может привести к появлению фразы с новым ID или к её удалению как дубликата — сверьтесь с list_keywords после вызова. Ставки меняет set_keyword_bids, статус — manage_keywords. |
| manage_keywordsB | Действие над ключевыми фразами: suspend/resume/delete. ⚠️ delete необратимо. |
| set_keyword_bidsA | Установить ставки (поиск/сети, в рублях) на уровне фраз, групп или кампаний (сервис Bids). Работает только при ручном управлении ставками: на автостратегии Директ назначает ставки сам, вызов пройдёт без ошибки, но на показы не повлияет. Сначала get_strategy, затем get_keyword_auction — сколько стоит нужная позиция. |
| get_keyword_auctionA | Сколько стоит показ: ставки и списываемые цены по позициям, ставки конкурентов, минимальная цена входа. Всё в рублях. Позиции — P11–P14 (спецразмещение над выдачей) и P21–P24 (гарантия под выдачей); у каждой Bid — сколько надо поставить, Price — сколько спишется на деле. Отбор по одному уровню: фразы, группы или кампании. Цену аукциона показывает для любой кампании, но ставкой она управляется только при ручном управлении: на автостратегии (любая WB_*, AVERAGE_CPA, AVERAGE_CPC и прочие) ставки назначает Директ, и set_keyword_bids там ничего не даст. Стратегию кампании проверяйте через get_strategy. |
| get_campaign_negative_keywordsC | Получить текущие минус-фразы кампаний по их ID. |
| set_campaign_negative_keywordsA | Минус-фразы на уровне кампании. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные. |
| set_ad_group_negative_keywordsA | Минус-фразы на уровне группы объявлений. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные. |
| list_negative_keyword_shared_setsC | Получить общие наборы минус-фраз аккаунта. |
| manage_negative_keyword_shared_setsC | Создать, изменить или удалить общие наборы минус-фраз аккаунта. |
| link_negative_keyword_setsA | Заменить привязки общих наборов минус-фраз у кампаний и/или групп объявлений. Привязка к кампании действует на все её группы. Пустой set_ids очищает привязки. |
| list_sitelinksC | Получить все или выбранные наборы быстрых ссылок. |
| set_sitelinksA | Создать новый набор из 1–8 быстрых ссылок. Возвращает ID набора для привязки к объявлению. |
| delete_sitelinksA | Удалить наборы быстрых ссылок по ID. Набор, привязанный к объявлению, Директ удалить не даст. |
| list_ad_extensionsB | Получить уточнения (callouts) с их статусами и текстом. |
| add_ad_extensionsC | Создать уточнения (callouts), каждый текст до 25 символов. |
| delete_ad_extensionsA | Удалить уточнения по ID. ⚠️ Необратимо. |
| manage_ad_imagesB | Загрузить, получить или удалить изображения объявлений (AdImages). Для add данные передаются в base64. |
| list_vcardsA | Получить виртуальные визитки по ID или найти их через объявления выбранных кампаний. |
| add_vcardC | Создать виртуальную визитку для кампании. |
| delete_vcardsA | Удалить визитки по ID; удаление необратимо. Отказ по отдельной визитке приходит в ответе списком, а не ошибкой вызова. |
| list_audience_targetsB | Получить условия нацеливания на аудиторию по ID кампании, группы, ретаргетинга или интереса. |
| set_audience_targetsB | Добавить, остановить, возобновить, удалить аудиторные цели или изменить их ставки. |
| list_dynamic_targetsC | Получить условия нацеливания динамических текстовых объявлений. |
| manage_dynamic_targetsB | Создать, изменить ставки, остановить, возобновить или удалить динамические цели. |
| list_retargeting_listsC | Получить условия ретаргетинга и подбора аудитории с правилами и областью применения. |
| add_retargeting_listB | Создать условие ретаргетинга из целей Метрики, сегментов или интересов. |
| update_retargeting_listsA | Изменить название, описание и правила условий ретаргетинга. Переданные правила заменяют прежние целиком: сначала прочитайте условие через list_retargeting_lists. |
| delete_retargeting_listsA | Удалить условия ретаргетинга и подбора аудитории по ID; удаление необратимо. Отказ по отдельному условию приходит в ответе списком, а не ошибкой вызова. |
| get_bid_adjustmentsB | Получить корректировки ставок кампании или группы: устройства, пол и возраст, аудитории, регионы, платёжеспособность, размещение. |
| add_bid_adjustmentsB | Создать корректировки ставок на кампаниях или группах. Коэффициент — проценты от ставки: 100 ничего не меняет, 0 отключает показы среза. |
| set_bid_adjustmentsA | Изменить коэффициенты существующих корректировок по их ID. |
| delete_bid_adjustmentsA | Удалить корректировки по их ID. Ставка среза возвращается к базовой; отменить удаление нельзя. |
| get_statisticsB | Статистика кампаний за период: показы, клики, расход (руб), CTR, CPC (ReportService, TSV). |
| get_search_queriesA | Отчёт по фактическим поисковым запросам для анализа и добавления минус-фраз. |
| get_account_balanceB | Баланс и финансовая информация аккаунта (Amount, Currency) через Live API v4. |
| list_businessesB | Получить доступные профили организаций из Яндекс Бизнеса. |
| get_changesB | Проверить изменения кампаний, групп и объявлений начиная с указанного времени, а также изменения справочников (mode=dictionaries) и текущее время сервера Директа. |
| list_feedsB | Получить товарные фиды, их источники, статусы обработки и связанные кампании. |
| get_regionsA | Справочник кодов регионов (GeoRegions) для таргетинга. Фильтр по названию, 225 = Россия. with_parents=true показывает вложенность и различает одноимённые города. |
| list_time_zonesB | Справочник часовых поясов (TimeZones) для set_time_targeting и create_campaign. Фильтр по коду или названию. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 60 tools
Multiple tools have unclear boundaries because generic 'manage_' actions overlap with dedicated tools: manage_campaigns duplicates status/archive operations in update_campaign, manage_ads includes 'moderate' while moderate_ads also exists, and manage_keywords overlaps with update_keywords and set_keyword_bids. Broad action-bundling tools like set_audience_targets and manage_dynamic_targets further blur the line between adding, updating, and removing entities.
All names use snake_case, but verb conventions are mixed for the same operations: creation is expressed as create_campaign, add_keywords, set_sitelinks, and add_vcard, while mutation is split between manage_*, update_*, set_*, and delete_*. The generic 'manage_' prefix also obscures what each tool actually does, making the pattern less predictable than it appears.
With 60 tools, the set is far beyond a well-scoped surface and lands in the '50+' extreme-mismatch range. The large count is inflated by many granular read/write tools that could be consolidated or grouped by resource, making the server unwieldy for an agent to navigate.
Core Yandex Direct lifecycle operations for campaigns, ads, keywords, bids, negative keywords, retargeting, bid adjustments, and reporting are covered. However, notable gaps exist: there is no get_ad_group or update_ad_group, no get_ad_group_negative_keywords despite a setter, and no explicit tool for binding sitelinks/callouts to ads despite creation endpoints.