|
4 | 4 | [](https://github.com/gistrec/mcp-yandex-direct/actions/workflows/ci.yml) |
5 | 5 | [](./LICENSE) |
6 | 6 |
|
7 | | -MCP-сервер для **Yandex Direct API v5**. Управляйте контекстной рекламой прямо из Claude (и других MCP-клиентов): кампании, группы, объявления, ключевые фразы, ставки, корректировки, расширения и статистика — на естественном языке. |
| 7 | +MCP-сервер для **Yandex Direct API v5**: управляйте контекстной рекламой из Claude, Cursor, Codex и других AI-клиентов на естественном языке. |
8 | 8 |
|
9 | | -Покрыт весь API v5: частые операции — через удобные инструменты, всё остальное — через универсальный `raw_request`. |
| 9 | +Ассистент сам собирает данные из статистики, ключей, ставок и расширений, находит закономерности и вносит правки — то, что в веб-кабинете Директа приходится делать вручную и по одному экрану. |
| 10 | + |
| 11 | +## Что умеет |
| 12 | + |
| 13 | +- **Полное покрытие API v5** — частые объекты как удобные инструменты, всё остальное — через универсальный `raw_request`. |
| 14 | +- **Запись только по подтверждению** — изменения ставок, бюджетов, минус-слов и статусов требуют явного `confirmWrite`. |
| 15 | +- **Деньги в валюте аккаунта** — бюджеты и ставки на вход и на выход в той же валюте, что и кабинет (например, в рублях), без ручного пересчёта микроединиц. |
| 16 | +- **`autoPaginate`** — проход всех страниц по курсору `LimitedBy`, без молчаливой обрезки на больших аккаунтах. |
| 17 | +- **`get_quota`** — остаток дневной квоты API в Units (потрачено / осталось / лимит). |
| 18 | +- **Устойчивость** — ретраи на лимитах и 5xx с бэкоффом плюс режим песочницы (`YANDEX_DIRECT_SANDBOX`) для безопасных тестов. |
| 19 | + |
| 20 | +## Примеры запросов |
| 21 | + |
| 22 | +Попросите ассистента на русском — например: |
| 23 | + |
| 24 | +- «Какие ключевые фразы тратят бюджет, но не приносят кликов?» |
| 25 | +- «Подними ставки до 3 ₽ на фразы с CTR выше 15%» |
| 26 | +- «Найди id региона Москва и создай группу с таргетингом на Москву» |
| 27 | +- «Поставь корректировку −20% на мобильные в кампании 708589088» |
| 28 | + |
| 29 | +## Пример: аудит кампании |
| 30 | + |
| 31 | +> **Вы:** Проанализируй кампанию ClearTranscriptBot за последнюю неделю и предложи, что улучшить. |
| 32 | +
|
| 33 | +> **Claude** *(вызывает `get_statistics`, `list_keywords`, `get_callouts`, `get_sitelinks`)*: |
| 34 | +> |
| 35 | +> Кампания «EPK/Поиск — бот в Max и Telegram» за 7 дней: |
| 36 | +> |
| 37 | +> | Дата | Показы | Клики | CTR | Расход, ₽ | Ср. клик, ₽ | |
| 38 | +> |------|-------:|------:|----:|----------:|------------:| |
| 39 | +> | 08.06 | 544 | 90 | 16.5% | 782.50 | 8.69 | |
| 40 | +> | 09.06 | 456 | 70 | 15.4% | 528.93 | 7.56 | |
| 41 | +> | 10.06 | 206 | 39 | 18.9% | 254.48 | 6.53 | |
| 42 | +> | 11.06 | 198 | 36 | 18.2% | 205.87 | 5.72 | |
| 43 | +> | 12.06 | 275 | 37 | 13.5% | 178.95 | 4.84 | |
| 44 | +> | 13.06 | 332 | 45 | 13.6% | 214.62 | 4.77 | |
| 45 | +> | 14.06 | 419 | 82 | 19.6% | 481.55 | 5.87 | |
| 46 | +> | **Итого** | **2 430** | **399** | **16.4%** | **2 646.90** | **6.63** | |
| 47 | +> |
| 48 | +> **Что улучшить:** |
| 49 | +> 1. **Автотаргетинг забирает почти весь трафик.** Условие `---autotargeting` собирает основную долю показов и кликов, а ключи («расшифровка интервью», «транскрибация записи» …) получают по 1–22 показа и почти 0 кликов — стоит усилить ставки на фразы или точнее настроить автотаргетинг. |
| 50 | +> 2. **Ставки на минимуме (0.30 ₽), а CTR высокий (16–20%).** На поиске при таком CTR имеет смысл поднять ставки на топ-фразы — заберёте больше недорогих показов. |
| 51 | +> 3. **Объявление 17674525479 отстаёт** (CTR 2–10% против 17–20% у основного) — кандидат на переработку заголовка/текста или отключение. |
| 52 | +> 4. **Расширения в порядке** — 9 уточнений и 3 быстрые ссылки; можно добавить ещё пару быстрых ссылок (лимит — 8). |
10 | 53 |
|
11 | 54 | ## Быстрая установка |
12 | 55 |
|
13 | | -**Claude Code** — одной командой: |
| 56 | +Разверните своего клиента: |
| 57 | + |
| 58 | +<details> |
| 59 | +<summary><b>Claude Code</b></summary> |
14 | 60 |
|
15 | 61 | ```bash |
16 | 62 | claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y mcp-yandex-direct |
17 | 63 | ``` |
18 | 64 |
|
19 | | -Другие клиенты — добавьте сервер в конфиг (разверните свой): |
| 65 | +</details> |
20 | 66 |
|
21 | 67 | <details> |
22 | 68 | <summary><b>Claude Desktop</b></summary> |
@@ -100,59 +146,30 @@ YANDEX_DIRECT_TOKEN = "ваш_токен" |
100 | 146 |
|
101 | 147 | [**→ Получить токен**](https://oauth.yandex.ru/authorize?response_type=token&client_id=7659d6ec6b044aafa6b5e3a00e8e35bb) |
102 | 148 |
|
103 | | -Скопируйте токен в `YANDEX_DIRECT_TOKEN`. Токен персональный (привязан к вашему кабинету) и действует около года; при утере его можно получить заново по той же ссылке. Для агентских аккаунтов добавьте `YANDEX_DIRECT_LOGIN` — логин клиента. |
| 149 | +Скопируйте токен в `YANDEX_DIRECT_TOKEN`. Токен персональный (привязан к вашему кабинету) и действует около года; при утере его можно получить заново по той же ссылке. |
104 | 150 |
|
105 | | -## Примеры запросов |
106 | | - |
107 | | -Просто пишите Claude на русском: |
108 | | - |
109 | | -- «Покажи все кампании и их статус» |
110 | | -- «Сколько я потратил за последние 7 дней? Разбей по дням» |
111 | | -- «Какие ключевые фразы тратят бюджет, но не приносят кликов?» |
112 | | -- «Добавь минус-слова "бесплатно" и "онлайн" в кампанию 708589088» |
113 | | -- «Подними ставки до 3 ₽ на фразы с CTR выше 15%» |
114 | | -- «Найди id региона Москва и создай группу с таргетингом на Москву» |
115 | | -- «Поставь корректировку −20% на мобильные в кампании X» |
116 | | -- «Покажи мои уточнения и быстрые ссылки» |
117 | | - |
118 | | -## Пример: аудит кампании |
119 | | - |
120 | | -> **Вы:** Проанализируй кампанию ClearTranscriptBot за последнюю неделю и предложи, что улучшить. |
121 | | -
|
122 | | -> **Claude** *(вызывает `get_statistics`, `list_keywords`, `get_bid_modifiers`, `get_callouts`)*: |
123 | | -> |
124 | | -> Кампания «EPK/Поиск — бот в Max и Telegram» за 7 дней: |
125 | | -> |
126 | | -> | Дата | Показы | Клики | CTR | Расход, ₽ | Ср. клик, ₽ | |
127 | | -> |------|-------:|------:|----:|----------:|------------:| |
128 | | -> | 08.06 | 544 | 90 | 16.5% | 782.50 | 8.69 | |
129 | | -> | 09.06 | 456 | 70 | 15.4% | 528.93 | 7.56 | |
130 | | -> | 10.06 | 206 | 39 | 18.9% | 254.48 | 6.53 | |
131 | | -> | 11.06 | 198 | 36 | 18.2% | 205.87 | 5.72 | |
132 | | -> | 12.06 | 275 | 37 | 13.5% | 178.95 | 4.84 | |
133 | | -> | 13.06 | 332 | 45 | 13.6% | 214.62 | 4.77 | |
134 | | -> | 14.06 | 419 | 82 | 19.6% | 481.55 | 5.87 | |
135 | | -> | **Итого** | **2 430** | **399** | **16.4%** | **2 646.90** | **6.63** | |
136 | | -> |
137 | | -> **Что улучшить:** |
138 | | -> 1. **Автотаргетинг забирает почти весь трафик.** Условие `---autotargeting` собирает основную долю показов и кликов, а ваши ключи («расшифровка интервью», «транскрибация записи» …) получают по 1–22 показа и почти 0 кликов. Стоит проверить, не каннибализирует ли автотаргетинг фразы, и либо усилить ставки на ключи, либо точнее настроить автотаргетинг. |
139 | | -> 2. **Ставки на минимуме (0.30 ₽), а CTR высокий (16–20%).** На поиске при таком CTR имеет смысл протестировать повышение ставок на топ-фразы — заберёте больше недорогих показов. |
140 | | -> 3. **Объявление 17674525479 отстаёт** (CTR 2–10% против 17–20% у основного). Кандидат на переработку заголовка/текста или отключение. |
141 | | -> 4. **Возрастные корректировки 0–17 и 18–24 обнулены.** Если ваша ЦА — взрослые, всё ок; иначе проверьте, не режете ли платёжеспособную аудиторию. |
142 | | -> 5. **Расширения настроены хорошо:** 9 уточнений + 3 быстрые ссылки. Можно добавить ещё пару быстрых ссылок (лимит — 8). |
143 | | -> |
144 | | -> Хотите, подниму ставки на топ-фразы и отключу слабое объявление? *(перед записью спрошу подтверждение)* |
145 | | -
|
146 | | -Все операции записи (изменение ставок, бюджетов, минус-слов, статусов) сервер выполняет только по вашему явному запросу. |
| 151 | +⚠️ Токен даёт **полный доступ** к рекламному кабинету (включая трату бюджета) и хранится **открытым текстом** в конфиге клиента — относитесь к нему как к паролю. |
147 | 152 |
|
148 | 153 | ## Настройка |
149 | 154 |
|
150 | 155 | | Переменная | Обяз. | Описание | |
151 | 156 | |---|---|---| |
152 | 157 | | `YANDEX_DIRECT_TOKEN` | да | OAuth-токен Яндекс Директа. | |
153 | 158 | | `YANDEX_DIRECT_LOGIN` | нет | Логин клиента (для агентских аккаунтов). | |
| 159 | +| `YANDEX_DIRECT_SANDBOX` | нет | `true` — работать в песочнице API. | |
| 160 | + |
| 161 | +Полный список переменных (язык ответов, таймауты, повторы) и инструментов — в [docs/TOOLS.md](https://github.com/gistrec/mcp-yandex-direct/blob/main/docs/TOOLS.md). |
| 162 | + |
| 163 | +## Требования |
| 164 | + |
| 165 | +- Node.js 18+ (запускается через `npx`, отдельная установка не нужна). |
| 166 | +- OAuth-токен Яндекс Директа — см. [Получение токена](#получение-токена). |
| 167 | + |
| 168 | +## Ограничения |
154 | 169 |
|
155 | | -Остальные переменные (язык ответов, таймауты, повторы, песочница) и полный список инструментов — в [документации](https://github.com/gistrec/mcp-yandex-direct/blob/main/docs/TOOLS.md). |
| 170 | +- `get_statistics` использует асинхронный сервис Reports: отчёт генерируется на стороне Яндекса (сервер опрашивает готовность) и имеет собственные лимиты на объём и число отчётов в сутки. |
| 171 | +- Токен живёт около года — потом нужно получить заново. |
| 172 | +- Для агентских аккаунтов укажите клиента через `YANDEX_DIRECT_LOGIN`. |
156 | 173 |
|
157 | 174 | ## Документация |
158 | 175 |
|
|
0 commit comments