Yandex Direct

io.github.dontsovcmcPublished by GitHub account dontsovcmcv0.3.0Updated Oct 24, 2026

MCP server for Yandex Direct API v5 — campaigns, ads, keywords, bids, audiences

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Local MCP server for the Yandex Direct API v5 that lets an assistant search and execute 79 advertising actions on campaigns, ads, keywords, bids and audiences.

What you can do
Search available Yandex Direct actions by natural-language description and get their parameter schemas, then execute a chosen action by ID. Manage campaigns, ad groups and ads, including creation, moderation and archiving. Work with keywords, bids and bid adjustments, negative keyword lists and keyword research. Handle audiences and retargeting, feeds, creatives, quick links, images, video and other assets. Read account data, dictionaries and agency clients, track changes, and pull reports in TSV or CSV.
When to use it
Useful when you manage Yandex Direct advertising accounts and want an assistant to look up, change or report on campaigns, ads, keywords and audiences from a chat instead of the web interface or scripts.
Requirements
Runs locally as a Python package, started with uvx or after pip install; uv or Python is needed. A Yandex Direct OAuth token is required in the YD_TOKEN environment variable. Optional variables set the agency client login, response language and HTTP and report timeouts. Network access to the Yandex Direct API is required.
Before you install
The OAuth token in YD_TOKEN grants access to your advertising account; keep it out of shared config files where possible. Many actions write to the account, including creating, suspending, archiving and moderating campaigns and ads, and changing bids, so changes can affect live advertising and spending. Requests go to the Yandex Direct API.

Installation

In SourceWeft

  1. Open Yandex Direct in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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 — если не установлен:

bash
curl -LsSf https://astral.sh/uv/install.sh | sh
bash
claude mcp add yandex-direct \  -e YD_TOKEN=ваш_токен \  -- uvx mcp-server-yandex-direct

Способ 2: через pip

bash
pip install mcp-server-yandex-direct
claude mcp add yandex-direct \  -e YD_TOKEN=ваш_токен \  -- python -m mcp_server_yandex_direct

Для удаления:

bash
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:

json
{  "mcpServers": {    "yandex-direct": {      "command": "uvx",      "args": ["mcp-server-yandex-direct"],      "env": {        "YD_TOKEN": "ваш_токен"      }    }  }}

Через pip (после pip install mcp-server-yandex-direct):

json
{  "mcpServers": {    "yandex-direct": {      "command": "python",      "args": ["-m", "mcp_server_yandex_direct"],      "env": {        "YD_TOKEN": "ваш_токен"      }    }  }}

Подключение через --mcp-config

Подключает сервер только на время одной сессии Claude, не сохраняя в настройки. Токен хранится в отдельном .env.mcp файле, а не в конфиге Claude.

Из JSON-строки:

bash
claude --mcp-config '{"yandex-direct":{"command":"bash","args":["-c","source ~/.env.mcp && exec uvx mcp-server-yandex-direct"]}}'

Из файла:

bash
claude --mcp-config ~/mcp-servers.json

Пример ~/mcp-servers.json:

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)

bash
pip install mcp-server-yandex-direct

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

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

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

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

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

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

Без аргументов запускается MCP-сервер, с командой — CLI. Все команды выводят JSON.

bash
# Версияmcp-server-yandex-direct --version
# Справкаmcp-server-yandex-direct --helpmcp-server-yandex-direct <command> --help

Примеры команд

bash
# Кампании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"}}'
Пример вывода
bash
$ mcp-server-yandex-direct campaigns-get '{"SelectionCriteria": {"States": ["ON"]}, "FieldNames": ["Id", "Name"]}'{"Campaigns": [{"Id": 12345, "Name": "Летняя распродажа"}]}

Pydantic-модели

Пакет содержит типизированные Pydantic-модели всех объектов API. Модели можно использовать в своих Python-программах для валидации данных и автодополнения в IDE.

Установка (библиотеки)

bash
pip install mcp-server-yandex-direct

Использование в своих программах

python
from mcp_server_yandex_direct.models.campaigns import CampaignsGetParams, CampaignsSelectionCriteria
# Валидация данных из APIparams = 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 (секунды)

Разработка

bash
pip install -e ".[test]"ruff check src/ tests/pytest tests/ -v

Лицензия

MIT

Source: README.md at commit e4c3f7e

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.3.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.