关于 yandex-metrika
yandex-metrika 是面向 Yandex Metrika API 的 MCP 服务、命令行工具和 Pydantic 模型库,可用于分析报告及管理计数器、目标、日志等数据。
主要功能
- 01生成分析报告并比较数据
- 02管理计数器和目标
- 03管理细分、过滤器与授权
- 04创建日志请求并下载 TSV
- 05上传离线转化及其他数据
- 06提供命令行工具和类型化模型
适用场景
- 01查看访问量和用户指标
- 02创建或修改计数器与目标
- 03导出访问或点击日志
- 04在 Python 程序中使用类型化 API 模型
MCP 相关
向 MCP 客户端提供 Yandex Metrika API 工具,涵盖报告、计数器和目标管理以及日志请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-server-yandex-metrika
用于API Яндекс Метрики的 MCP 服务、CLI 工具和 Pydantic 模型库。
- MCP 服务 — 与 Claude Code、Claude Desktop 和其他 MCP 客户端集成
- CLI 工具 — 在终端中使用 API、编写脚本和实现自动化
- Pydantic 模型 — 供自己的 Python 程序使用的类型化 API 模型
所有数据都保留在您的计算机上,令牌不会传输到任何地方。
目录
功能
报告(Reporting API)
| 工具 | CLI | 说明 |
|---|---|---|
ym_stat_data | stat-data | 按指标和维度生成表格报告 |
ym_stat_data_bytime | stat-bytime | 按时间生成报告(分组:小时/天/周/月) |
ym_stat_data_drilldown | stat-drilldown | 展开各层级的下钻报告 |
ym_stat_data_comparison | stat-comparison | 比较细分群体/时间段 |
ym_stat_data_comparison_drilldown | — | 下钻比较 |
计数器
| 工具 | CLI | 说明 |
|---|---|---|
ym_counters | counters | 计数器列表(搜索、筛选) |
ym_counter | counter | 计数器信息 |
ym_counter_create | counter-create | 创建计数器 |
ym_counter_update | counter-update | 修改计数器 |
ym_counter_delete | counter-delete | 删除计数器 |
ym_counter_undelete | counter-undelete | 恢复已删除的计数器 |
目标
| 工具 | CLI | 说明 |
|---|---|---|
ym_goals | goals | 计数器目标列表 |
ym_goal | goal | 目标信息 |
ym_goal_create | goal-create | 创建目标(url/number/step/action/...) |
ym_goal_update | — | 修改目标 |
ym_goal_delete | goal-delete | 删除目标 |
筛选器
| 工具 | CLI | 说明 |
|---|---|---|
ym_filters | filters | 筛选器列表 |
ym_filter | — | 筛选器信息 |
ym_filter_create | filter-create | 创建筛选器(IP、URL、引荐来源) |
ym_filter_update | — | 修改筛选器 |
ym_filter_delete | filter-delete | 删除筛选器 |
访问权限(Grants)
| 工具 | CLI | 说明 |
|---|---|---|
ym_grants | grants | 权限列表 |
ym_grant_create | grant-create | 授予权限 |
ym_grant_update | — | 修改权限 |
ym_grant_delete | grant-delete | 删除权限 |
操作
| 工具 | CLI | 说明 |
|---|---|---|
ym_operations | operations | 操作列表 |
ym_operation | — | 操作信息 |
ym_operation_create | operation-create | 创建操作(cut_parameter、to_lower、...) |
ym_operation_update | — | 修改操作 |
ym_operation_delete | operation-delete | 删除操作 |
Сегменты
| Инструмент | CLI | Описание |
|---|---|---|
ym_segments | segments | Список сегментов |
ym_segment | — | Информация о сегменте |
ym_segment_create | segment-create | Создать сегмент |
ym_segment_update | — | Изменить сегмент |
ym_segment_delete | segment-delete | Удалить сегмент |
Метки
| Инструмент | CLI | Описание |
|---|---|---|
ym_labels | labels | Список меток |
ym_label_create | label-create | Создать метку |
ym_label_update | — | Изменить метку |
ym_label_delete | label-delete | Удалить метку |
ym_counter_label_set | — | Привязать метку к счётчику |
ym_counter_label_unset | — | Отвязать метку |
Аккаунты и представители
| Инструмент | CLI | Описание |
|---|---|---|
ym_accounts | accounts | Список аккаунтов |
ym_account_delete | — | Удалить аккаунт |
ym_delegates | delegates | Список представителей |
ym_delegate_add | delegate-add | Добавить представителя |
ym_delegate_delete | delegate-delete | Удалить представителя |
Примечания на графике
| Инструмент | CLI | Описание |
|---|---|---|
ym_chart_annotations | chart-annotations | Список примечаний |
ym_chart_annotation_create | chart-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_requests | log-requests | Список запросов логов |
ym_log_request | — | Информация о запросе |
ym_log_request_create | log-request-create | Создать запрос (hits/visits) |
ym_log_request_evaluate | log-request-evaluate | Оценить возможность запроса |
ym_log_request_clean | — | Очистить обработанные логи |
ym_log_request_cancel | — | Отменить запрос |
ym_log_request_download | log-download | Скачать часть лога (TSV) |
Импорт данных
| Инструмент | CLI | Описание |
|---|---|---|
ym_offline_conversions_upload | upload-conversions | Загрузить оффлайн-конверсии |
ym_offline_conversions_uploads | — | Список загрузок конверсий |
ym_offline_conversion_upload_info | — | Инфо о загрузке |
ym_calls_upload | upload-calls | Загрузить звонки |
ym_calls_uploads | — | Список загрузок звонков |
ym_calls_upload_info | — | Инфо о загрузке звонков |
ym_expenses_upload | upload-expenses | Загрузить расходы |
ym_user_params_upload | — | Загрузить параметры пользователей |
MCP-сервер
Установка
Шаг 1. Получить OAuth-токен Яндекс Метрики
- Зарегистрируйте приложение на oauth.yandex.com
- Укажите права:
metrika:read,metrika:write - Получите токен:
https://oauth.yandex.com/authorize?response_type=token&client_id=<ваш_client_id>
Шаг 2. Подключить MCP-сервер
Подключение к Claude Code
Способ 1: через uvx (не требует установки пакета)
Требуется uv — если не установлен:
curl -LsSf https://astral.sh/uv/install.sh | sh
claude mcp add yandex-metrika \
-e YANDEX_METRIKA_TOKEN=ваш_токен \
-- uvx mcp-server-yandex-metrika
Способ 2: через pip
pip install mcp-server-yandex-metrika
claude mcp add yandex-metrika \
-e YANDEX_METRIKA_TOKEN=ваш_токен \
-- mcp-server-yandex-metrika
Для удаления:
claude mcp remove yandex-metrika
Подключение к Claude Desktop
Добавьте в конфигурационный файл:
| Клиент | ОС | Путь к файлу |
|---|---|---|
| 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-metrika": {
"command": "uvx",
"args": ["mcp-server-yandex-metrika"],
"env": {
"YANDEX_METRIKA_TOKEN": "ваш_токен"
}
}
}
}
Через pip (после pip install mcp-server-yandex-metrika):
{
"mcpServers": {
"yandex-metrika": {
"command": "python",
"args": ["-m", "mcp_server_yandex_metrika"],
"env": {
"YANDEX_METRIKA_TOKEN": "ваш_токен"
}
}
}
}
Подключение через --mcp-config
Подключает сервер только на время одной сессии Claude, не сохраняя в настройки. Токен хранится в отдельном .env.mcp файле, а не в конфиге Claude.
Из JSON-строки:
claude --mcp-config '{"yandex-metrika":{"command":"bash","args":["-c","source ~/.env.mcp && exec uvx mcp-server-yandex-metrika"]}}'
Из файла:
claude --mcp-config ~/mcp-servers.json
Пример ~/mcp-servers.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)
pip install mcp-server-yandex-metrika
Переменная окружения YANDEX_METRIKA_TOKEN должна быть установлена:
export YANDEX_METRIKA_TOKEN=ваш_токен
Или через файл:
mcp-server-yandex-metrika --env /path/to/.env counters
Формат файла — KEY=VALUE, по одной переменной на строку, #-комментарии.
Использование (CLI)
Без аргументов запускается MCP-сервер, с командой — CLI. Все команды выводят JSON.
# Версия
mcp-server-yandex-metrika --version
# Справка
mcp-server-yandex-metrika --help
mcp-server-yandex-metrika <command> --help
Примеры команд
# Статистика визитов
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.
Установка (библиотеки)
pip install mcp-server-yandex-metrika
Использование в своих программах
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 можно указать файл:
mcp-server-yandex-metrika --env /path/to/.env
Формат файла — KEY=VALUE, по одной переменной на строку, #-комментарии.
Работает в обоих режимах: MCP-сервер и CLI:
# 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 при превышении лимитов
Разработка
pip install -e ".[test]"
ruff check src/ tests/
pytest tests/ -v
Лицензия
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。