# SEO Tools: Google Analytics 4 (npm · seo-tools-mcp-ga4)

Google Analytics 4: reports, traffic sources, landing pages, events, realtime (read-only).

- Trust score: 78/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `seo-tools-mcp-ga4`: 78/100 (this document), [markdown](https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4.md), [page](https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4)

## Channel facts

- Registry: `npm`
- Package: `seo-tools-mcp-ga4`
- Version: `1.8.0`
- 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-09-20.

- **Supply Chain Security**: 89/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects uuid 9.0.1, reached via google-auth-library > gaxios > uuid. A fixed version is available.
  - No install/post-install scripts declared.
  - 40 of 118 dependencies flagged as unhealthy (1 deprecated).
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5363 tokens (~282/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 93/100
  - Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 93% 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.
  - We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 19 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.

## Install

### How do I install the SEO Tools: Google Analytics 4 MCP server?

SEO Tools: Google Analytics 4 runs locally as an npm package, launched with npx -y seo-tools-mcp-ga4. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add antohins-seo-tools-mcp-ga4 -- npx -y seo-tools-mcp-ga4
```

### Cursor

```json
{
  "mcpServers": {
    "antohins-seo-tools-mcp-ga4": {
      "command": "npx",
      "args": [
        "-y",
        "seo-tools-mcp-ga4"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "antohins-seo-tools-mcp-ga4": {
      "command": "npx",
      "args": [
        "-y",
        "seo-tools-mcp-ga4"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add antohins-seo-tools-mcp-ga4 -- npx -y seo-tools-mcp-ga4
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "antohins-seo-tools-mcp-ga4": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "seo-tools-mcp-ga4"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add antohins-seo-tools-mcp-ga4 --command npx --arg -y --arg seo-tools-mcp-ga4
```

### Hermes

```yaml
mcp_servers:
  antohins-seo-tools-mcp-ga4:
    command: "npx"
    args: ["-y", "seo-tools-mcp-ga4"]
```

### Netclaw

```json
{
  "McpServers": {
    "antohins-seo-tools-mcp-ga4": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "seo-tools-mcp-ga4"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add antohins-seo-tools-mcp-ga4 -t stdio -c npx -a -y seo-tools-mcp-ga4
```

### Other

```json
{
  "mcpServers": {
    "antohins-seo-tools-mcp-ga4": {
      "command": "npx",
      "args": [
        "-y",
        "seo-tools-mcp-ga4"
      ]
    }
  }
}
```

## 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-09-20 (score 78, +1)

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

### 2026-09-18 (score 77, +1)

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

### 2026-09-15 (score 76, −3)

- [functional] Stability: pass → 0.77

### 2026-09-14 (score 79, +1)

- [security] Stability: 0.97 → pass

### 2026-09-12 (score 78, +1)

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

### 2026-09-10 (score 77, +1)

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

### 2026-09-08 (score 76, −3)

- [functional] Stability: pass → 0.80

### 2026-09-07 (score 79, +1)

- [security] Stability: 0.97 → pass

## MCP tools (19)

### `ga4_auth_status` (~74 tokens)

GA4: auth status

Статус авторизации ga4: какие ключи заданы (маскированно), каких не хватает, как их получить. ВЫЗЫВАТЬ ПЕРВЫМ в начале работы с ga4. Если чего-то нет — запросить значения у пользователя и сохранить через ga4_set_credentials.

### `ga4_set_credentials` (~240 tokens)

GA4: set credentials

Сохранить ключи ga4 в /tmp/.config/seo-tools-mcp/.env (права 600) и применить сразу, без перезапуска сервера. Передавать только обновляемые поля. account — сохранить в именованный профиль (мультиаккаунт). Значения даёт пользователь; в ответе они маскируются.

Input parameters:

- `GA4_PROPERTY_ID` (string): Свойство GA4 по умолчанию (числовой id, например 123456789)
- `GA4_REFRESH_TOKEN` (string): Refresh-токен OAuth (получается через ga4_oauth_start/finish)
- `GA4_SA_JSON` (string): Путь к JSON-ключу сервис-аккаунта (альтернативный путь)
- `GOOGLE_CLIENT_ID` (string): OAuth client ID из Google Cloud (для пути OAuth)
- `GOOGLE_CLIENT_SECRET` (string): OAuth client secret из Google Cloud
- `account` (string): Имя аккаунта-профиля (мультиаккаунт): ключи сохранятся с суффиксом __<account>

### `ga4_oauth_start` (~201 tokens)

GA4: oauth start

Шаг 1 OAuth-авторизации Google: вернёт ссылку — пользователь открывает её под нужным Google-аккаунтом и разрешает read-only доступ. Полученный токен видит доступ ко ВСЕМ свойствам Google Analytics этого аккаунта. Требуется OAuth client типа Desktop app (client ID + secret из console.cloud.google.com); переданные clientId/clientSecret сохраняются (при account — в профиль GOOGLE_CLIENT_*__<account>, базовые значения не перезаписываются). После согласия Google отправит браузер на localhost — код подхватится автоматически, затем вызвать ga4_oauth_finish.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `clientId` (string): OAuth client ID (если не сохранён как GOOGLE_CLIENT_ID)
- `clientSecret` (string): OAuth client secret

### `ga4_oauth_finish` (~122 tokens)

GA4: oauth finish

Шаг 2 OAuth-авторизации Google: обменивает код на access+refresh токены и сохраняет их. Без аргументов берёт код, пойманный localhost-приёмником после ga4_oauth_start; можно передать код вручную.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `code` (string): Код из редиректа (обычно не нужен — подхватывается автоматически)

### `ga4_save_sa_json` (~128 tokens)

GA4: save sa json

Сохранить содержимое JSON-ключа сервис-аккаунта в конфиг-директорию (права 600) и прописать GA4_SA_JSON. Альтернатива, если файл уже лежит на диске: ga4_set_credentials с путём в GA4_SA_JSON.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `json` (string, required): Полное содержимое скачанного JSON-ключа сервис-аккаунта

### `ga4_list_properties` (~106 tokens)

GA4: list properties

Свойства GA4, доступные авторизации (Admin API accountSummaries, с полным обходом страниц). Возвращает { propertyId, displayName, account, accountName } — propertyId нужен всем остальным инструментам (это НЕ Measurement ID G-XXXXXXX). Заодно проверка доступов.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной

### `ga4_metadata` (~321 tokens)

GA4: metadata

Какие измерения и метрики доступны В ЭТОМ свойстве GA4 (Data API getMetadata), включая КАСТОМНЫЕ (customEvent:… / customUser:…). ВЫЗЫВАТЬ ПЕРЕД ga4_report, если не уверен в именах полей: их сотни (порядка 375 измерений и 119 метрик), и точные API-имена не угадываются. search — подстрока по имени/описанию; customOnly — только кастомные поля свойства. ВАЖНО: у метрики может быть blockedReasons — по такой отчёт вернёт ОДНИ НУЛИ без ошибки, а metricFilters по ней упадёт с 400. Поле type подсказывает, целое или дробное класть в metricFilters.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `customOnly` (boolean): Только кастомные определения свойства
- `limit` (integer): Сколько полей каждого типа вернуть
- `propertyId` (string): Числовой id свойства (по умолчанию GA4_PROPERTY_ID)
- `search` (string): Подстрока для поиска (регистронезависимо), например "landing", "revenue", "organic"
- `withDescriptions` (boolean): Включить описания полей (ответ вырастет в разы; поиск по описанию работает всегда)

### `ga4_check_compatibility` (~329 tokens)

GA4: check compatibility

Совместима ли связка измерений/метрик В ЭТОМ свойстве (Data API checkCompatibility) — проверка БЕЗ тяжёлого отчёта. compatible=true означает, что такой отчёт пройдёт; при false в incompatibleFields — поля, которые GA4 просит убрать. Дополнительно возвращает canAddDimensions/canAddMetrics — что ЕЩЁ можно добавить к этому запросу, сохранив совместимость. Совместимость зависит от свойства: например, метрики Search Console (organicGoogleSearchClicks и др.) работают только при связке GA4 ↔ Search Console, иначе не сочетаются ни с одним измерением. Фильтры тоже влияют на совместимость — передавай те же filters/metricFilters, что и в будущем отчёте.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `dimensions` (array): Проверяемые измерения
- `filters` (array): Те же фильтры по измерениям, что пойдут в отчёт (они участвуют в проверке совместимости)
- `limit` (integer): Сколько «можно добавить»-полей вернуть
- `metricFilters` (array): Те же фильтры по метрикам, что пойдут в отчёт
- `metrics` (array): Проверяемые метрики
- `propertyId` (string): Числовой id свойства (по умолчанию GA4_PROPERTY_ID)

### `ga4_report` (~645 tokens)

GA4: report

Произвольный отчёт GA4 (Data API runReport): любые измерения × метрики, фильтры по измерениям и по значениям метрик, сортировка, сравнение периодов (compareStartDate/compareEndDate) и итоги (includeTotals). Если не уверен в именах полей — сначала ga4_metadata; если боишься 400 «incompatible» — ga4_check_compatibility. Имена — как в API: измерения (date, sessionSourceMedium, pagePath, country, deviceCategory, eventName…), метрики (activeUsers, newUsers, sessions, screenPageViews, engagedSessions, engagementRate, bounceRate, averageSessionDuration, eventCount, keyEvents, totalRevenue…). ВНИМАНИЕ: bounceRate/engagementRate GA4 возвращает ДОЛЕЙ (0..1), не процентами. В ответе timeZone свойства, totalRows и truncated; thresholded=true — часть данных скрыта порогом конфиденциальности.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `dimensions` (array): Измерения GA4, максимум 9 (пусто — только итоги по метрикам)
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `filters` (array): Фильтры по измерениям (между собой — AND)
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `keepEmptyRows` (boolean): Возвращать строки с нулями
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metricFilters` (array): Фильтры по ЗНАЧЕНИЯМ метрик (между собой — AND), например sessions > 50 — отсечь шумовые строки
- `metrics` (array, required): Метрики GA4, максимум 10
- `offset` (integer): Смещение для постраничного обхода
- `orderBy` (string): Метрика или измерение для сортировки (обязано быть в metrics/dimensions этого запроса)
- `orderDesc` (boolean): Сортировать по убыванию
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_bytime` (~343 tokens)

GA4: bytime

Динамика метрик GA4 по времени: разбивка по дате/неделе/месяцу/часу. Возвращает строки {date|week|month|hour, <метрики>} в хронологическом порядке.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array): Метрики GA4 (по умолчанию sessions, activeUsers, screenPageViews)
- `period` (string): Гранулярность ряда
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_traffic_sources` (~350 tokens)

GA4: traffic sources

Источники трафика GA4: сессии/пользователи/вовлечённость по каналу или источнику-каналу. groupBy=channel — стандартные группы каналов (Organic Search, Direct, Referral…), source_medium — «google / organic».

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `groupBy` (string)
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array)
- `organicOnly` (boolean): Только органический поиск (sessionDefaultChannelGroup = Organic Search)
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_geo` (~291 tokens)

GA4: geo

География GA4: сессии/пользователи по стране, региону или городу.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `groupBy` (string)
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array)
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_devices` (~292 tokens)

GA4: devices

Устройства GA4: сессии/пользователи по типу устройства, ОС или браузеру.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `groupBy` (string)
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array)
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_top_pages` (~414 tokens)

GA4: top pages

Топ страниц GA4: по URL страницы (pagePath), заголовку или странице входа. groupBy=landing использует landingPagePlusQueryString (у устаревшего landingPage с 2023 обрезается query string, и цифры расходятся с отчётом «Целевая страница» в интерфейсе GA4). organicOnly=true — только органический поиск (полезно для SEO-аналитики посадочных).

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `groupBy` (string)
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array)
- `organicOnly` (boolean): Только Organic Search
- `pathContains` (string): Фильтр по подстроке пути (CONTAINS): по группирующему измерению, а при groupBy=title — по pagePath
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_events` (~382 tokens)

GA4: events

События GA4: количество событий и пользователей по eventName. keyEventsOnly=true — оставить ТОЛЬКО ключевые события (бывшие конверсии): фильтр по измерению isKeyEvent + метрика keyEvents (и измерение, и метрика есть не во всех свойствах — если API ответит ошибкой по полю, вызови с keyEventsOnly=false).

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `compareEndDate` (string): Конец периода сравнения
- `compareStartDate` (string): Начало периода сравнения (вместе с compareEndDate). В строках появится колонка dateRange: current/previous
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `eventName` (string): Точное имя события для фильтра
- `includeQuota` (boolean): Добавить остаток квоты свойства (поле quota): сколько «токенов» Data API съел запрос и сколько осталось на час/сутки
- `includeTotals` (boolean): Добавить итоги по метрикам (поле totals; при сравнении — по строке на период)
- `keyEventsOnly` (boolean): Только ключевые события: фильтр isKeyEvent=true + метрика keyEvents
- `limit` (integer): Сколько строк вернуть (в ответе totalRows/truncated)
- `metrics` (array)
- `propertyId` (string): Числовой id свойства GA4 (или properties/123). По умолчанию — GA4_PROPERTY_ID
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4: today, yesterday, NdaysAgo

### `ga4_realtime` (~170 tokens)

GA4: realtime

Realtime-отчёт GA4 (последние 30 минут, runRealtimeReport): активные пользователи с разбивкой. Периода дат у него нет; доступен ограниченный набор измерений/метрик.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `dimensions` (array): Realtime-измерения: country, city, deviceCategory, unifiedScreenName, eventName…
- `limit` (integer)
- `metrics` (array): Realtime-метрики: activeUsers, screenPageViews, eventCount
- `propertyId` (string): Числовой id свойства GA4 (по умолчанию GA4_PROPERTY_ID)

### `ga4_funnel` (~531 tokens)

GA4: funnel

Воронка GA4 (Data API runFunnelReport, v1alpha): сколько пользователей дошло до каждого шага и где отвалились. Шаг задаётся событием (eventName) и/или условиями по измерениям. Минимум ДВА шага. openFunnel=false (по умолчанию) — закрытая воронка: считаются только те, кто вошёл через ПЕРВЫЙ шаг; true — пользователь может войти на любом шаге. isDirectlyFollowedBy — шаг обязан идти сразу за предыдущим. breakdownDimension разбивает воронку по измерению (deviceCategory, sessionSourceMedium…); у каждого шага появляется строка-ИТОГ с меткой "(всего)" — складывать её с остальными нельзя. ВНИМАНИЕ 1: внутри ШАГОВ действует схема Exploration API, а НЕ обычная схема отчётов — часть измерений там недоступна, в том числе pagePath (брать pagePathPlusQueryString, pageLocation или unifiedPagePathScreen). ga4_metadata на шаги воронки не распространяется. ВНИМАНИЕ 2: у воронок СВОЯ корзина квоты Data API, и запрос дорогой — порядка 10 «токенов» против 1 у обычного отчёта.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `breakdownDimension` (string): Измерение для разбивки воронки, например deviceCategory
- `breakdownLimit` (integer): Сколько значений разбивки оставить (по умолчанию — решает GA4)
- `endDate` (string): YYYY-MM-DD или ключевое слово GA4
- `filters` (array): Фильтр по ВСЕЙ воронке (не по отдельному шагу)
- `includeQuota` (boolean): Добавить остаток квоты (у воронок корзина своя)
- `limit` (integer): Сколько строк таблицы воронки вернуть
- `openFunnel` (boolean): true — открытая воронка (вход на любом шаге)
- `propertyId` (string): Числовой id свойства (по умолчанию GA4_PROPERTY_ID)
- `startDate` (string): YYYY-MM-DD или ключевое слово GA4
- `steps` (array, required): Шаги воронки по порядку, минимум два

### `ga4_annotations` (~236 tokens)

GA4: annotations

Аннотации свойства GA4 (Admin API reportingDataAnnotations, v1alpha) — пометки на датах: релизы, редизайны, рекламные кампании, а также сгенерированные самой GA4 (systemGenerated=true). ВЫЗЫВАТЬ, когда в динамике виден необъяснимый скачок или провал: аннотация часто и есть объяснение. Аннотация бывает на одну дату (date) или на период (date + endDate).

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `endDate` (string): Конец периода (YYYY-MM-DD)
- `limit` (integer): Сколько аннотаций вернуть
- `propertyId` (string): Числовой id свойства (по умолчанию GA4_PROPERTY_ID)
- `startDate` (string): Оставить аннотации, пересекающие период. Строго YYYY-MM-DD: ключевые слова GA4 здесь НЕ работают (фильтр Admin API)

### `ga4_property_details` (~188 tokens)

GA4: property details

Карточка свойства GA4 (Admin API): таймзона отчётов, валюта, отрасль, уровень сервиса (STANDARD или 360 — от него зависят квоты и сэмплирование), дата создания и ПОТОКИ ДАННЫХ с их Measurement ID (G-XXXXXXX). ВЫЗЫВАТЬ, когда даты в отчётах не сходятся с ожидаемыми (GA4 считает сутки в таймзоне свойства, не в UTC) или когда нужно сопоставить свойство с кодом счётчика на сайте.

Input parameters:

- `account` (string): Аккаунт-профиль (мультиаккаунт, см. *_auth_status); пусто = основной
- `propertyId` (string): Числовой id свойства (по умолчанию GA4_PROPERTY_ID)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4#diagnostics

## Score history

- 2026-09-20: 78
- 2026-09-19: 77
- 2026-09-18: 77
- 2026-09-17: 76
- 2026-09-16: 76
- 2026-09-15: 76
- 2026-09-14: 79
- 2026-09-13: 78
- 2026-09-12: 78
- 2026-09-11: 77
- 2026-09-10: 77
- 2026-09-09: 76
- 2026-09-08: 76
- 2026-09-07: 79
- 2026-09-06: 78
- 2026-09-05: 78
- 2026-09-04: 77
- 2026-09-03: 77
- 2026-09-02: 76
- 2026-09-01: 76
- 2026-08-31: 76
- 2026-08-30: 75
- 2026-08-29: 75
- 2026-08-28: 74
- 2026-08-27: 74
- 2026-08-26: 73
- 2026-08-25: 71
- 2026-08-24: 71
- 2026-08-23: 71
- 2026-08-22: 70

## Common questions

### What is the SEO Tools: Google Analytics 4 MCP server?

SEO Tools: Google Analytics 4 is an MCP server listed in the public MCP registry as io.github.antohins/seo-tools-mcp-ga4. Google Analytics 4: reports, traffic sources, landing pages, events, realtime (read-only). This page covers its npm package (seo-tools-mcp-ga4).

### Is the SEO Tools: Google Analytics 4 MCP server safe to use?

SEO Tools: Google Analytics 4 scores 78 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 20 September 2026. It declares no install or post-install scripts. 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 SEO Tools: Google Analytics 4 MCP server expose?

SEO Tools: Google Analytics 4 exposes 19 tools: ga4_auth_status, ga4_set_credentials, ga4_oauth_start, ga4_oauth_finish, ga4_save_sa_json, and 14 more. Their descriptions and schemas cost roughly 5,363 tokens of context every time the server is loaded.

### Is the SEO Tools: Google Analytics 4 MCP server still maintained?

SEO Tools: Google Analytics 4 is still listed as active in the MCP registry. We last reached this channel on 20 September 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 SEO Tools: Google Analytics 4 MCP server under?

SEO Tools: Google Analytics 4 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

- npm package: https://www.npmjs.com/package/seo-tools-mcp-ga4
- Socket report: https://socket.dev/npm/package/seo-tools-mcp-ga4
- Repository: https://github.com/antohins/seo-tools-mcp
- Changelog RSS feed: https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4.xml
- Changelog JSON feed: https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4.json
- HTML version of this page: https://verifymcp.io/servers/antohins-seo-tools-mcp-ga4/seo-tools-mcp-ga4
