MCP server for Yandex Direct API v5 — campaigns, ads, keywords, bids, audiences
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
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx mcp-server-yandex-directMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-dontsovcmc-yandex-direct": {
"command": "uvx",
"args": [
"mcp-server-yandex-direct"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencemcp-server-yandex-directpypiio.github.dontsovcmc/yandex-direct works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.