Connects Claude to the full Yandex Direct API v5 for managing Russian ad campaigns programmatically. You get access to 79 operations across campaigns, ad groups, keywords, bidding adjustments, audiences, feeds, and reporting. The server uses a search plus execute pattern instead of exposing dozens of individual tools: you search for an action in natural language, get back the schema, then execute it with parameters. Works through stdio transport, stores your OAuth token locally, and includes both MCP server functionality and a standalone CLI. Useful if you're running Yandex Direct campaigns and want to automate bid management, pull performance reports, or batch update keywords without clicking through the web interface.
MCP-сервер, CLI-утилита и библиотека Pydantic-моделей для Yandex Direct API v5.
Все данные остаются на вашем компьютере — токен никуда не передаётся.
Сервер использует паттерн search + execute — вместо 79 отдельных инструментов предоставляет 2:
| Инструмент | Описание |
|---|---|
yd_search | Поиск действий по описанию на естественном языке |
yd_execute | Выполнение действия по ID |
LLM: yd_search("остановить кампании")
→ [{"id": "campaigns-suspend", "params_schema": {"SelectionCriteria": {...}, ...}, ...}]
LLM: yd_execute("campaigns-suspend", '{"SelectionCriteria": {"Ids": [12345]}}')
→ {"SuspendResults": [...]}
| Домен | Кол-во | Описание |
|---|---|---|
campaigns | 8 | Кампании: создание, управление, архивация |
adgroups | 4 | Группы объявлений |
ads | 9 | Объявления: создание, управление, модерация |
keywords | 6 | Ключевые слова |
bidding | 7 | Ставки и корректировки ставок |
assets | 11 | Быстрые ссылки, изображения, видео, расширения |
audience | 10 | Аудитории и ретаргетинг |
negkeywords | 4 | Общие списки минус-слов |
feeds | 4 | Фиды для динамических объявлений |
creatives | 2 | Креативы для медийных объявлений |
research | 2 | Исследование ключевых слов |
leads | 1 | Лиды из форм лидогенерации |
changes | 3 | Отслеживание изменений |
account | 6 | Аккаунт, справочники, клиенты агентства |
turbopages | 1 | Турбо-страницы |
reports | 1 | Отчёты (TSV/CSV) |
Способ 1: через uvx (не требует установки пакета)
Требуется uv — если не установлен:
curl -LsSf https://astral.sh/uv/install.sh | sh
claude mcp add yandex-direct \
-e YD_TOKEN=ваш_токен \
-- uvx mcp-server-yandex-direct
Способ 2: через pip
pip install mcp-server-yandex-direct
claude mcp add yandex-direct \
-e YD_TOKEN=ваш_токен \
-- python -m mcp_server_yandex_direct
Для удаления:
claude mcp remove yandex-direct
Добавьте в конфигурационный файл:
| Клиент | ОС | Путь к файлу |
|---|---|---|
| Claude Code | все | ~/.claude/settings.json (секция mcpServers) |
| Claude Desktop | macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop | Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Desktop | Linux | ~/.config/Claude/claude_desktop_config.json |
Через uvx:
{
"mcpServers": {
"yandex-direct": {
"command": "uvx",
"args": ["mcp-server-yandex-direct"],
"env": {
"YD_TOKEN": "ваш_токен"
}
}
}
}
Через pip (после pip install mcp-server-yandex-direct):
{
"mcpServers": {
"yandex-direct": {
"command": "python",
"args": ["-m", "mcp_server_yandex_direct"],
"env": {
"YD_TOKEN": "ваш_токен"
}
}
}
}
Подключает сервер только на время одной сессии Claude, не сохраняя в настройки. Токен хранится в отдельном .env.mcp файле, а не в конфиге Claude.
Из JSON-строки:
claude --mcp-config '{"yandex-direct":{"command":"bash","args":["-c","source ~/.env.mcp && exec uvx mcp-server-yandex-direct"]}}'
Из файла:
claude --mcp-config ~/mcp-servers.json
Пример ~/mcp-servers.json:
{
"yandex-direct": {
"command": "bash",
"args": ["-c", "source ~/.env.mcp && exec uvx mcp-server-yandex-direct"]
}
}
Пример ~/.env.mcp:
YD_TOKEN=ваш_токен
Попросите Claude: «Покажи список кампаний» — он вызовет yd_search, получит схему campaigns-get, затем yd_execute.
Claude автоматически использует yd_search для поиска нужного действия, затем yd_execute для его выполнения:
yd_search("кампании") → yd_execute("campaigns-get", ...)yd_search("остановить кампании") → yd_execute("campaigns-suspend", ...)yd_search("объявления") → yd_execute("ads-get", ...)yd_search("ключевые слова добавить") → yd_execute("keywords-add", ...)yd_search("справочники") → yd_execute("dictionaries-get", ...)yd_search("отчёт") → yd_execute("reports-get", ...)pip install mcp-server-yandex-direct
Переменная окружения YD_TOKEN должна быть установлена:
export YD_TOKEN=ваш_токен
Или через файл:
mcp-server-yandex-direct --env /path/to/.env <command>
Формат файла — KEY=VALUE, по одной переменной на строку, #-комментарии.
Без аргументов запускается MCP-сервер, с командой — CLI. Все команды выводят JSON.
# Версия
mcp-server-yandex-direct --version
# Справка
mcp-server-yandex-direct --help
mcp-server-yandex-direct <command> --help
# Кампании
mcp-server-yandex-direct campaigns-get '{"SelectionCriteria": {}, "FieldNames": ["Id", "Name", "State"]}'
mcp-server-yandex-direct campaigns-suspend 123,456
# Объявления
mcp-server-yandex-direct ads-get '{"SelectionCriteria": {"CampaignIds": [123]}, "FieldNames": ["Id", "Type", "State"]}'
mcp-server-yandex-direct ads-moderate 789,101
# Ключевые фразы
mcp-server-yandex-direct keywords-get '{"SelectionCriteria": {"AdGroupIds": [111]}, "FieldNames": ["Id", "Keyword", "State"]}'
# Справочники
mcp-server-yandex-direct dictionaries-get Currencies,Regions
# Отчёты
mcp-server-yandex-direct reports-get '{"params": {"SelectionCriteria": {"DateFrom": "2026-01-01", "DateTo": "2026-04-28"}, "FieldNames": ["Date", "CampaignId", "Clicks", "Cost"], "ReportName": "My Report", "ReportType": "CAMPAIGN_PERFORMANCE_REPORT", "DateRangeType": "CUSTOM_DATE", "Format": "TSV"}}'
$ mcp-server-yandex-direct campaigns-get '{"SelectionCriteria": {"States": ["ON"]}, "FieldNames": ["Id", "Name"]}'
{"Campaigns": [{"Id": 12345, "Name": "Летняя распродажа"}]}
Пакет содержит типизированные Pydantic-модели всех объектов API. Модели можно использовать в своих Python-программах для валидации данных и автодополнения в IDE.
pip install mcp-server-yandex-direct
from mcp_server_yandex_direct.models.campaigns import CampaignsGetParams, CampaignsSelectionCriteria
# Валидация данных из API
params = CampaignsGetParams(
SelectionCriteria=CampaignsSelectionCriteria(States=["ON"]),
FieldNames=["Id", "Name", "State"],
)
print(params.model_dump_json())
# Валидация ответа
from mcp_server_yandex_direct.models.campaigns import CampaignsGetResult
data = {"Campaigns": [{"Id": 12345, "Name": "Тест", "State": "ON"}]}
result = CampaignsGetResult.model_validate(data)
print(result.Campaigns[0].Name) # type-safe доступ к полям
Все модели используют extra="allow" для forward compatibility — неизвестные поля API не вызывают ошибок.
Полный список моделей: models/
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
YD_TOKEN | да | — | OAuth-токен Yandex Direct API |
YD_CLIENT_LOGIN | нет | — | Логин клиента для агентских аккаунтов |
YD_LANG | нет | — | Язык ответов: ru, en, uk |
YD_TIMEOUT | нет | 30 | Таймаут HTTP-запросов к API (секунды) |
YD_FILE_TIMEOUT | нет | 120 | Таймаут отчётов Reports API (секунды) |
pip install -e ".[test]"
ruff check src/ tests/
pytest tests/ -v
MIT
YD_TOKEN*secretYD_CLIENT_LOGINYD_LANGYD_TIMEOUTYD_FILE_TIMEOUTio.github.shelvick/shopify-subscription-reconciliation
zleventer/google-ads-mcp
csoai-org/meok-stripe-acp-checkout-mcp
io.github.mharnett/google-ads
csoai-org/stripe-billing-mcp
co.pipeboard/google-ads-mcp