ga4-mcp-worker
ga4-mcp-worker
«Только чтение» — MCP-сервер Google Analytics 4, работающий на Cloudflare Workers, чтобы коллеги могли запрашивать GA4 через Claude без каких-либо локальных установок — без Python, без gcloud, без ADC-файла, а с этой версии ещё и без общего пароля. Подключение теперь означает: нажать «Connect», войти со своим аккаунтом Google и задавать вопросы по GA4 от своего имени.
Он повторяет набор инструментов официального googleanalytics/google-analytics-mcp stdio-сервера, но вызывает REST API Google Analytics напрямую, потому что клиентские библиотеки Google не работают в среде выполнения Workers.
Сначала прочтите это: docs/IMPLEMENTATION-NOTES.md § Что проверено, а что нет. Сквозная проверка вживую уже есть, но несколько участков (endpoints v1alpha, пагинация) пока покрыты только фикстурами.
Режим авторизации: персональный OAuth
Каждый сотрудник входит под своим аккаунтом Google. Никакого общего секрета и никакого единого учётного Google-токена, на который полагаются все, — нет. Полный дизайн и отличие от отменённого режима общего секрета см. в PRODUCTION.md § 1 и docs/PRODUCTION-PART2.md § 8. Вход ограничен аккаунтами Google @zuddl.com (ALLOWED_EMAIL_DOMAIN в wrangler.toml).
GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET по-прежнему обязательны — Google требует, чтобы каждое приложение, запрашивающее данные пользователя, было зарегистрировано, и эти два значения и есть регистрация, они задаются один раз при деплое. Исчезли вручную сгенерированный refresh-токен и пароль, который коллеги вводили раньше.
Документация
Файл | Назначение |
Первый деплой, объясняющийся с нуля — без предварительных знаний об OAuth. Создание приложения Google, деплой, тестирование, подключение Claude. Начните тут. | |
PRODUCTION.md (+ часть 2) | Модель учётных данных, мониторинг, квоты GA4, ротация секретов, локальная разработка, runbook-процедуры, чек-лист безопасности, внутреннее устройство OAuth. Читать перед масштабным развёртыванием. |
Подводные камни, которые эта реализация корректно обходит, что проверено и что нет, а также стоимость эксплуатации. | |
| MCP-сервер: инструменты, fetch-хелперы, нормализатор, роутер. Обильно прокомментирован. |
| Обработчик «входа через Google» — |
| Конфигурация воркера. Обратите внимание на |
| Шаблон для локальной разработки. Скопируйте в |
Related MCP server: GA4 MCP Server
Наши свойства GA4
Property ID | Название | Measurement ID | Статус |
| Новое свойство GA4 веб-сайта zuddl |
| Каноническое — используйте это, если не указано иное. |
| legacy | — | Устаревшее. Только исторические данные; для текущей отчётности не использовать. |
| legacy | — | Устаревшее. Только исторические данные; для текущей отчётности не использовать. |
Сервер не привязан к property: каждый инструмент принимает property_id, и это может быть как 314138239, так и "properties/314138239". Если значение не передано, используется DEFAULT_PROPERTY_ID из wrangler.toml, который указывает на каноническое свойство, чтобы коллегам не приходилось запоминать номер. Вызовите get_account_summaries, чтобы перечислить всё, что реально доступно данным учётным данным.
Инструменты (9)
Инструмент | Метод и endpoint | Назначение |
|
| Рабочая лошадка. Историческая отчётность. Полный набор параметров. |
|
| Последние ~30 минут. Отдельная и более компактная схема. |
|
| Upорядоченные шаги и отсев пользователей. |
|
| Конверсии, расходы на рекламу, ROAS, атрибуционное моделирование. Ограниченный список полей. |
|
| Пользовательские поля с доступным для запросов |
|
| Всё, что эти учётные данные могут прочитать. Без аргументов. |
|
| Часовой пояс, валюта, уровень обслуживания. Часовой пояс объясняет расхождения дат. |
|
| Датированные заметки, объясняющие всплески и падения. |
|
| Связанные аккаунты Google Ads. Подтверждает, могут ли метрики стоимости рекламы содержать данные |
run_report принимает полный официальный набор параметров: property_id, date_ranges (это список, поэтому сравнение периодов можно делать в одном запросе), dimensions, metrics, dimension_filter, metric_filter, order_bys, limit, offset, currency_code, return_property_quota. run_realtime_report принимает ту же форму, за вычетом date_ranges и currency_code.
Описания инструментов намеренно длинные — они содержат рабочие примеры для каждой формы фильтра и являются единственным местом, где модель узнает формат запроса. Редактирование их следует рассматривать как изменение поведения программы.
Endpoint’s
Endpoint | Авторизация | Назначение |
| OAuth bearer-токен | MCP-соединение (Streamable HTTP). |
| — | OAuth-эндпоинты, реализованные через |
| — | Сюда Google перенаправляет после входа. Не предназначен для непосредственного открытия человеком. |
| нет | Проверка состояния. |
| нет | простой текстовый статус-баннер, показывающий текущий режим авторизации. |
Всё остальное возвращает 404.
/healthв OAuth-режиме доказывает меньше. Нет единого общего секрета, который можно было бы проверить, поэтому200подтверждает только то, что регистрация приложения настроена и хранилище пользовательских разрешений (OAUTH_KV) доступно, а не что вход конкретного человека всё ещё действителен. Грант отдельного пользователя может истечь или быть отозванным, в то время как/healthостаётся зелёным. Это присуще персональной авторизации, а не недостаток.
Worker пишет одну строку журнала на каждый MCP-запрос, каждую отклонённую попытку авторизации, каждую ошибку инструмента и каждое срабатывание проверки health, плюс события уровня OAuth (oauth_authorise_redirect, oauth_authorised, oauth_domain_rejected и т. д.). Никакие токенные материалы не логируются никогда. Все запросы к Google API отправляют пользовательский User-Agent (ga4-mcp-server /1.0.0 (+cloudflare-workers)), чтобы использование квот было attributable.
Защита режима «только чтение»
Три независимых уровня, все на месте:
OAuth-scope — каждый токен (старый общий или новый персональный) запрашивается только с
https://www.googleapis.com/auth/analytics.readonlyи ничем иным (плюсopenid/emailдля идентификации в OAuth-режиме — см.src/google-oauth.ts, а эти разрешения не дают доступа к данным). Записи Google отклонит на своей стороне. Это настоящая гарантия. В SETUP-GUIDE.md на шагах показана проверка черезtokeninfo.Список разрешённых эндпоинтов — except regex, которое проверяется в обоих fetch-хелперах до любого сетевого вызова. Будущая правка, добавляющая пишущий эндпоинт, вызовет исключение, а не уйдёт по сети.
Нет мутирующих глаголов — в коде нет
PATCH,PUTилиDELETE. Вызововfetchровно три: выдача токена (POST),gaGet(GET) иgaPost(POST).
:runReport, :runRealtimeReport и :runFunnelReport — это HTTP POST, но, по сути, запросы: тело должно нести описание отчёта, потому что оно слишком велико для строки запроса. В GA4 ничего не создаётся и не изменяется.
Быстрые команды
npm installnpm run typecheck && npm run dry-runnpm run deploynpm run tailcurl -s https://ga4-mcp-worker.YOUR-SUBDOMAIN.workers.dev/healthЗадайте два секрета, которые нужны в любом режиме авторизации (вставляйте интерактивно — при передачи через пайп значения ломаются):
npx wrangler secret put GOOGLE_CLIENT_IDnpx wrangler secret put GOOGLE_CLIENT_SECRETПодключение из Claude Code — заголовки не нужны, так как вход происходит через браузер:
claude mcp add --transport http --scope user ga4 https://ga4-mcp-worker.YOUR-SUBDOMAIN.workers.dev/mcpЗатем в интерактивной сессии claude выполните /mcp, выберите ga4 и войдите с помощью Google.
Дополнительно
Подводные камни, покрытие тестами и эксплуатационные расходы: docs/IMPLEMENTATION-NOTES.md
Пошаговое руководство по первому развертыванию: SETUP-GUIDE.md → часть 2
Укрепление безопасности, мониторинг и руководство по OAuth: PRODUCTION.md → часть 2
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceConnects Google Analytics 4 data to Claude, Cursor and other MCP clients, enabling natural language queries of website traffic, user behavior, and analytics data with access to 200+ GA4 dimensions and metrics.10235MIT
- AlicenseAqualityBmaintenanceConnects MCP clients like Claude Desktop to Google Analytics 4 Data API, enabling natural language queries for reports, top pages, traffic sources, conversions, realtime users, and period comparisons.7MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Analytics 4 data using natural language through MCP clients like Claude and Cursor, supporting 200+ dimensions and metrics for traffic, user behavior, and e-commerce analysis.MIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to read Google Analytics 4 data, deployed as a Cloudflare Worker with service account authentication.1
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
GA4 conversion analyst inside Claude — funnel drops, traffic anomalies, device gaps, with numbers.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prashantdasari-tech/ga4-mcp-worker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server