内容
<!-- mcp-name: io.github.dontsovcmc/yandex-metrika -->
# Yandex Metrika
MCP
[](https://github.com/dontsovcmc/mcp-server-yandex-metrika)
MCP、 CLI
[ API ](https://yandex.com/dev/metrika).
- **MCP** —
- **CLI** —
- **Pydantic** —
##
- [](#)
- [MCP](#mcp)
- [](#)
- [Claude Code](#claude-code)
- [Claude Desktop](#claude-desktop)
- [--mcp-config](#--mcp-config)
- [MCP](#mcp-1)
- [CLI](#cli)
- [](#)
- [](#)
- [](#)
- [Pydantic](#pydantic)
- [](#)
- [](#)
- [](#)
- [API](#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` |
| `ym_goal_update` | — |
| `ym_goal_delete` | `goal-delete` |
###
| | CLI |
|------------|-----|----------|
| `ym_filters` | `filters` |
| `ym_filter` | — |
| `ym_filter_create` | `filter-create` |
| `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` |
| `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` |
| `ym_log_request_evaluate` | `log-request-evaluate` |
| `ym_log_request_clean` | — |
| `ym_log_request_cancel` | — |
| `ym_log_request_download` | `log-download` |
###
| | 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.
1. [oauth.yandex.com](https://oauth.yandex.com/client/new)
2. : `metrika:read`, `metrika:write`
3. `https://oauth.yandex.com/authorize?response_type=token&client_id=<client_id>`
#### 2.
### Claude Code
**uvx**
> [uv](https://docs.astral.sh/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
```
**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 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:**
```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
```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.
*« »* `ym_counters`.
### MCP
- « » → `ym_stat_data`
- « » → `ym_goal_create`
- « 2024» → `ym_log_request_create`
## 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
```
###
CLI
```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
###
```bash
pip install mcp-server-yandex-metrika
```
###
```python
from mcp_server_yandex_metrika.models import CounterBrief, Goal
#
data = {"id": 12345678, "name": "", "status": "Active"}
counter = CounterBrief.model_validate(data)
print(counter.name) #
#
goal = Goal(name="", type="url")
print(goal.model_dump_json())
```
[`models.py`](src/mcp_server_yandex_metrika/models.py)
##
| | | |
|------------|:------------:|:------------:|----------|
| `YANDEX_METRIKA_TOKEN` | | — |
| `METRIKA_TIMEOUT` | | `30` |
| `METRIKA_FILE_TIMEOUT` | | `60` |
###
```bash
mcp-server-yandex-metrika --env /path/to/.env
```
```bash
#
claude mcp add yandex-metrika -- mcp-server-yandex-metrika --env ~/.config/metrika.env
#
mcp-server-yandex-metrika --env ~/.config/metrika.env counters
```
## API
- 30 /
- 5000 /
- 3
- 200 /5 / `/stat/v1/data/`
- HTTP 420
##
```bash
pip install -e ".[test]"
ruff check src/ tests/
pytest tests/ -v
```
##
MIT