mcpField
Y
yandex-direct

yandex-direct

Local
github.com/dontsovcmcBusiness & Marketing1Updated 25w ago

About yandex-direct

yandex-direct provides an MCP server, CLI, and Pydantic models for Yandex Direct API v5, for developers and operators managing ad campaigns. It finds actions through natural-language search and executes them by ID, while keeping the access token on the local machine.

Key features

  1. 01Search for and execute API actions
  2. 02Manage campaigns and ads
  3. 03Work with keywords and bids
  4. 04Handle audiences and related assets
  5. 05CLI and typed Pydantic models

Use cases

  1. 01List or suspend campaigns
  2. 02Add keywords and adjust bids
  3. 03Review ads and audience data
  4. 04Generate campaign reports

MCP support

The MCP server uses `yd_search` to find actions from natural-language descriptions, then `yd_execute` to run a selected action against Yandex Direct API v5.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"dontsovcmc-yandex-direct": {
"command": "uvx",
"args": [
"mcp-server-yandex-direct"
],
"env": {
"YD_TOKEN": "<YD_TOKEN>",
"YD_CLIENT_LOGIN": "<YD_CLIENT_LOGIN>",
"YD_LANG": "<YD_LANG>",
"YD_TIMEOUT": "<YD_TIMEOUT>",
"YD_FILE_TIMEOUT": "<YD_FILE_TIMEOUT>"
}
}
}
}
Run commanduvx mcp-server-yandex-direct
Environment variables to set
YD_TOKENSecret
YD_CLIENT_LOGIN
YD_LANG
YD_TIMEOUT
YD_FILE_TIMEOUT

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-server-yandex-direct0.3.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

mcp-server-yandex-direct

Version

MCP-сервер, CLI-утилита и библиотека Pydantic-моделей для Yandex Direct API v5.

  • MCP-сервер — интеграция с Claude Code, Claude Desktop и другими MCP-клиентами
  • CLI-утилита — работа с API из терминала, скрипты и автоматизация
  • Pydantic-модели — типизированные модели API для использования в своих Python-программах

Все данные остаются на вашем компьютере — токен никуда не передаётся.

Оглавление

Архитектура

Сервер использует паттерн 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": [...]}

Доступные действия (79)

ДоменКол-воОписание
campaigns8Кампании: создание, управление, архивация
adgroups4Группы объявлений
ads9Объявления: создание, управление, модерация
keywords6Ключевые слова
bidding7Ставки и корректировки ставок
assets11Быстрые ссылки, изображения, видео, расширения
audience10Аудитории и ретаргетинг
negkeywords4Общие списки минус-слов
feeds4Фиды для динамических объявлений
creatives2Креативы для медийных объявлений
research2Исследование ключевых слов
leads1Лиды из форм лидогенерации
changes3Отслеживание изменений
account6Аккаунт, справочники, клиенты агентства
turbopages1Турбо-страницы
reports1Отчёты (TSV/CSV)

MCP-сервер

Установка
Шаг 1. Получить OAuth-токен
  1. Войдите в Яндекс Директ
  2. Перейдите в Настройки → API
  3. Создайте OAuth-токен с нужными правами
  4. Скопируйте токен
Шаг 2. Подключить MCP-сервер
Подключение к Claude Code

Способ 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 Desktop

Добавьте в конфигурационный файл:

КлиентОСПуть к файлу
Claude Codeвсе~/.claude/settings.json (секция mcpServers)
Claude DesktopmacOS~/Library/Application Support/Claude/claude_desktop_config.json
Claude DesktopWindows%APPDATA%\Claude\claude_desktop_config.json
Claude DesktopLinux~/.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": "ваш_токен"
      }
    }
  }
}
Подключение через --mcp-config

Подключает сервер только на время одной сессии 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=ваш_токен
Шаг 3. Проверить

Попросите Claude: «Покажи список кампаний» — он вызовет yd_search, получит схему campaigns-get, затем yd_execute.

Примеры (MCP)

Claude автоматически использует yd_search для поиска нужного действия, затем yd_execute для его выполнения:

  • «Покажи все активные кампании» → yd_search("кампании") → yd_execute("campaigns-get", ...)
  • «Останови кампании 123, 456» → yd_search("остановить кампании") → yd_execute("campaigns-suspend", ...)
  • «Покажи объявления кампании 789» → yd_search("объявления") → yd_execute("ads-get", ...)
  • «Добавь ключевую фразу» → yd_search("ключевые слова добавить") → yd_execute("keywords-add", ...)
  • «Получи справочник регионов» → yd_search("справочники") → yd_execute("dictionaries-get", ...)
  • «Сделай отчёт по кампаниям за январь» → yd_search("отчёт") → yd_execute("reports-get", ...)

CLI-утилита

Установка (CLI)
pip install mcp-server-yandex-direct

Переменная окружения YD_TOKEN должна быть установлена:

export YD_TOKEN=ваш_токен

Или через файл:

mcp-server-yandex-direct --env /path/to/.env <command>

Формат файла — KEY=VALUE, по одной переменной на строку, #-комментарии.

Использование (CLI)

Без аргументов запускается 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-модели

Пакет содержит типизированные 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.