Skip to main content
Glama

GA4 MCP Server

Готовый к продакшену, мультитенантный Google Analytics 4 MCP-сервер для Claude.

Это первый коннектор в более крупной платформе. Общая инфраструктура (аутентификация, клиенты, хранилище токенов Google OAuth, авторизация, логирование, ошибки) переиспользуется. Код, специфичный для GA4, находится в src/connectors/ga4 и src/mcp/ga4. Не рассматривайте это как монолитный Google Marketing MCP.

Архитектура

Claude
  |  MCP OAuth 2.1 + Streamable HTTP
  v
Next.js / Vercel  (/mcp)
  |-- MCP tools (ga4_*)
  |-- Authorization (client_members only)
  |-- GA4 service
  |-- Google OAuth token manager
  v
Supabase
  |-- clients
  |-- client_members   (application identity)
  |-- google_connections (Google credential, not app identity)
  |-- ga4_properties

Пользователи приложения — это пользователи Supabase Auth. Доступ к тенанту осуществляется только через client_members(user_id, client_id, role). Учетная запись, подключенная к Google, — это учетные данные, принадлежащие клиенту, и никогда не является пользователем приложения.

Related MCP server: Delmain GA4 MCP

Локальная настройка

npm install
cp .env.example .env.local
# fill in the values documented below
npx supabase start   # or link a remote project
npx supabase db reset --local
npm run dev

Откройте http://localhost:3000, создайте учетную запись приложения, создайте клиента, затем подключите Google Analytics.

Настройка Google Cloud

  1. Создайте или выберите проект Google Cloud.

  2. Включите Google Analytics Data API и Google Analytics Admin API.

  3. Настройте экран согласия OAuth (External или Internal).

  4. Создайте учетные данные OAuth 2.0 Client ID (Веб-приложение).

  5. Авторизованный URI перенаправления:

    • Локально: http://localhost:3000/api/auth/google/callback

    • Продакшен: https://<ваш-домен>/api/auth/google/callback

  6. Запрашивайте только области GA4:

    • https://www.googleapis.com/auth/analytics.readonly

    • openid

    • email

Не добавляйте области DV360 или Google Ads в этот коннектор.

Настройка GA4

  1. Войдите в это приложение с помощью email/пароля (идентификация приложения).

  2. Создайте клиента (вы становитесь owner в client_members).

  3. При желании добавьте других пользователей приложения как owner или member.

  4. Нажмите Connect Google Analytics. Это привязывает учетные данные Google к клиенту.

  5. Привяжите одну или несколько учетных записей GA4, обнаруженных в этой учетной записи Google.

Участник, который не нажал Connect, все равно может выполнять запросы к клиенту, если у него есть строка в client_members.

Настройка Supabase

Этот репозиторий включает SQL-миграции в supabase/migrations. Создавайте их с помощью CLI; не придумывайте имена файлов.

Локально:

npx supabase start
npx supabase db reset --local

Удаленно:

npx supabase link --project-ref <project-ref>
npx supabase db push

Ключ роли службы предназначен только для сервера. Никогда не раскрывайте SUPABASE_SERVICE_ROLE_KEY или токены обновления Google в браузере.

Переменные окружения

См. .env.example. Обязательные:

Переменная

Назначение

NEXT_PUBLIC_SUPABASE_URL

URL проекта Supabase

NEXT_PUBLIC_SUPABASE_ANON_KEY

Клиент пользователя браузера/сервера

SUPABASE_SERVICE_ROLE_KEY

Администратор на стороне сервера (никогда не NEXT_PUBLIC_)

GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET

Приложение Google OAuth

GOOGLE_REDIRECT_URI

Должен совпадать с Google Cloud

GOOGLE_OAUTH_SCOPES

Области только для GA4

MCP_BASE_URL

Публичный источник, например https://your-app.vercel.app

MCP_TOKEN_SIGNING_SECRET

Подписывает токены доступа MCP

TOKEN_ENCRYPTION_KEY

64 шестнадцатеричных символа (32 байта) для шифрования токенов Google

Не помещайте идентификатор учетной записи GA4 в .env. Учетные записи принадлежат клиентам в Supabase.

Сгенерируйте ключ шифрования токенов:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Настройка MCP (Claude)

Удаленная конечная точка:

https://<your-domain>/mcp

Этот сервер реализует MCP OAuth 2.1:

  • Метаданные защищенного ресурса: /.well-known/oauth-protected-resource

  • Метаданные сервера авторизации: /.well-known/oauth-authorization-server

  • Авторизация: /oauth/authorize (вход в приложение + согласие)

  • Токен: /oauth/token (authorization_code + refresh_token, PKCE S256)

  • Регистрация: /oauth/register (запасной вариант DCR)

  • CIMD рекламируется (client_id_metadata_document_supported)

В Claude: Settings → Connectors → Add custom connector → вставьте https://<ваш-домен>/mcp. Claude выполнит OAuth. После вашего одобрения инструменты станут доступны.

Локальный инспектор:

npx @modelcontextprotocol/inspector

Подключитесь с помощью Streamable HTTP к http://localhost:3000/mcp. Вам все равно понадобится действительный токен MCP Bearer из потока OAuth.

Инструменты

Инструмент

Назначение

ga4_run_report

Основной отчет (даты, метрики, измерения, лимит, сортировка, базовый фильтр)

ga4_realtime

Активные пользователи в реальном времени / разбивка трафика

ga4_metadata

Обнаружение метрик и измерений для учетной записи

ga4_list_properties

Учетные записи, видимые для подключения Google клиента

ga4_compare_periods

Текущий период по сравнению с предыдущим с абсолютным/% изменением

Каждый инструмент требует client_id. Инструменты, ограниченные учетной записью, также требуют связанный property_id. Авторизация всегда проверяет client_members перед вызовом Google.

Пример: ga4_run_report

{
  "client_id": "11111111-1111-1111-1111-111111111111",
  "property_id": "123456789",
  "date_start": "2026-08-01",
  "date_end": "2026-08-15",
  "dimensions": ["country"],
  "metrics": ["activeUsers", "sessions", "totalRevenue"],
  "limit": 10
}

Пример: ga4_compare_periods

{
  "client_id": "11111111-1111-1111-1111-111111111111",
  "property_id": "123456789",
  "current_start": "2026-08-01",
  "current_end": "2026-08-15",
  "previous_start": "2026-07-17",
  "previous_end": "2026-07-31",
  "metrics": ["activeUsers", "sessions", "totalRevenue"]
}

Затем Claude может отвечать на такие вопросы, как:

  • Сколько пользователей было вчера?

  • Топ-10 стран в этом месяце

  • Сравните этот месяц с прошлым

  • Сколько активных пользователей сейчас на сайте?

Тестирование

npm test

Тесты используют имитированные Google и Supabase. Они никогда не используют продакшен-токены OAuth.

Vercel

Разверните приложение Next.js и установите те же переменные окружения. MCP_BASE_URL и GOOGLE_REDIRECT_URI должны использовать продакшен-домен. Маршрут /mcp работает на среде выполнения Node.js с максимальной продолжительностью 60 секунд.

Структура проекта

src/
  auth/              application authentication
  authorization/     authorizeClient via client_members
  oauth/             Google OAuth + token manager
  mcp-oauth/         MCP OAuth 2.1 authorization server
  connectors/ga4/    Google Analytics APIs
  mcp/ga4/           MCP tools
  repositories/      Supabase data access
  app/mcp/           Streamable HTTP transport

Будущие коннекторы (DV360, Google Ads) должны добавлять src/connectors/<имя> и src/mcp/<имя> и переиспользовать общее ядро. Не создавайте универсальное хранилище для Google API.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables managing Google Analytics 4 properties, data streams, conversions, and running reports using natural language through the Admin and Data APIs.
    23
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables querying Google Analytics 4 properties using natural language through MCP clients. Supports customizable reports with any dimensions and metrics, listing properties, and real-time data.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Google Analytics data and configuration through natural language using the Data and Admin APIs.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural language querying of Google Analytics 4, including reports, realtime data, custom dimensions, and property management.
    129 npm
    MIT