A side-by-side look at the Yandex Metrica MCP and Yandex Webmaster MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Yandex Metrica MCP for marketing work as a local process; choose Yandex Webmaster MCP for marketing as a local process. You can also run both side by side in one mcpServers block.
YANDEX_METRIKA_COUNTER_ID.login, submit_code, get_metadata.YANDEX_WEBMASTER_TOKEN, YANDEX_OAUTH_CLIENT_ID, YANDEX_OAUTH_CLIENT_SECRET.login, submit_code, get_hosts.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 64/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | YANDEX_METRIKA_COUNTER_ID | YANDEX_WEBMASTER_TOKENYANDEX_OAUTH_CLIENT_IDYANDEX_OAUTH_CLIENT_SECRET |
| Verified owner | Community listing | Community listing |
| GitHub stars | 15 | 4 |
| Directory activity | 2 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 12 | 10 |
| Full listing | View Yandex Metrica MCP | View Yandex Webmaster MCP |
loginSign in to Yandex from here. Opens your browser to approve access; the code returns automatically over a local redirect, so this usually finishes in one call. If the local port is unavailable it returns a URL to approve and you then call submit_code with the code Yandex shows. Run this once (the token lasts ~1 year); needed before the data tools if you are not signed in yet.submit_codeComplete a copy-paste sign-in started by login: pass the code Yandex showed you after you approved access.get_metadataDiscovery tool. Lists the counters available to your token plus a curated catalog of common dimensions and metrics (Metrica has no enumeration API), attribution options and Logs API fields. Call this before run_report or logs_request to use real field names and to find a counterId. For a counter's own goals, segments, filters or grants, use describe_counter. Read-only.describe_counterRead a single counter's configuration — settings, goals, segments, filters, operations and access grants — choosing sections with `include`. The goals section returns the goal ids needed to build conversion metrics (ym:s:goal<id>reaches / conversionRate) in run_report, so call this with include=["goals"] before any conversion question. To list the account's counters, use get_metadata. Read-only.run_reportQuery a Yandex Metrica table report (/stat/v1/data): one or more metrics grouped by dimensions over a date range, with optional filter and sort. Read-only. Use get_metadata first to discover valid metric/dimension ids and the account counters.run_comparisonCompare two segments/periods (A vs B) for the same metrics and dimensions (/stat/v1/data/comparison). Returns per-metric values for A and B plus the absolute and percentage delta, computed server-side: delta = B − A (segment A is the baseline), delta_pct = (B − A) / A × 100. Defaults to last 7 days (B) vs the prior 7 days (A), so a positive delta means growth. Read-only.run_drilldownReturn one level of a hierarchical (tree) report (/stat/v1/data/drilldown). Each row has an "expandable" flag; pass parentId with the path of dimension keys to expand deeper. Requires dimensions. Read-only.run_timeseriesReturn metrics split into a time series (/stat/v1/data/bytime): each metric comes back as an array of values, one per interval (day/week/month/…) over the date range. Use for trends and charts. Optionally group by dimensions (topKeys rows). Read-only.logs_requestCreate a Yandex Metrica Logs API request for RAW, un-sampled rows (source="visits" sessions or "hits" events) over a date range. Checks feasibility, then queues preparation (takes minutes). Returns a request_id to poll with logs_status; then logs_download, then logs_clean. Discover field ids with get_metadata. Not read-only: preparing data consumes the counter storage quota.logs_statusInspect a Logs API request by request_id (status, parts, size, next step), or omit request_id to list all of the counter's log requests and current storage-quota usage. Poll this after logs_request until status="processed". Read-only.logs_downloadDownload prepared log data for a request_id (must be status="processed"; check logs_status). Default mode "sample" returns up to maxRows parsed rows inline — cheap and bounded. Mode "file" streams the FULL export to a file and returns its path plus a small preview; the raw content (potentially millions of rows) is never loaded into context. Read-only.logs_cleanFree the counter storage quota by cleaning a finished (processed) log request, or cancel one still being prepared. Dispatches by current status. Destructive: cleaned data must be requested again to download later.loginSign in to Yandex from here. Opens your browser to approve access; the code returns automatically over a local redirect, so this usually finishes in one call. If the local port is unavailable it returns a URL to approve and you then call submit_code with the code Yandex shows. Run this once (the token lasts ~1 year); needed before the data tools if you are not signed in yet.submit_codeComplete a copy-paste sign-in started by login: pass the code Yandex showed you after you approved access.get_hostsDiscovery tool: list the sites (hosts) available to your Yandex Webmaster token, each with its host_id, URL and verification state. host_id is what every other tool needs to identify a site. Optionally pass `hostId` to also fetch that host summary (SQI, indexed/excluded page counts, site problems). Read-only. Call this first.search_queriesSearch-query analytics for a host from Yandex Search: impressions (TOTAL_SHOWS), clicks (TOTAL_CLICKS), average show/click position. Read-only.
• report="top" (default): ranked list of the queries bringing the most traffic, ordered by orderBy. Use this to see which phrases people search.
• report="trend": a time series. Pass queryId (from a prior "top" call) for one query's history over time, or omit it for the site's aggregate trend.
Tip: cross-reference these queries/landing pages with Yandex Metrica (bounce rate, conversions) to find high-impression, low-conversion phrases worth optimizing.get_indexingHow Yandex crawls and indexes the host. Read-only. Pick a report:
• report="history" (default): time series of crawled pages grouped by HTTP status class (HTTP_2XX/3XX/4XX/5XX/OTHER) — spot spikes of errors the crawler hits.
• report="crawled": example crawled URLs with their HTTP code and crawl date.
• report="in_search": example URLs currently present in Yandex search, with title.get_diagnosticsYandex Webmaster site diagnostics: problems detected on the host (e.g. DNS errors, slow response, robots.txt issues, 4xx alerts), each with a severity (FATAL, CRITICAL, POSSIBLE_PROBLEM, RECOMMENDATION). By default returns only ACTIVE problems (state=PRESENT), worst first. Set includeAbsent=true to also list resolved/absent problem types. Read-only.list_sitemapsList the Sitemap files Yandex knows for the host, each with its URL, type, last access date, number of URLs and error count, and where it was discovered (robots.txt, webmaster, etc.). Use it to check a sitemap is being read and is error-free. Read-only.get_external_linksInbound (external) links pointing to the host — the backlinks Yandex knows. Read-only.
• report="samples" (default): example links with source page, target URL and discovery date, plus the total count available.
• report="history": time series of the total external-link count over time.recrawl_statusRead-only view of the host recrawl activity. With no taskId: the remaining daily quota plus the most recent recrawl tasks and their state (IN_PROGRESS, DONE, FAILED). Pass taskId (from recrawl_submit) to check one task. Use before recrawl_submit to confirm quota is available.recrawl_submitAsk Yandex to recrawl a specific page of the host sooner. NOT read-only: each call consumes one unit of the limited daily recrawl quota (check it with recrawl_status). The URL must belong to the host and be a full absolute URL. Returns the task_id and the remaining quota. Track progress with recrawl_status using the returned task_id.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"yandex-metrica-mcp": {
"command": "npx",
"args": [
"-y",
"yandex-metrica-mcp"
],
"env": {
"YANDEX_METRIKA_COUNTER_ID": "YOUR_YANDEX_METRIKA_COUNTER_ID_HERE"
}
}
}
}
{
"mcpServers": {
"yandex-webmaster-mcp": {
"command": "npx",
"args": [
"-y",
"@boxlab/yandex-webmaster-mcp"
],
"env": {
"YANDEX_WEBMASTER_TOKEN": "YOUR_YANDEX_WEBMASTER_TOKEN_HERE",
"YANDEX_OAUTH_CLIENT_ID": "YOUR_YANDEX_OAUTH_CLIENT_ID_HERE",
"YANDEX_OAUTH_CLIENT_SECRET": "YOUR_YANDEX_OAUTH_CLIENT_SECRET_HERE"
}
}
}
}