MCP server for Yandex Metrika analytics
Project description
ya-metrics-mcp
Model Context Protocol (MCP) server for Yandex Metrika analytics. Exposes 31 analytics tools to your AI assistant — traffic, content, demographics, geographic, conversion, e-commerce data, and hierarchical drill-down reports.
Quick Start
1. Get Your OAuth Token
Go to oauth.yandex.ru/client/new and create an app with Yandex.Metrika read access. Copy the token.
2. Configure Your IDE
Add to your Claude Desktop / Cursor MCP configuration:
{
"mcpServers": {
"ya-metrics": {
"command": "uvx",
"args": ["ya-metrics-mcp"],
"env": {
"YANDEX_API_KEY": "your_oauth_token"
}
}
}
}
Running from source? Use
uv runinstead:{ "mcpServers": { "ya-metrics": { "command": "uv", "args": ["run", "--directory", "/path/to/ya-metrics-mcp", "ya-metrics-mcp"], "env": { "YANDEX_API_KEY": "your_oauth_token" } } } }
3. Start Using
Ask your AI assistant to:
- "List my Metrika counters" — start here to find your counter ID
- "Show me visits for counter 12345678 over the last 30 days"
- "What are the top traffic sources for my site?"
- "Compare mobile vs desktop users this month"
- "Show conversion rates for goals 1 and 2"
- "Drill down into traffic by country → city"
- "Compare organic vs direct traffic segments"
Tools
31 tools across 7 domains:
Account & Counters
| Tool | Description |
|---|---|
list_counters |
List all counters on the account (use this first to find counter IDs) |
list_goals |
List conversion goals for a counter (call before get_goals_conversion) |
get_account_info |
Counter metadata: name, site, timezone, permissions |
Traffic & Sources
| Tool | Description |
|---|---|
get_visits |
Visit statistics with date range (defaults to 7 days) |
sources_summary |
Traffic sources overview |
sources_search_phrases |
Top search phrases |
get_traffic_sources_types |
Breakdown by source type (organic, direct, referral) |
get_search_engines_data |
Sessions by search engine, with robot/new-user filters |
get_new_users_by_source |
New user acquisition by traffic source (defaults to 30 days) |
Content Analytics
Requires Yandex Zen/Turbo publisher integration on the counter.
| Tool | Description |
|---|---|
get_content_analytics_sources |
Sources driving readers to articles |
get_content_analytics_categories |
Stats by content category |
get_content_analytics_authors |
Author performance |
get_content_analytics_topics |
Performance by topic |
get_content_analytics_articles |
Top articles by views |
Demographics & Devices
| Tool | Description |
|---|---|
get_user_demographics |
Age, gender, device breakdown |
get_device_analysis |
Browser and OS analysis |
get_mobile_vs_desktop |
Mobile vs desktop comparison |
get_page_depth_analysis |
Sessions by page depth |
Geographic
| Tool | Description |
|---|---|
get_regional_data |
Traffic by city (all cities by default, or filter by name) |
get_geographical_organic_traffic |
Organic traffic by country and city |
Performance & Conversion
| Tool | Description |
|---|---|
get_page_performance |
Bounce rate and duration by entry URL path |
get_goals_conversion |
Conversion rates for specified goals |
get_organic_search_performance |
SEO performance by query and engine |
get_conversion_rate_by_source_and_landing |
Conversion by source × landing page URL |
Advanced & Drill-Down
| Tool | Description |
|---|---|
get_ecommerce_performance |
E-commerce purchases by product name (requires e-commerce tracking) |
get_data_by_time |
Time-series data with custom grouping |
get_yandex_direct_experiment |
A/B experiment bounce rates |
get_browsers_report |
Browser usage report |
get_drilldown |
Single branch of a hierarchical tree-view report |
compare_segments |
Compare two user segments side by side |
compare_segments_drilldown |
Segment comparison as a hierarchical tree-view |
Response Size Control
Many tools accept a limit parameter to cap the number of rows returned. This is useful when working with AI assistants to keep responses within context limits. Tools with limit support: sources_summary, sources_search_phrases, get_device_analysis, get_page_performance, get_organic_search_performance, get_conversion_rate_by_source_and_landing, get_regional_data, get_geographical_organic_traffic, get_drilldown, compare_segments, compare_segments_drilldown.
Configuration
All configuration via environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
YANDEX_API_KEY |
✓ | — | Yandex OAuth token |
YANDEX_TIMEOUT |
30 |
Request timeout in seconds | |
YANDEX_RETRIES |
3 |
Retry attempts for 5xx errors | |
YANDEX_RETRY_DELAY |
1.0 |
Base delay between retries (seconds) | |
READ_ONLY_MODE |
false |
Restrict to read-only tools | |
ENABLED_TOOLS |
all | Comma-separated list of allowed tools |
Copy .env.example to .env and fill in your values.
CLI
# stdio (default, for MCP clients)
ya-metrics-mcp
# HTTP transport
ya-metrics-mcp --transport streamable-http --port 8000
# With verbose logging
ya-metrics-mcp -vv
# Load custom .env file
ya-metrics-mcp --env-file /path/to/.env
Installation
From PyPI (once published):
uvx ya-metrics-mcp
From source:
git clone https://github.com/mrkhachaturov/ya-metrics-mcp
cd ya-metrics-mcp
uv sync
uv run ya-metrics-mcp
Development
# Install with dev dependencies
uv sync --extra dev
# Run tests
uv run pytest
# Lint
uv run ruff check src/
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ya_metrics_mcp-0.1.0.tar.gz.
File metadata
- Download URL: ya_metrics_mcp-0.1.0.tar.gz
- Upload date:
- Size: 115.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baff87b8af3927a9d3b8f1f5aba42c7c72609683126962f6e3fe2e237cd59a1c
|
|
| MD5 |
35e77db83f0dd39fb1c45ed82bc50051
|
|
| BLAKE2b-256 |
aa04702b06fd6587d26399ceded6fcc249154a584da077c7be9ac3ecb88caf17
|
File details
Details for the file ya_metrics_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ya_metrics_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63105ec612d1975ae977c7af17797347635d8e58a04558aa4ef74a83cd48f487
|
|
| MD5 |
44a3b686e068210859ca7c3473362e32
|
|
| BLAKE2b-256 |
6c069d6dc17873f23d163c88a4cb9eb9aac5684e93f71c65cb2e03a86f0b1f41
|