MCP server: One MCP server.

Yandex Metrika

@dontsovcmcMCP server · External

MCP server for Yandex Metrika API — counters, goals, reports, segments, logs

Web analyticsv0.2.4Python
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

PyPImcp-server-yandex-metrikav0.2.4

Run

uvx mcp-server-yandex-metrika

MCP client config

{
  "mcpServers": {
    "yandex-metrika": {
      "command": "uvx",
      "args": [
        "mcp-server-yandex-metrika"
      ]
    }
  }
}
README7 min read

mcp-server-yandex-metrika

Version

MCP-сервер, CLI-утилита и библиотека Pydantic-моделей для API Яндекс Метрики.

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

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

Оглавление

Возможности

Отчёты (Reporting API)

ИнструментCLIОписание
ym_stat_datastat-dataТабличный отчёт по метрикам и измерениям
ym_stat_data_bytimestat-bytimeОтчёт по времени (группировка: час/день/неделя/месяц)
ym_stat_data_drilldownstat-drilldownDrill down отчёт с раскрытием уровней
ym_stat_data_comparisonstat-comparisonСравнение сегментов/периодов
ym_stat_data_comparison_drilldown—Сравнение с drill down

Счётчики

ИнструментCLIОписание
ym_counterscountersСписок счётчиков (поиск, фильтрация)
ym_countercounterИнформация о счётчике
ym_counter_createcounter-createСоздать счётчик
ym_counter_updatecounter-updateИзменить счётчик
ym_counter_deletecounter-deleteУдалить счётчик
ym_counter_undeletecounter-undeleteВосстановить удалённый

Цели

ИнструментCLIОписание
ym_goalsgoalsСписок целей счётчика
ym_goalgoalИнформация о цели
ym_goal_creategoal-createСоздать цель (url/number/step/action/...)
ym_goal_update—Изменить цель
ym_goal_deletegoal-deleteУдалить цель

Фильтры

ИнструментCLIОписание
ym_filtersfiltersСписок фильтров
ym_filter—Информация о фильтре
ym_filter_createfilter-createСоздать фильтр (IP, URL, реферер)
ym_filter_update—Изменить фильтр
ym_filter_deletefilter-deleteУдалить фильтр

Доступ (Grants)

ИнструментCLIОписание
ym_grantsgrantsСписок разрешений
ym_grant_creategrant-createВыдать разрешение
ym_grant_update—Изменить разрешение
ym_grant_deletegrant-deleteУдалить разрешение

Операции

ИнструментCLIОписание
ym_operationsoperationsСписок операций
ym_operation—Информация об операции
ym_operation_createoperation-createСоздать операцию (cut_parameter, to_lower, ...)
ym_operation_update—Изменить операцию
ym_operation_deleteoperation-deleteУдалить операцию

Сегменты

ИнструментCLIОписание
ym_segmentssegmentsСписок сегментов
ym_segment—Информация о сегменте
ym_segment_createsegment-createСоздать сегмент
ym_segment_update—Изменить сегмент
ym_segment_deletesegment-deleteУдалить сегмент

Метки

ИнструментCLIОписание
ym_labelslabelsСписок меток
ym_label_createlabel-createСоздать метку
ym_label_update—Изменить метку
ym_label_deletelabel-deleteУдалить метку
ym_counter_label_set—Привязать метку к счётчику
ym_counter_label_unset—Отвязать метку

Аккаунты и представители

ИнструментCLIОписание
ym_accountsaccountsСписок аккаунтов
ym_account_delete—Удалить аккаунт
ym_delegatesdelegatesСписок представителей
ym_delegate_adddelegate-addДобавить представителя
ym_delegate_deletedelegate-deleteУдалить представителя

Примечания на графике

ИнструментCLIОписание
ym_chart_annotationschart-annotationsСписок примечаний
ym_chart_annotation_createchart-annotation-createСоздать примечание
ym_chart_annotation_update—Изменить примечание
ym_chart_annotation_delete—Удалить примечание

Фильтры доступа

ИнструментCLIОписание
ym_access_filters—Список фильтров доступа
ym_access_filter_create—Создать фильтр доступа
ym_access_filter_update—Изменить фильтр доступа
ym_access_filter_delete—Удалить фильтр доступа

Logs API

ИнструментCLIОписание
ym_log_requestslog-requestsСписок запросов логов
ym_log_request—Информация о запросе
ym_log_request_createlog-request-createСоздать запрос (hits/visits)
ym_log_request_evaluatelog-request-evaluateОценить возможность запроса
ym_log_request_clean—Очистить обработанные логи
ym_log_request_cancel—Отменить запрос
ym_log_request_downloadlog-downloadСкачать часть лога (TSV)

Импорт данных

ИнструментCLIОписание
ym_offline_conversions_uploadupload-conversionsЗагрузить оффлайн-конверсии
ym_offline_conversions_uploads—Список загрузок конверсий
ym_offline_conversion_upload_info—Инфо о загрузке
ym_calls_uploadupload-callsЗагрузить звонки
ym_calls_uploads—Список загрузок звонков
ym_calls_upload_info—Инфо о загрузке звонков
ym_expenses_uploadupload-expensesЗагрузить расходы
ym_user_params_upload—Загрузить параметры пользователей

MCP-сервер

Установка

Шаг 1. Получить OAuth-токен Яндекс Метрики

  1. Зарегистрируйте приложение на oauth.yandex.com
  2. Укажите права: metrika:read, metrika:write
  3. Получите токен: https://oauth.yandex.com/authorize?response_type=token&client_id=<ваш_client_id>

Шаг 2. Подключить MCP-сервер

Подключение к Claude Code

Способ 1: через uvx (не требует установки пакета)

Требуется uv — если не установлен:

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

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

bash
pip install mcp-server-yandex-metrika

claude mcp add yandex-metrika \
  -e YANDEX_METRIKA_TOKEN=ваш_токен \
  -- mcp-server-yandex-metrika

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

bash
claude mcp remove yandex-metrika

Подключение к 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-metrika": {
      "command": "uvx",
      "args": ["mcp-server-yandex-metrika"],
      "env": {
        "YANDEX_METRIKA_TOKEN": "ваш_токен"
      }
    }
  }
}

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

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

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

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

Из JSON-строки:

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

Из файла:

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

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

json
{
  "yandex-metrika": {
    "command": "bash",
    "args": ["-c", "source ~/.env.mcp && exec uvx mcp-server-yandex-metrika"]
  }
}

Пример ~/.env.mcp:

YANDEX_METRIKA_TOKEN=ваш_токен

Шаг 3. Проверить

Попросите Claude: «Покажи список моих счётчиков Яндекс Метрики» — он вызовет ym_counters.

Примеры (MCP)

  • «Покажи статистику по визитам за последнюю неделю для счётчика 12345678» → ym_stat_data
  • «Создай цель "Покупка" типа url с условием contain "/thank-you"» → ym_goal_create
  • «Выгрузи логи визитов за январь 2024» → ym_log_request_create

CLI-утилита

Установка (CLI)

bash
pip install mcp-server-yandex-metrika

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

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

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

bash
mcp-server-yandex-metrika --env /path/to/.env counters

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

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

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

bash
# Версия
mcp-server-yandex-metrika --version

# Справка
mcp-server-yandex-metrika --help
mcp-server-yandex-metrika <command> --help

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

bash
# Статистика визитов
mcp-server-yandex-metrika stat-data --ids 12345678 --metrics ym:s:visits,ym:s:users

# Список счётчиков
mcp-server-yandex-metrika counters --search "мой сайт"

# Цели счётчика
mcp-server-yandex-metrika goals 12345678

# Создать запрос логов
mcp-server-yandex-metrika log-request-create 12345678 \
  --date1 2024-01-01 --date2 2024-01-31 \
  --fields "ym:s:date,ym:s:visitID" --source visits

Pydantic-модели

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

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

bash
pip install mcp-server-yandex-metrika

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

python
from mcp_server_yandex_metrika.models import CounterBrief, Goal

# Валидация данных из API
data = {"id": 12345678, "name": "Мой сайт", "status": "Active"}
counter = CounterBrief.model_validate(data)
print(counter.name)  # type-safe доступ к полям

# Создание объекта
goal = Goal(name="Покупка", type="url")
print(goal.model_dump_json())

Все модели используют extra="allow" для forward compatibility — неизвестные поля API не вызывают ошибок.

Полный список моделей: models.py


Переменные окружения

ПеременнаяОбязательнаяПо умолчаниюОписание
YANDEX_METRIKA_TOKENда—OAuth-токен Яндекс Метрики
METRIKA_TIMEOUTнет30Таймаут HTTP-запросов к API (секунды)
METRIKA_FILE_TIMEOUTнет60Таймаут скачивания файлов (секунды)

Загрузка из файла

Вместо передачи переменных через -e можно указать файл:

bash
mcp-server-yandex-metrika --env /path/to/.env

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

Работает в обоих режимах: MCP-сервер и CLI:

bash
# MCP-сервер
claude mcp add yandex-metrika -- mcp-server-yandex-metrika --env ~/.config/metrika.env

# CLI
mcp-server-yandex-metrika --env ~/.config/metrika.env counters

Лимиты API

  • 30 запросов/секунду на IP
  • 5000 запросов/день на пользователя
  • 3 параллельных запроса на пользователя
  • 200 запросов/5 минут для /stat/v1/data/
  • HTTP 420 при превышении лимитов

Разработка

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

Лицензия

MIT

Similar modules

Browse Web analytics