{
  "markdown": "# yandex-metrika-mcp\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)\n[![FastMCP](https://img.shields.io/badge/FastMCP-3.x-orange.svg)](https://github.com/jlowin/fastmcp)\n[![MCP](https://img.shields.io/badge/MCP-compatible-brightgreen.svg)](https://modelcontextprotocol.io)\n\nQuery **Yandex Metrika** analytics in plain language, right inside Claude. \"How many visits this week?\", \"Top traffic sources for June\", \"Mobile share today?\" — the assistant queries Metrika and answers directly. No dashboards, no SQL, no API keys to manage.\n\nOpen-source by [aiaiai](https://getaiaiai.ru) — we build what we teach.\n\n---\n\nЗадавай вопросы по **Яндекс.Метрике** обычным языком прямо в Claude. «Сколько визитов за неделю?», «топ источников за июнь», «доля мобильных?» — ассистент сам сходит в Метрику и ответит. Без дашбордов.\n\n![Спросил про географию аудитории обычным языком — агент сам построил карту из живой Яндекс.Метрики](assets/demo-map.png)\n\n## Works with\n\nClaude.ai &nbsp;·&nbsp; Claude Code &nbsp;·&nbsp; Claude Desktop &nbsp;·&nbsp; Cursor &nbsp;·&nbsp; any MCP-compatible client\n\n## Connect in one minute (hosted)\n\nNo installation needed — connect to the hosted service.\n\n**Claude.ai** (Settings → Connectors → Add):\n```\nhttps://mcp.getaiaiai.ru/yandex-metrika\n```\nClick **Connect** → sign in with Yandex → allow access.\n\n**Claude Code CLI:**\n```bash\nclaude mcp add --transport http yandex-metrika https://mcp.getaiaiai.ru/yandex-metrika/\nclaude mcp login yandex-metrika\n```\nA browser window opens → sign in with Yandex → done. On headless/SSH: add `--no-browser` to `mcp login` and paste the redirect URL when prompted.\n\n**Claude Desktop / Cursor** — add to `mcpServers`:\n```json\n{\n  \"mcpServers\": {\n    \"yandex-metrika\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.getaiaiai.ru/yandex-metrika/\"\n    }\n  }\n}\n```\n\nNo app registration, no tokens to manage. **Read-only** — the service never writes to your Metrika account.\n\n<details>\n<summary>Подключение на русском</summary>\n\n**Claude.ai** (Настройки → Коннекторы → Добавить):\n```\nhttps://mcp.getaiaiai.ru/yandex-metrika\n```\nНажмите **Подключить** → войдите через Яндекс → разрешите доступ.\n\n**Claude Code CLI:**\n```bash\nclaude mcp add --transport http yandex-metrika https://mcp.getaiaiai.ru/yandex-metrika/\nclaude mcp login yandex-metrika\n```\nОткроется браузер → войти через Яндекс → готово.\n\n</details>\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_counters` | List all Yandex Metrika counters available to the token (id, name, site) |\n| `query` | Run a Reporting API query — visits, users, pageviews, bounce rate, traffic sources, devices, geography, UTMs, and more |\n\n### `query` parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `counter_id` | required | Counter ID from `list_counters` |\n| `metrics` | required | Comma-separated metrics, e.g. `ym:s:visits,ym:s:users` |\n| `dimensions` | — | Group-by fields: `ym:s:date`, `ym:s:lastTrafficSource`, `ym:s:deviceCategory`, … |\n| `date1` / `date2` | `7daysAgo` / `today` | Date range: `YYYY-MM-DD` or relative (`today`, `yesterday`, `NdaysAgo`) |\n| `filters` | — | Filter expression, e.g. `ym:s:deviceCategory=='mobile'` |\n| `sort` | — | Sort field; prefix `-` for descending, e.g. `-ym:s:visits` |\n| `limit` | `100` | Max rows returned |\n\nCommon metrics: `ym:s:visits`, `ym:s:users`, `ym:s:pageviews`, `ym:s:bounceRate`, `ym:s:avgVisitDurationSeconds`, `ym:s:newUsers`\n\nCommon dimensions: `ym:s:date`, `ym:s:lastTrafficSource`, `ym:s:startURL`, `ym:s:deviceCategory`, `ym:s:regionCountry`, `ym:s:lastsourceUTMSource`\n\n---\n\n## Self-host with your own token\n\n<details>\n<summary>For developers — run the engine locally with full control over your data.</summary>\n\nRequires Python 3.10+ and [uv](https://docs.astral.sh/uv/).\n\n```bash\ngit clone https://github.com/expremiental/yandex-metrika-mcp.git\ncd yandex-metrika-mcp\nuv sync\n```\n\n**Get a token.** Go to [oauth.yandex.ru](https://oauth.yandex.ru), create an app (platform: \"Web services\"), enable **Yandex Metrika → Read statistics** (`metrika:read`), then get an OAuth token:\n\n```bash\nexport YANDEX_METRIKA_TOKEN=\"<your-token>\"\n```\n\n**Connect** (Claude Desktop / Cursor — add to `mcpServers`):\n\n```json\n{\n  \"mcpServers\": {\n    \"yandex-metrika\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"yandex-metrika-mcp\"],\n      \"env\": { \"YANDEX_METRIKA_TOKEN\": \"<your-token>\" }\n    }\n  }\n}\n```\n\n**Run over HTTP:**\n```bash\nMCP_TRANSPORT=http PORT=8000 uv run yandex-metrika-mcp\n# endpoint: http://localhost:8000/mcp\n```\n\n**Embed in your own backend.** The engine accepts an injectable async token resolver — wrap it with your own auth:\n\n```python\nfrom yandex_metrika_mcp import build_server\n\nasync def my_token_resolver() -> str:\n    return \"<metrika:read token>\"\n\nbuild_server(token_resolver=my_token_resolver).run(transport=\"stdio\")\n```\n\nPublic API: `build_server`, `YandexMetrikaClient`, `TokenResolver`, `env_token_resolver`, `main`.\n\n</details>\n\n## License\n\n[MIT](LICENSE) · made by [aiaiai](https://getaiaiai.ru)\n",
  "bytes": 5188,
  "sha": "663e532de9ac37e08b669a76f1164177eea0de5378dec734890f15f560cc12b0",
  "repo_slug": "expremiental/yandex-metrika-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_expremiental_yandex_metrika_mc_7bba6355/readme"
}