# Yandex Metrica MCP (oci · ghcr.io/stufently/yandex-metrica-mcp)

Yandex Metrica for AI agents: counters, goals, Reporting API and Logs API export over stdio.

- Trust score: 42/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- oci · `ghcr.io/stufently/yandex-metrica-mcp`: 42/100 (this document), [markdown](https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp.md), [page](https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/stufently/yandex-metrica-mcp`
- Version: `0.2.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Build provenance not yet verified.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 72/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2213 tokens (~170/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Yandex Metrica MCP server?

Yandex Metrica MCP runs locally as a container image, launched with docker run --rm -i -e YANDEX_METRICA_TOKEN ghcr.io/stufently/yandex-metrica-mcp:0.2.3. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add stufently-yandex-metrica-mcp -- docker run --rm -i -e YANDEX_METRICA_TOKEN ghcr.io/stufently/yandex-metrica-mcp:0.2.3
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Cursor

```json
{
  "mcpServers": {
    "stufently-yandex-metrica-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "YANDEX_METRICA_TOKEN",
        "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"
      ]
    }
  }
}
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### VS Code

```json
{
  "servers": {
    "stufently-yandex-metrica-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "YANDEX_METRICA_TOKEN",
        "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"
      ]
    }
  }
}
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Codex

```bash
codex mcp add stufently-yandex-metrica-mcp -- docker run --rm -i -e YANDEX_METRICA_TOKEN ghcr.io/stufently/yandex-metrica-mcp:0.2.3
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "stufently-yandex-metrica-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "-e",
        "YANDEX_METRICA_TOKEN",
        "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"
      ],
      "enabled": true
    }
  }
}
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Hermes

```yaml
mcp_servers:
  stufently-yandex-metrica-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "-e", "YANDEX_METRICA_TOKEN", "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"]
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Netclaw

```json
{
  "McpServers": {
    "stufently-yandex-metrica-mcp": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "-e",
        "YANDEX_METRICA_TOKEN",
        "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"
      ]
    }
  }
}
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Other

```json
{
  "mcpServers": {
    "stufently-yandex-metrica-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "YANDEX_METRICA_TOKEN",
        "ghcr.io/stufently/yandex-metrica-mcp:0.2.3"
      ]
    }
  }
}
```

This image reads YANDEX_METRICA_TOKEN. Set it in your client's env block for this server; docker run -e passes it through to the container.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 42, 0)

- [security regression] Provenance: fail → unverified

### 2026-10-16 (score 42, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-15 (score 41, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-14 (score 41, +31)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: 100
- [functional] First check of Tool coverage: 100
- [functional] Package version: 0.2.2 → 0.2.3

### 2026-10-13 (score 10, 0)

- [security regression] Provenance: unverified → fail
- [security] Stability: Stability not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to compare.
- [security] Tool safety: Tool safety not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool text to scan.
- [functional] Schema quality: Schema quality not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to assess.
- [functional] Capabilities: Protocol version not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we never saw its MCP handshake.
- [functional] Tool coverage: Tool coverage not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool definitions to assess.

### 2026-10-12 (score 10)

First indexed and scored.

## MCP tools (13)

### `yandex_metrica_list_counters` (~148 tokens)

List Yandex Metrica counters the configured token can access, with each counter id, name, and site. Use when the user needs a counter id before any other query. Do not use this to read one counter's settings; call yandex_metrica_get_counter once the id is known.

Input parameters:

- `page` (integer): Page number (1-based)
- `per_page` (integer): Items per page (max 1000)
- `search` (string): Search by counter name or site URL
- `sort` (string): Sort order
- `status` (string): Filter by counter status
- `type` (string): Filter by counter type

### `yandex_metrica_get_counter` (~91 tokens)

Get one Yandex Metrica counter by id, including its settings, status, owner, timezone, and site. Use when the user already has a counter id and wants that counter's configuration. Do not use this to discover unknown ids; call yandex_metrica_list_counters instead.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID

### `yandex_metrica_list_goals` (~91 tokens)

List conversion goals configured on one Yandex Metrica counter, including each goal id and type. Use when the user asks which goals exist on a counter before building a report. Do not use this for conversion counts or rates; call yandex_metrica_get_report with the goal metrics.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID

### `yandex_metrica_get_report` (~555 tokens)

Run a Yandex Metrica Reporting API query and return aggregated statistics such as visits, users, bounce rate, and traffic sources. Use when the user wants a summary, a breakdown, or a comparison of two periods via date1_b and date2_b. Do not use this for row-level visits or pageviews; call yandex_metrica_evaluate_logs_request and the other Logs API tools. Metrics use the ym:s: prefix for visits and ym:pv: for hits.

Input parameters:

- `accuracy` (string): Sampling accuracy (default: medium)
- `attribution` (string): Attribution model for traffic source metrics. 'lastsign' = last significant source; 'automatic' = auto-attribution.
- `counter_ids` (array, required): One or more counter IDs to query
- `currency` (string): Currency code (ISO 4217), e.g. 'RUB'
- `date1` (string): Start date (YYYY-MM-DD or 'today', 'yesterday', '7daysAgo'). Default: 7daysAgo
- `date1_b` (string): Comparison segment B start date. When provided with date2_b, uses the comparison endpoint (/stat/v1/data/comparison). date1/date2 become segment A. Each row returns two sets of metrics.
- `date2` (string): End date (YYYY-MM-DD or relative). Default: today
- `date2_b` (string): Comparison segment B end date. Must be provided together with date1_b.
- `dimensions` (array): Dimensions for grouping, e.g. ['ym:s:date', 'ym:s:regionCityName']
- `filters` (string): Filter expression, e.g. "ym:s:trafficSourceName=='Organic Search'"
- `filters_a` (string): Segmentation filter for segment A only (comparison mode)
- `filters_b` (string): Segmentation filter for segment B only (comparison mode)
- `include_undefined` (boolean): Include rows with undefined dimension values
- `lang` (string): Language for dimension value names (default: ru)
- `limit` (integer): Rows to return (default 100)
- `metrics` (array, required): Metrics to include, e.g. ['ym:s:visits', 'ym:s:pageviews', 'ym:s:bounceRate']. Max 20.
- `offset` (integer): Row offset for pagination (1-based)
- `preset` (string): Preset report name (e.g. 'sources_summary'). Overrides metrics/dimensions.
- `sort` (array): Sort fields. Prefix with '-' for descending, e.g. ['-ym:s:visits', 'ym:s:date']

### `yandex_metrica_evaluate_logs_request` (~219 tokens)

Check whether a Yandex Metrica Logs API export can be created for the given dates, source, and fields, without creating a request. Use when the user wants to know if a raw export is possible and how many days fit the quota. Do not use this to start the export; call yandex_metrica_create_logs_request after the check succeeds.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `date1` (string, required): Start date YYYY-MM-DD
- `date2` (string, required): End date YYYY-MM-DD (cannot be current day)
- `fields` (array, required): Fields to export. For visits: ['ym:s:visitID','ym:s:date','ym:s:clientID',...]. For hits: ['ym:pv:watchID','ym:pv:date','ym:pv:URL',...]
- `source` (string, required): 'hits' for pageview-level data, 'visits' for session-level data

### `yandex_metrica_create_logs_request` (~244 tokens)

Create an asynchronous Yandex Metrica Logs API export of raw visits or hits for one counter and date range. Use when the user wants row-level data and yandex_metrica_evaluate_logs_request has shown the export is possible. Do not use this only to test feasibility, and do not use it for aggregated totals; call yandex_metrica_get_report for those. Poll yandex_metrica_get_logs_request until the status is processed. date2 cannot be today. Fields use the ym:s: prefix for visits and ym:pv: for hits.

Input parameters:

- `attribution` (string): Attribution model for traffic source fields. Default: lastsign.
- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `date1` (string, required): Start date YYYY-MM-DD
- `date2` (string, required): End date YYYY-MM-DD (cannot be current day)
- `fields` (array, required): Fields to export. See Yandex Metrica Logs API documentation for full field lists.
- `source` (string, required): 'hits' for pageview-level data, 'visits' for session-level data

### `yandex_metrica_list_logs_requests` (~94 tokens)

List every Logs API export request on a Yandex Metrica counter, in any status from created through cleaned. Use when the user wants to see existing exports or find a request id. Do not use this to poll a single request; call yandex_metrica_get_logs_request with that request id.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID

### `yandex_metrica_get_logs_request` (~123 tokens)

Get the status and prepared parts of one Yandex Metrica Logs API export request. Use when the user is waiting for a created export to reach processed before downloading it. Do not use this to fetch the TSV rows; call yandex_metrica_download_logs_part once the status is processed. Do not use it to list every request; call yandex_metrica_list_logs_requests.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `request_id` (integer, required): Logs API request ID

### `yandex_metrica_download_logs_part` (~197 tokens)

Download one processed part of a Yandex Metrica Logs API export as TSV text. Use when the user wants the rows of a request whose status is already processed. Do not use this to check whether the export is ready; call yandex_metrica_get_logs_request first. Preview mode returns about the first 50KB; full mode is only for small parts under 10MB. Part numbers come from the parts list returned by yandex_metrica_get_logs_request and start at 0.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `mode` (string): Output mode. 'preview' returns first ~50KB with metadata (safe default). 'full' returns entire content — may be very large for big exports.
- `part_number` (integer, required): Part number (0-based)
- `request_id` (integer, required): Logs API request ID

### `yandex_metrica_cancel_logs_request` (~106 tokens)

Cancel a Yandex Metrica Logs API export that is still pending, in status created or awaiting_retry. Use when the user wants to stop an export that has not been processed yet. Do not use this on a processed request; call yandex_metrica_clean_logs_request to delete the prepared files.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `request_id` (integer, required): Logs API request ID

### `yandex_metrica_clean_logs_request` (~103 tokens)

Delete the prepared files of a processed Yandex Metrica Logs API export and free the export quota. Use when the user has finished downloading and the request status is processed. Do not use this to stop a request that is still pending; call yandex_metrica_cancel_logs_request instead.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID
- `request_id` (integer, required): Logs API request ID

### `yandex_metrica_create_counter` (~152 tokens)

Create a new Yandex Metrica counter for a site and return its id and tracking code. Use when the user asks to add a website or start tracking a new property. Do not use this to find a counter that already exists; call yandex_metrica_list_counters or yandex_metrica_get_counter.

Input parameters:

- `gdpr_agreement_accepted` (boolean): GDPR agreement accepted (required for EU sites)
- `mirrors` (array): Mirror domains
- `name` (string, required): Counter name
- `site` (string, required): Site domain (e.g. "example.com")
- `time_zone_name` (string): Timezone (e.g. "Europe/Moscow")

### `yandex_metrica_delete_counter` (~90 tokens)

Delete one Yandex Metrica counter; it stops collecting data and its statistics are no longer available through the API. Use when the user explicitly asks to remove a counter and has confirmed the deletion. Do not use this to inspect a counter; call yandex_metrica_get_counter instead.

Input parameters:

- `counter_id` (integer, required): Yandex Metrica counter (tag) ID

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp#diagnostics

## Score history

- 2026-10-18: 42
- 2026-10-17: 42
- 2026-10-16: 42
- 2026-10-15: 41
- 2026-10-14: 41
- 2026-10-13: 10
- 2026-10-12: 10

## Common questions

### What is the Yandex Metrica MCP server?

Yandex Metrica MCP is listed in the public MCP registry as io.github.stufently/yandex-metrica-mcp. Yandex Metrica for AI agents: counters, goals, Reporting API and Logs API export over stdio. This page covers its container image (ghcr.io/stufently/yandex-metrica-mcp).

### Is the Yandex Metrica MCP server safe to use?

Yandex Metrica MCP scores 42 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Yandex Metrica MCP server expose?

Yandex Metrica MCP exposes 13 tools: yandex_metrica_list_counters, yandex_metrica_get_counter, yandex_metrica_list_goals, yandex_metrica_get_report, yandex_metrica_evaluate_logs_request, and 8 more. Their descriptions and schemas cost roughly 2,213 tokens of context every time the server is loaded.

### Is the Yandex Metrica MCP server still maintained?

Yandex Metrica MCP is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Yandex Metrica MCP server under?

Yandex Metrica MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- GitHub Container Registry: https://ghcr.io/stufently/yandex-metrica-mcp
- Repository: https://github.com/stufently/yandex-metrica-mcp
- Changelog RSS feed: https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp.json
- HTML version of this page: https://verifymcp.io/servers/stufently-yandex-metrica-mcp/ghcr-io-stufently-yandex-metrica-mcp
