GA4 Analytics MCP V2
GA4 Analytics MCP V2
Conector multioperador de Google Analytics 4 para Claude.ai Custom Connectors, alojado en Google Cloud Run.
Esta es la versión 2. Es una aplicación independiente de V1. No reutilices los secretos, los clientes OAuth, los servicios de Cloud Run ni los remotos de Git de V1.
Operator A or Operator B
→ same Claude Custom Connector URL
→ https://<v2-host>/mcp
→ MCP OAuth (Claude → V2)
→ Google OAuth (operator's own Google account)
→ operator credentials + active GA4 property in Firestore
→ GA4 Admin / Data APIsNo hay ningún servidor stdio local ni Supabase.
Arquitectura
Hay dos capas OAuth vinculadas:
Claude → V2: MCP OAuth 2.1 (metadatos de recurso protegido, DCR, CIMD, PKCE).
V2 → Google: el inicio de sesión de Google ocurre dentro de la autorización MCP. El
subdel token de acceso MCP es el sujeto (sub) de la cuenta de Google. El correo electrónico es solo informativo.
Cada operador tiene:
su propio token de actualización de Google cifrado
su propia lista de propiedades GA4 accesibles (de la API de administración de Google)
su propia propiedad activa persistida
El operador A no puede usar la credencial de Google del operador B ni seleccionar una propiedad a la que la cuenta de Google A no pueda acceder.
Related MCP server: GA4 MCP Server
Herramientas MCP
Herramienta | Propósito |
| Operador autenticado (correo electrónico + operatorId interno). Sin tokens. |
| Propiedades visibles para esa cuenta de Google, con |
| Propiedad seleccionada actualmente |
| Cambia tras una comprobación en tiempo real de la lista de permitidos |
| Dimensiones/métricas de la propiedad activa o recién autorizada |
| Informe histórico de GA4 |
| Últimos ~30 minutos |
Las herramientas de informes usan la propiedad activa almacenada cuando se omite propertyId. Un propertyId proporcionado solo se acepta si la cuenta de Google autenticada puede acceder a él y, en ese caso, se convierte en la nueva propiedad activa.
Desarrollo local
cd D:\MCP_Servers\Ga4McpV2
npm install
copy .env.example .env.localRellena .env.local con valores de V2. No copies secretos de V1.
Emulador de Firestore opcional:
gcloud emulators firestore start --host-port=localhost:8080Establece FIRESTORE_EMULATOR_HOST=localhost:8080 y FIRESTORE_PROJECT_ID en .env.local.
npm run dev
npm test
npm run buildApp:
http://localhost:3000MCP:
http://localhost:3000/mcpSalud:
http://localhost:3000/healthCallback de Google:
http://localhost:3000/oauth/google/callback
Claude.ai no puede acceder a localhost. Despliega V2 en Cloud Run antes de añadir el Custom Connector.
Variables de entorno
Variable | Obligatoria | Propósito |
| Sí | Origen público, sin barra final |
| Sí | Cliente web OAuth de Google de V2 |
| Sí | Secreto OAuth de Google de V2 |
| No | Por defecto, |
| Sí | Firma los JWT de MCP |
| Sí | Firma el estado de Google y cifra las cookies de autorización pendientes |
| Sí | Cifra los tokens de actualización de Google en reposo |
| Producción | Proyecto de Firestore |
| Local/pruebas | Host del emulador de Firestore |
| No | Cliente confidencial de Claude opcional preregistrado |
| No | Par del cliente confidencial opcional |
V2 no usa GOOGLE_REFRESH_TOKEN ni MCP_AUTH_TOKEN.
Configuración de Google Cloud
Usa un proyecto nuevo de Google Cloud cuando sea posible. Si compartes un proyecto con V1, crea igualmente un servicio de Cloud Run, un repositorio de Artifact Registry, un cliente OAuth y secretos distintos.
Habilita:
Cloud Run
Cloud Build
Artifact Registry
Firestore
Secret Manager
Google Analytics Admin API
Google Analytics Data API
Nombres de recursos sugeridos (marcadores de posición — sustitúyelos por los de tu proyecto):
Servicio de Cloud Run:
ga4-mcp-v2Artifact Registry:
ga4-mcp-v2Colección de Firestore:
operators
La cuenta de servicio de Cloud Run debe tener:
roles/datastore.useren la base de datos de Firestore de V2roles/secretmanager.secretAccessorsolo en los secretos de V2
No concedas a la cuenta de servicio el rol de administrador de Secret Manager ni acceso a los secretos de V1.
Cliente OAuth de Google (solo V2)
Crea una aplicación web OAuth nueva. No edites el cliente de V1.
Pantalla de consentimiento:
Tipo de usuario: Externo (o Interno para uso exclusivo de Workspace)
Nombre de la aplicación: algo como
GA4 MCP Connector V2Ámbitos:
openidemailhttps://www.googleapis.com/auth/analytics.readonly
Añade usuarios de prueba mientras la aplicación esté en modo de pruebas
La publicación es obligatoria para los usuarios que no sean de prueba porque los ámbitos de Analytics son sensibles
URI de redirección autorizada:
https://<v2-cloud-run-url>/oauth/google/callbackLocalmente:
http://localhost:3000/oauth/google/callbackCustom Connector de Claude
Despliega V2 y establece
APP_BASE_URLcomo la URL de Cloud Run.En Claude, añade un Custom Connector.
URL:
https://<v2-host>/mcpCada operador completa el inicio de sesión de Google desde su propia cuenta de Claude.
Si la cuenta de Google tiene varias propiedades GA4, elige una. Esa elección persiste hasta que la cambie.
Pruebas
npm testLas pruebas unitarias cubren:
Metadatos OAuth de MCP, DCR, PKCE y
subdel JWT vinculado a GoogleAislamiento de operadores (credenciales y listas de propiedades permitidas)
Propiedad activa persistente
Actualización / rotación de tokens
Concesiones de Google revocadas
Redacción de registros estructurados
No se usan credenciales V1 reales.
Despliegue (no ejecutar hasta que se solicite)
Solo documentado. El despliegue de V1 debe permanecer intacto.
.\scripts\cloud-run-setup.ps1 -ProjectId YOUR_V2_PROJECT_ID
.\scripts\cloud-run-deploy.ps1 -ProjectId YOUR_V2_PROJECT_ID
.\scripts\cloud-run-set-env.ps1 `
-ProjectId YOUR_V2_PROJECT_ID `
-AppBaseUrl https://YOUR_V2_CLOUD_RUN_URL `
-GoogleClientId YOUR_V2_CLIENT_ID `
-GoogleClientSecret YOUR_V2_CLIENT_SECRET `
-McpTokenSecret YOUR_MCP_TOKEN_SECRET `
-OauthStateSecret YOUR_OAUTH_STATE_SECRET `
-TokenEncryptionKey YOUR_TOKEN_ENCRYPTION_KEYPrefiere referencias de Secret Manager para los secretos de producción en lugar de valores de entorno en texto plano al configurar el servicio.
Después del despliegue:
Añade la URI de devolución de llamada de Cloud Run al cliente OAuth de V2.
Confirma que Firestore se creó en modo nativo.
Añade
https://<v2-host>/mcpen Claude.
Consideraciones de seguridad
Los tokens de actualización se cifran con AES-256-GCM antes de escribirse en Firestore.
Las herramientas MCP nunca devuelven tokens de acceso, tokens de actualización ni códigos de autorización.
Los registros redactan tokens, secretos, cookies y códigos de autorización.
Los ID de propiedad de Claude se verifican contra la lista en tiempo real de la API de administración de ese operador.
Las herramientas fallan en modo cerrado si no hay ningún contexto de operador vinculado a la solicitud.
Cookies solo HTTPS en producción.
Git
Este repositorio es solo de V2. El remoto de V1 es
git@github.com:devopsbrandmirchi/Ga4McpServer.gity nunca debe añadirse aquí. Crea un repositorio nuevo de GitHub cuando estés listo para publicar V2.
This server cannot be deployed
Maintenance
Related MCP Connectors
GA4, Google Ads and Search Console in Claude. Read-only OAuth, multi-account for agencies.
Live Google Ads, GA4, Search Console, Meta Ads and GBP data in Claude, ChatGPT and any MCP client
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
Read-only Google Analytics 4 MCP server for AI assistants.
1
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.101,637 PyPI242MIT
- 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.720 PyPIMIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to read Google Analytics 4 data, deployed as a Cloudflare Worker with service account authentication.2-
- AlicenseAqualityDmaintenanceEnables LLM applications to query and analyze Google Analytics 4 data through standard MCP interfaces, supporting service account and OAuth2 authentication.555 npmMIT