# Яндекс.Директ (npm · yandex-direct-mcp-plus)

API Яндекс.Директа v5: кампании, объявления, фразы, ставки, минус-фразы, статистика

- Trust score: 84/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- npm · `yandex-direct-mcp-plus`: 84/100 (this document), [markdown](https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus.md), [page](https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus)

## Channel facts

- Registry: `npm`
- Package: `yandex-direct-mcp-plus`
- Version: `1.6.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 32 of 97 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Pavelsiba/yandex-direct-mcp-plus).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 72/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8455 tokens (~140/item across 60 items; 60 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 60 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Яндекс.Директ MCP server?

Яндекс.Директ runs locally as an npm package, launched with npx -y yandex-direct-mcp-plus. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pavelsiba-yandex-direct-mcp-plus -- npx -y yandex-direct-mcp-plus
```

### Cursor

```json
{
  "mcpServers": {
    "pavelsiba-yandex-direct-mcp-plus": {
      "command": "npx",
      "args": [
        "-y",
        "yandex-direct-mcp-plus"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pavelsiba-yandex-direct-mcp-plus": {
      "command": "npx",
      "args": [
        "-y",
        "yandex-direct-mcp-plus"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pavelsiba-yandex-direct-mcp-plus -- npx -y yandex-direct-mcp-plus
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pavelsiba-yandex-direct-mcp-plus": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "yandex-direct-mcp-plus"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pavelsiba-yandex-direct-mcp-plus --command npx --arg -y --arg yandex-direct-mcp-plus
```

### Hermes

```yaml
mcp_servers:
  pavelsiba-yandex-direct-mcp-plus:
    command: "npx"
    args: ["-y", "yandex-direct-mcp-plus"]
```

### Netclaw

```json
{
  "McpServers": {
    "pavelsiba-yandex-direct-mcp-plus": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "yandex-direct-mcp-plus"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pavelsiba-yandex-direct-mcp-plus -t stdio -c npx -a -y yandex-direct-mcp-plus
```

### Other

```json
{
  "mcpServers": {
    "pavelsiba-yandex-direct-mcp-plus": {
      "command": "npx",
      "args": [
        "-y",
        "yandex-direct-mcp-plus"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 84, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-09-14 (score 80, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-13 (score 65)

First indexed and scored.

## MCP tools (60)

### `list_campaigns` (~243 tokens)

Список кампаний

Список рекламных кампаний Яндекс.Директ с фильтрацией по статусу и типу. Бюджеты — в рублях. По умолчанию возвращается узкий набор полей; нужны другие (Funds, TimeZone, NegativeKeywords и прочие из CampaignFieldEnum) — перечислите их в fields. Кампаний «Баннер на поиске» (MCBANNER) API не отдаёт вовсе: их нет в списке, и это граница API, а не ошибка логина или фильтра — такие кампании видны только в веб-интерфейсе.

Input parameters:

- `fields` (array): Какие поля вернуть; по умолчанию Id, Name, Status, StatusClarification, State, DailyBudget, StartDate, Type, Statistics
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `status` (string): Фильтр по статусу модерации кампании
- `types` (array): Фильтр по типам кампаний

### `get_campaign` (~168 tokens)

Кампания по ID

Детальная информация о кампании по ID: бюджет (руб), статус и пояснение к нему, даты, статистика, UTM-разметка, цели и их ценность (PriorityGoals), счётчики Метрики, модель атрибуции и прочие настройки. Реальные ID целей — PriorityGoals.Items[].GoalId; GoalId 13 в стратегии — служебное «ключевые цели», то есть оптимизация по этим PriorityGoals. Пустой ответ по ID из веб-интерфейса не значит, что номер неверный: кампании «Баннер на поиске» (MCBANNER) API не отдаёт, по ID они приходят пустыми.

Input parameters:

- `campaign_id` (string, required): ID рекламной кампании, десятичная строка

### `create_campaign` (~319 tokens)

Создать кампанию

Создать новую рекламную кампанию. Бюджет в рублях. ⚠️ Тестовой среды у Директа нет: кампания создаётся в боевом аккаунте. Деньги она начнёт тратить после модерации и включения, поэтому созданную для проверки оставляйте черновиком.

Input parameters:

- `daily_budget` (number): Дневной бюджет в рублях, например 1000 — это 1000 ₽
- `name` (string, required): Название кампании
- `network_strategy` (string): Стратегия показов в сетях (РСЯ); SERVING_OFF отключает показы в сетях
- `search_strategy` (string): Стратегия показов на поиске; SERVING_OFF отключает показы на поиске
- `start_date` (string, required): Дата начала показов, YYYY-MM-DD
- `time_zone` (string): Часовой пояс показов, например Europe/Moscow (по умолчанию). Список — в справочнике list_time_zones; на даты отчётов не влияет, они всегда по Москве
- `tracking_params`: UTM-разметка, дописывается к ссылкам всех объявлений кампании. Без ведущего «?»: utm_source=yandex&utm_campaign={campaign_id}. Допустимы подстановки Директа в фигурных скобках. null снимает разметку
- `type` (string): Тип кампании: текстово-графическая или динамические объявления

### `update_campaign` (~195 tokens)

Обновить кампанию

Обновить кампанию: название, бюджет (руб), UTM-разметку и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE). Разметка действует на ссылки всех объявлений кампании.

Input parameters:

- `campaign_id` (string, required): ID кампании, десятичная строка
- `daily_budget` (number): Новый дневной бюджет в рублях
- `name` (string): Новое название
- `status` (string): Действие со статусом показов: SUSPEND (остановить), RESUME, ARCHIVE, UNARCHIVE
- `tracking_params`: UTM-разметка, дописывается к ссылкам всех объявлений кампании. Без ведущего «?»: utm_source=yandex&utm_campaign={campaign_id}. Допустимы подстановки Директа в фигурных скобках. null снимает разметку

### `manage_campaigns` (~94 tokens)

Управление кампаниями

Запустить, остановить, архивировать, разархивировать или удалить кампании. ⚠️ delete необратимо и недоступен кампании с накопленной статистикой — такую только архивировать.

Input parameters:

- `action` (string, required): Действие: suspend, resume, archive, unarchive или delete (необратимо)
- `campaign_ids` (array, required): ID кампаний, над которыми выполняется действие

### `get_strategy` (~166 tokens)

Стратегия кампании

Получить текущую стратегию показов текстово-графической кампании вместе с целями (PriorityGoals), счётчиками и моделью атрибуции. Реальные ID целей Метрики, по которым работает кампания, — TextCampaign.PriorityGoals.Items[].GoalId (рядом их ценность Value в рублях), счётчики — CounterIds. GoalId внутри BiddingStrategy бывает служебным: 13 — «оптимизировать по ключевым целям», то есть по тем же PriorityGoals; 12 — «Вовлечённые сессии». Названий целей API Директа не отдаёт — они есть только в Метрике.

Input parameters:

- `campaign_id` (string, required): ID текстово-графической кампании

### `set_strategy` (~501 tokens)

Изменить стратегию кампании

Изменить стратегию текстово-графической кампании: ручная, максимум кликов, средняя цена клика или конверсии, оплата за конверсию. Цены — в рублях, цель Метрики — goal_id.

Input parameters:

- `average_cpa` (number): Средняя цена конверсии в рублях; обязательна для AVERAGE_CPA
- `average_cpc` (number): Средняя цена клика в рублях; обязательна для AVERAGE_CPC
- `bid_ceiling` (number): Максимальная ставка в рублях для WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE и AVERAGE_CPA
- `campaign_id` (string, required): ID текстово-графической кампании
- `conversion_price` (number): Цена конверсии в рублях для PAY_FOR_CONVERSION: списывается за конверсию, а не за клик
- `goal_id` (string): ID цели Метрики для AVERAGE_CPA, PAY_FOR_CONVERSION и WB_MAXIMUM_CONVERSION_RATE; для оплаты за конверсию обязателен. Для WB_MAXIMUM_CONVERSION_RATE допустимо служебное 13 — оптимизация по ключевым ц…
- `network_limit_percent` (integer): Доля расходов в сетях для NETWORK_DEFAULT, проценты
- `network_type` (string, required): Стратегия в сетях: NETWORK_DEFAULT (по настройкам поиска), MAXIMUM_COVERAGE, WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE, AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION или SERVING_OFF
- `search_type` (string, required): Стратегия на поиске: HIGHEST_POSITION (ручная), WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE (максимум конверсий за недельный бюджет), AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION или SERVING_OFF
- `weekly_spend_limit` (number): Недельный бюджет в рублях; обязателен для WB_MAXIMUM_CLICKS и WB_MAXIMUM_CONVERSION_RATE, для остальных автостратегий необязателен

### `set_priority_goals` (~319 tokens)

Цели стратегии

Задать цели стратегии кампании (PriorityGoals) и их ценность в рублях — по ним автостратегия оптимизирует ставки, в том числе «максимум конверсий» со служебным GoalId 13. Режим mode обязателен: add добавляет цели или меняет ценность уже заданных, remove убирает названные, replace заменяет список целиком (пустой массив очищает). Текущий список сервер читает сам. Чтобы добавить цель к существующим, нужен add: replace с одной целью сотрёт остальные. ⚠️ Смена целей перезапускает обучение стратегии. Поддерживаются текстово-графические, динамические, смарт и единые перфоманс-кампании; ID целей — из Метрики.

Input parameters:

- `campaign_id` (string, required): ID кампании: текстово-графической, динамической, смарт или единой перфоманс-кампании
- `goals` (array, required): Цели: при mode=replace — полный новый список взамен прежнего (пустой массив очищает), при add — что добавить или чью ценность поменять, при remove — что убрать
- `mode` (string, required): Обязателен. replace — заменить список целиком (прежние цели теряются), add — добавить цели или поменять ценность уже заданных, remove — убрать перечисленные. Текущий список сервер читает сам, это доп…

### `get_time_targeting` (~60 tokens)

Расписание показов кампании

Временной таргетинг кампании: часовой пояс, часы показов по дням недели, почасовые коэффициенты и настройка праздников.

Input parameters:

- `campaign_id` (string, required): ID кампании, десятичная строка

### `set_time_targeting` (~342 tokens)

Задать расписание показов

Задать расписание показов кампании: дни, часы, почасовые коэффициенты, праздники и часовой пояс. ⚠️ Расписание заменяется целиком: часы вне переданных правил показов не получат.

Input parameters:

- `campaign_id` (string, required): ID кампании, десятичная строка
- `consider_working_weekends` (boolean): Показывать ли в рабочие выходные по расписанию переносимого буднего дня; false — по расписанию выходного
- `holiday_bid_percent` (integer): Коэффициент к ставке в праздники, % от текущей: 10–200 с шагом 10. Ноль запрещён — показы отключает suspend_on_holidays
- `holiday_end_hour` (integer): Час окончания показов в праздники, не включая его, 1–24
- `holiday_start_hour` (integer): Час начала показов в праздники включительно, 0–23
- `schedule` (array, required): Правила показов. Часы, не покрытые ни одним правилом, показов не получают — расписание задаётся целиком, а не дополняется. Правила применяются по порядку, последнее переопределяет предыдущие
- `suspend_on_holidays` (boolean): true — в праздники показов нет; false — идут по правилам holiday_*. Не задан — праздники отдельно не настраиваются
- `time_zone` (string): Часовой пояс кампании, например Europe/Moscow. Допустимые значения — в справочнике list_time_zones. Не задан — остаётся прежним

### `list_ad_groups` (~83 tokens)

Список групп

Группы объявлений выбранных кампаний: названия, регионы, статусы.

Input parameters:

- `campaign_ids` (array, required): Кампании, группы которых нужно выбрать
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `create_ad_group` (~126 tokens)

Создать группу

Создать группу объявлений в кампании с таргетингом по регионам (см. get_regions).

Input parameters:

- `campaign_id` (string, required): ID кампании, в которой создаётся группа
- `name` (string, required): Название группы
- `region_ids` (array, required): Регионы показа, коды из get_regions: ["225"] — Россия, ["225","-213"] — Россия кроме Москвы, ["0"] — все регионы. Минус-регионы нельзя сочетать с 0 и нельзя отправлять одни, без обычного региона

### `delete_ad_groups` (~48 tokens)

Удалить группы

Удалить группы объявлений по их ID. ⚠️ Необратимо.

Input parameters:

- `ad_group_ids` (array, required): Группы, которые будут удалены безвозвратно

### `list_ads` (~227 tokens)

Список объявлений

Объявления в группах: заголовки, тексты, ссылки, статусы, тип и подтип объявления, привязанные сайтлинки, визитка и изображение. Причина отказа модерации приходит в StatusClarification. Отбор только по группам — по ID объявления не ищет. Архивные приходят наравне с активными. Список может быть неполным: объявления, тексты которых генерирует нейросеть Яндекса, через API недоступны и в выдачу не попадают, а по ответу это никак не видно. Поэтому «в группе только эти объявления» из ответа не следует — ни из пустого, ни из непустого; для полноты картины сверяйтесь с интерфейсом Директа.

Input parameters:

- `ad_group_ids` (array, required): Группы, объявления которых нужно выбрать
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `create_text_ad` (~119 tokens)

Создать объявление

Создать текстовое объявление: заголовок (≤56), второй заголовок (≤30), текст (≤81), ссылка.

Input parameters:

- `ad_group_id` (string, required): ID группы, в которой создаётся объявление
- `href` (string, required): Ссылка на сайт
- `text` (string, required): Текст объявления, до 81 символов
- `title` (string, required): Заголовок объявления, до 56 символов
- `title2` (string): Второй заголовок, до 30 символов

### `update_text_ad` (~97 tokens)

Обновить объявление

Обновить текстовое объявление: заголовок, текст, ссылка. Изменённое объявление уходит на модерацию.

Input parameters:

- `ad_id` (string, required): ID обновляемого объявления
- `href` (string): Новая ссылка на сайт
- `text` (string): Новый текст объявления
- `title` (string): Новый заголовок
- `title2` (string): Новый второй заголовок

### `manage_ads` (~79 tokens)

Управление объявлениями

Действие над объявлениями: suspend/resume/archive/unarchive/moderate/delete. ⚠️ delete необратимо.

Input parameters:

- `action` (string, required): Действие: suspend, resume, archive, unarchive, moderate или delete (необратимо)
- `ad_ids` (array, required): Объявления, над которыми выполняется действие

### `moderate_ads` (~38 tokens)

Отправить объявления на модерацию

Отправить выбранные объявления на модерацию.

Input parameters:

- `ad_ids` (array, required): Объявления, отправляемые на модерацию

### `list_keywords` (~163 tokens)

Список ключевых слов

Ключевые фразы в группах объявлений: фразы, ставки (руб), статусы. По умолчанию возвращается узкий набор полей; нужны другие (StatisticsSearch, StatisticsNetwork, Productivity, ServingStatus и прочие из KeywordFieldEnum) — перечислите их в fields.

Input parameters:

- `ad_group_ids` (array, required): Группы, ключевые фразы которых нужно выбрать
- `fields` (array): Какие поля вернуть; по умолчанию Id, Keyword, CampaignId, AdGroupId, Status, State, Bid, ContextBid
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `add_keywords` (~64 tokens)

Добавить ключевые слова

Добавить ключевые фразы в группу объявлений.

Input parameters:

- `ad_group_id` (string, required): ID группы, в которую добавляются фразы
- `keywords` (array, required): Ключевые фразы; минус-слова внутри фразы записываются через дефис

### `update_keywords` (~102 tokens)

Изменить ключевые слова

Изменить текст ключевых фраз и подстановочные переменные {param1}/{param2}. Правка текста может привести к появлению фразы с новым ID или к её удалению как дубликата — сверьтесь с list_keywords после вызова. Ставки меняет set_keyword_bids, статус — manage_keywords.

Input parameters:

- `keywords` (array, required): Фразы и их новые значения; поля, которые не переданы, остаются прежними

### `manage_keywords` (~69 tokens)

Управление ключевыми словами

Действие над ключевыми фразами: suspend/resume/delete. ⚠️ delete необратимо.

Input parameters:

- `action` (string, required): Действие: suspend, resume или delete (необратимо)
- `keyword_ids` (array, required): Фразы, над которыми выполняется действие

### `set_keyword_bids` (~190 tokens)

Установить ставки

Установить ставки (поиск/сети, в рублях) на уровне фраз, групп или кампаний (сервис Bids). Работает только при ручном управлении ставками: на автостратегии Директ назначает ставки сам, вызов пройдёт без ошибки, но на показы не повлияет. Сначала get_strategy, затем get_keyword_auction — сколько стоит нужная позиция.

Input parameters:

- `ad_group_ids` (array): Ставки на все фразы указанных групп
- `bid` (number): Ставка на поиске в рублях
- `campaign_ids` (array): Ставки на все фразы указанных кампаний
- `context_bid` (number): Ставка в сетях (РСЯ) в рублях
- `keyword_ids` (array): Ставки на уровне фраз

### `get_keyword_auction` (~285 tokens)

Аукцион по фразам

Сколько стоит показ: ставки и списываемые цены по позициям, ставки конкурентов, минимальная цена входа. Всё в рублях. Позиции — P11–P14 (спецразмещение над выдачей) и P21–P24 (гарантия под выдачей); у каждой Bid — сколько надо поставить, Price — сколько спишется на деле. Отбор по одному уровню: фразы, группы или кампании. Цену аукциона показывает для любой кампании, но ставкой она управляется только при ручном управлении: на автостратегии (любая WB_*, AVERAGE_CPA, AVERAGE_CPC и прочие) ставки назначает Директ, и set_keyword_bids там ничего не даст. Стратегию кампании проверяйте через get_strategy.

Input parameters:

- `ad_group_ids` (array): Аукцион по всем фразам указанных групп
- `campaign_ids` (array): Аукцион по всем фразам указанных кампаний
- `keyword_ids` (array): Аукцион по указанным фразам
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `get_campaign_negative_keywords` (~44 tokens)

Получить минус-фразы кампаний

Получить текущие минус-фразы кампаний по их ID.

Input parameters:

- `campaign_ids` (array, required): Кампании, минус-фразы которых нужно прочитать

### `set_campaign_negative_keywords` (~270 tokens)

Минус-фразы кампании

Минус-фразы на уровне кампании. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные.

Input parameters:

- `campaign_id` (string, required): ID кампании
- `mode` (string, required): Обязателен. replace — заменить список целиком (пустой массив очищает, прежние фразы теряются), add — дописать к текущим, remove — убрать перечисленные. add и remove сначала читают текущий список, это…
- `negative_keywords` (array, required): Минус-фразы кампании: при mode=replace — полный новый список взамен прежнего, при add — что дописать, при remove — что убрать

### `set_ad_group_negative_keywords` (~273 tokens)

Минус-фразы группы

Минус-фразы на уровне группы объявлений. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные.

Input parameters:

- `ad_group_id` (string, required): ID группы объявлений
- `mode` (string, required): Обязателен. replace — заменить список целиком (пустой массив очищает, прежние фразы теряются), add — дописать к текущим, remove — убрать перечисленные. add и remove сначала читают текущий список, это…
- `negative_keywords` (array, required): Минус-фразы группы: при mode=replace — полный новый список взамен прежнего, при add — что дописать, при remove — что убрать

### `list_negative_keyword_shared_sets` (~86 tokens)

Общие наборы минус-фраз

Получить общие наборы минус-фраз аккаунта.

Input parameters:

- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда перед��ётся LimitedBy предыдущей страницы
- `set_ids` (array): Конкретные наборы; без них возвращаются все наборы аккаунта

### `manage_negative_keyword_shared_sets` (~114 tokens)

Управление общими минус-фразами

Создать, изменить или удалить общие наборы минус-фраз аккаунта.

Input parameters:

- `action` (string, required): Что сделать с наборами: add, update или delete (необратимо)
- `add_sets` (array): Наборы для создания; обязателен при action=add
- `set_ids` (array): Наборы для удаления; обязателен при action=delete
- `update_sets` (array): Наборы для изменения; обязателен при action=update

### `link_negative_keyword_sets` (~185 tokens)

Привязать общие минус-фразы

Заменить привязки общих наборов минус-фраз у кампаний и/или групп объявлений. Привязка к кампании действует на все её группы. Пустой set_ids очищает привязки.

Input parameters:

- `ad_group_ids` (array): Группы, которым назначаются наборы
- `campaign_ids` (array): Кампании, которым назначаются наборы. Привязка на уровне кампании действует на все её группы. Тип кампании сервер читает сам — это дополнительный вызов API; общие наборы поддерживают TEXT_CAMPAIGN, D…
- `set_ids` (array, required): Полный новый список наборов объекта — прежние привязки затираются. Пустой массив снимает все

### `list_sitelinks` (~88 tokens)

Список быстрых ссылок

Получить все или выбранные наборы быстрых ссылок.

Input parameters:

- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `sitelink_set_ids` (array): Конкретные наборы; без них возвращаются все наборы аккаунта

### `set_sitelinks` (~58 tokens)

Создать быстрые ссылки

Создать новый набор из 1–8 быстрых ссылок. Возвращает ID набора для привязки к объявлению.

Input parameters:

- `sitelinks` (array, required): Новый набор из 1–8 быстрых ссылок

### `delete_sitelinks` (~67 tokens)

Удалить быстрые ссылки

Удалить наборы быстрых ссылок по ID. Набор, привязанный к объявлению, Директ удалить не даст.

Input parameters:

- `sitelink_set_ids` (array, required): Наборы, которые нужно удалить; ID берутся из list_sitelinks

### `list_ad_extensions` (~117 tokens)

Список уточнений

Получить уточнения (callouts) с их статусами и текстом.

Input parameters:

- `ad_extension_ids` (array): Конкретные уточнения; без них возвращаются все
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `states` (array): Фильтр по состоянию уточнения
- `statuses` (array): Фильтр по статусу модерации уточнения

### `add_ad_extensions` (~45 tokens)

Создать уточнения

Создать уточнения (callouts), каждый текст до 25 символов.

Input parameters:

- `callouts` (array, required): Тексты уточнений, каждый до 25 символов

### `delete_ad_extensions` (~46 tokens)

Удалить уточнения

Удалить уточнения по ID. ⚠️ Необратимо.

Input parameters:

- `ad_extension_ids` (array, required): Уточнения, которые будут удалены безвозвратно

### `manage_ad_images` (~170 tokens)

Управление изображениями

Загрузить, получить или удалить изображения объявлений (AdImages). Для add данные передаются в base64.

Input parameters:

- `action` (string, required): Что сделать: add, get или delete (необратимо)
- `ad_image_hashes` (array): Хеши изображений: фильтр при action=get, обязателен при action=delete
- `associated` (string): Фильтр при action=get: YES — только привязанные к объявлениям, NO — только свободные
- `images` (array): Изображения для загрузки; обязателен при action=add
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `list_vcards` (~108 tokens)

Список визиток

Получить виртуальные визитки по ID или найти их через объявления выбранных кампаний.

Input parameters:

- `campaign_ids` (array): Найти визитки, привязанные к объявлениям этих кампаний
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `vcard_ids` (array): Конкретные визитки по их ID

### `add_vcard` (~298 tokens)

Создать визитку

Создать виртуальную визитку для кампании.

Input parameters:

- `apartment` (string): Офис или квартира
- `building` (string): Корпус
- `campaign_id` (string, required): ID кампании, к которой привязывается визитка
- `city` (string, required): Город
- `company_name` (string, required): Название организации
- `contact_email` (string): Контактный адрес электронной почты
- `contact_person` (string): Контактное лицо
- `country` (string, required): Страна, например «Россия»
- `extra_message` (string): Дополнительная информация в визитке
- `house` (string): Дом
- `metro_station_id` (string): ID станции метро из справочника MetroStations
- `ogrn` (string): ОГРН или ОГРНИП организации
- `phone_city_code` (string, required): Код города или оператора
- `phone_country_code` (string, required): Код страны, «+7»
- `phone_extension` (string): Добавочный номер
- `phone_number` (string, required): Номер телефона
- `street` (string): Улица
- `work_time` (string, required): Режим работы в формате API: день_с#день_по#час_с#мин_с#час_по#мин_по, например 1#5#9#0#18#0

### `delete_vcards` (~71 tokens)

Удалить визитки

Удалить визитки по ID; удаление необратимо. Отказ по отдельной визитке приходит в ответе списком, а не ошибкой вызова.

Input parameters:

- `vcard_ids` (array, required): Визитки, которые нужно удалить; ID берутся из list_vcards

### `list_audience_targets` (~179 tokens)

Аудиторные цели

Получить условия нацеливания на аудиторию по ID кампании, группы, ретаргетинга или интереса.

Input parameters:

- `ad_group_ids` (array): Условия выбранных групп
- `audience_target_ids` (array): Конкретные условия нацеливания
- `campaign_ids` (array): Условия выбранных кампаний
- `interest_ids` (array): Условия, построенные на этих интересах
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `retargeting_list_ids` (array): Условия, построенные на этих списках ретаргетинга
- `states` (array): Фильтр по состоянию: ON или SUSPENDED

### `set_audience_targets` (~117 tokens)

Управление аудиторными целями

Добавить, остановить, возобновить, удалить аудиторные цели или изменить их ставки.

Input parameters:

- `action` (string, required): Что сделать: add, set_bids, suspend, resume или delete (необратимо)
- `audience_target_ids` (array): Условия для suspend, resume или delete
- `bids` (array): Новые ставки и приоритеты; обязателен при action=set_bids
- `targets` (array): Условия для добавления; обязателен при action=add

### `list_dynamic_targets` (~123 tokens)

Динамические цели

Получить условия нацеливания динамических текстовых объявлений.

Input parameters:

- `ad_group_ids` (array): Цели выбранных групп
- `campaign_ids` (array): Цели выбранных кампаний
- `dynamic_target_ids` (array): Конкретные динамические цели
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `states` (array): Фильтр по состоянию: ON или SUSPENDED

### `manage_dynamic_targets` (~114 tokens)

Управление динамическими целями

Создать, изменить ставки, остановить, возобновить или удалить динамические цели.

Input parameters:

- `action` (string, required): Что сделать: add, set_bids, suspend, resume или delete (необратимо)
- `bids` (array): Новые ставки и приоритеты; обязателен при action=set_bids
- `dynamic_target_ids` (array): Цели для suspend, resume или delete
- `targets` (array): Цели для добавления; обязателен при action=add

### `list_retargeting_lists` (~125 tokens)

Списки ретаргетинга

Получить условия ретаргетинга и подбора аудитории с правилами и областью применения.

Input parameters:

- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `retargeting_list_ids` (array): Конкретные условия; без них возвращаются все
- `types` (array): Фильтр по типу: RETARGETING — цели Метрики, AUDIENCE — сегменты Аудиторий

### `add_retargeting_list` (~118 tokens)

Создать список ретаргетинга

Создать условие ретаргетинга из целей Метрики, сегментов или интересов.

Input parameters:

- `description` (string): Описание условия — видно только в интерфейсе, на показы не влияет
- `name` (string, required): Название условия ретаргетинга
- `rules` (array, required): Правила условия; между собой они соединяются логическим И
- `type` (string): RETARGETING — по целям Метрики, AUDIENCE — по сегментам Яндекс.Аудиторий

### `update_retargeting_lists` (~77 tokens)

Изменить списки ретаргетинга

Изменить название, описание и правила условий ретаргетинг��. Переданные правила заменяют прежние целиком: сначала прочитайте условие через list_retargeting_lists.

Input parameters:

- `retargeting_lists` (array, required): Условия и их новые значения; поля, которые не переданы, остаются прежними

### `delete_retargeting_lists` (~83 tokens)

Удалить списки ретаргетинга

Удалить условия ретаргетинга и подбора аудитории по ID; удаление необратимо. Отказ по отдельному условию приходит в ответе списком, а не ошибкой вызова.

Input parameters:

- `retargeting_list_ids` (array, required): Условия, которые нужно удалить; ID берутся из list_retargeting_lists

### `get_bid_adjustments` (~168 tokens)

Корректировки ставок

Получить корректировки ставок кампании или группы: устройства, пол и возраст, аудитории, регионы, платёжеспособность, размещение.

Input parameters:

- `ad_group_ids` (array): Группы, корректировки которых нужно получить
- `adjustment_ids` (array): Конкретные корректировки по их ID
- `campaign_ids` (array): Кампании, корректировки которых нужно получить
- `levels` (array, required): Уровни корректировок: CAMPAIGN и/или AD_GROUP
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы
- `types` (array): Фильтр по типу корректировки

### `add_bid_adjustments` (~141 tokens)

Создать корректировки ставок

Создать корректировки ставок на кампаниях или группах. Коэффициент — проценты от ставки: 100 ничего не меняет, 0 отключает показы среза.

Input parameters:

- `ad_group_ids` (array): Группы, которым добавляются корректировки; вместо campaign_ids
- `adjustments` (array, required): Корректировки; каждая ставится каждому объекту из campaign_ids или ad_group_ids. Всего за вызов не больше 1000 корректировок — это цели, умноженные на виды
- `campaign_ids` (array): Кампании, которым добавляются корректировки; вместо ad_group_ids

### `set_bid_adjustments` (~40 tokens)

Изменить корректировки ставок

Изменить коэффициенты существующих корректировок по их ID.

Input parameters:

- `adjustments` (array, required): Корректировки и их новые коэффициенты

### `delete_bid_adjustments` (~62 tokens)

Удалить корректировки ставок

Удалить корректировки по их ID. Ставка среза возвращается к базовой; отменить удаление нельзя.

Input parameters:

- `adjustment_ids` (array, required): Корректировки, которые нужно удалить; ID берутся из get_bid_adjustments

### `get_statistics` (~129 tokens)

Статистика

Статистика кампаний за период: показы, клики, расход (руб), CTR, CPC (ReportService, TSV).

Input parameters:

- `campaign_ids` (array, required): Кампании, по которым строится отчёт
- `date_from` (string, required): Первый день периода, YYYY-MM-DD
- `date_to` (string, required): Последний день периода включительно, YYYY-MM-DD
- `fields` (array): Поля отчёта; по умолчанию Date, CampaignName, Impressions, Clicks, Cost, Ctr, AvgCpc. Деньги приходят в рублях

### `get_search_queries` (~128 tokens)

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

Отчёт по фактическим поисковым запросам для анализа и добавления минус-фраз.

Input parameters:

- `campaign_ids` (array, required): Кампании, по которым нужен отчёт о поисковых запросах
- `date_from` (string, required): Первый день периода, YYYY-MM-DD
- `date_to` (string, required): Последний день периода включительно, YYYY-MM-DD
- `fields` (array): Поля отчёта; по умолчанию Query, CampaignId, CampaignName, AdGroupId, AdGroupName, Criterion, Impressions, Clicks, Cost

### `get_account_balance` (~57 tokens)

Баланс аккаунта

Баланс и финансовая информация аккаунта (Amount, Currency) через Live API v4.

Input parameters:

- `logins` (array): Логины аккаунтов для агентского токена; по умолчанию — аккаунт самого токена

### `list_businesses` (~83 tokens)

Профили организаций

Получить доступные профили организаций из Яндекс Бизнеса.

Input parameters:

- `business_ids` (array): Конкретные профили; без них возвращаются все доступные
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `get_changes` (~210 tokens)

Изменения объектов

Проверить изменения кампаний, групп и объявлений начиная с указанного времени, а также изменения справочников (mode=dictionaries) и текущее время сервера Директа.

Input parameters:

- `ad_group_ids` (array): Группы для mode=objects
- `ad_ids` (array): Объявления для mode=objects
- `campaign_ids` (array): Кампании для mode=objects
- `field_names` (array): Какие изменения интересуют; по умолчанию — соответствующие переданным ID
- `mode` (string, required): campaigns — какие кампании менялись целиком; objects — что изменилось внутри выбранных объектов; dictionaries — менялись ли справочники регионов, часовых поясов и интересов
- `timestamp` (string): Момент, начиная с которого искать изменения: YYYY-MM-DDThh:mm:ssZ. Обязателен для campaigns и objects; для dictionaries без него возвращается только текущее время сервера

### `list_feeds` (~90 tokens)

Список фидов

Получить товарные фиды, их источники, статусы обработки и связанные кампании.

Input parameters:

- `feed_ids` (array): Конкретные фиды; без них возвращаются все фиды аккаунта
- `limit` (integer): Сколько объектов вернуть (максимум 10000)
- `offset` (integer): Смещение выборки: сюда передаётся LimitedBy предыдущей страницы

### `get_regions` (~175 tokens)

Справочник регионов

Справочник кодов регионов (GeoRegions) для таргетинга. Фильтр по названию, 225 = Россия. with_parents=true показывает вложенность и различает одноимённые города.

Input parameters:

- `limit` (integer): Сколько регионов вернуть, максимум 500
- `search` (string): Фильтр по названию региона: подстрока без учёта регистра, например «москва»
- `with_parents` (boolean): Показать, во что вложен регион (Новосибирск → Новосибирская область, Россия) — так различаются одноимённые города. По умолчанию выключено; требует search. Ищет при этом сам Директ — по похожему назва…

### `list_time_zones` (~99 tokens)

Справочник часовых поясов

Справочник часовых поясов (TimeZones) для set_time_targeting и create_campaign. Фильтр по коду или названию.

Input parameters:

- `limit` (integer): Сколько часовых поясов вернуть, максимум 500
- `search` (string): Фильтр по коду или названию пояса: подстрока без учёта регистра, например «moscow» или «Екатеринбург»

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus#diagnostics

## Score history

- 2026-09-21: 84
- 2026-09-20: 80
- 2026-09-19: 80
- 2026-09-18: 80
- 2026-09-17: 80
- 2026-09-16: 80
- 2026-09-15: 80
- 2026-09-14: 80
- 2026-09-13: 65

## Common questions

### What is the Яндекс.Директ MCP server?

Яндекс.Директ is an MCP server listed in the public MCP registry as io.github.Pavelsiba/yandex-direct-mcp-plus. API Яндекс.Директа v5: кампании, объявления, фразы, ставки, минус-фразы, статистика. This page covers its npm package (yandex-direct-mcp-plus).

### Is the Яндекс.Директ MCP server safe to use?

Яндекс.Директ scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Яндекс.Директ MCP server expose?

Яндекс.Директ exposes 60 tools: list_campaigns, get_campaign, create_campaign, update_campaign, manage_campaigns, and 55 more. Their descriptions and schemas cost roughly 8,455 tokens of context every time the server is loaded.

### Is the Яндекс.Директ MCP server still maintained?

Яндекс.Директ is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Яндекс.Директ MCP server under?

Яндекс.Директ declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/yandex-direct-mcp-plus
- Socket report: https://socket.dev/npm/package/yandex-direct-mcp-plus
- Repository: https://github.com/Pavelsiba/yandex-direct-mcp-plus
- Changelog RSS feed: https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus.xml
- Changelog JSON feed: https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus.json
- HTML version of this page: https://verifymcp.io/servers/pavelsiba-yandex-direct-mcp-plus/yandex-direct-mcp-plus
