GA4 MCP Server
GA4 MCP Server
Servidor MCP de Google Analytics 4 listo para producción y multiinquilino para Claude.
Este es el primer conector de una plataforma más grande. La infraestructura compartida (autenticación, clientes, almacenamiento de tokens de Google OAuth, autorización, registro, errores) es reutilizable. El código específico de GA4 permanece en src/connectors/ga4 y src/mcp/ga4. No trates esto como un MCP monolítico de Google Marketing.
Arquitectura
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_propertiesLos usuarios de la aplicación son usuarios de Supabase Auth. El acceso a los inquilinos es solo client_members(user_id, client_id, role). Una cuenta conectada a Google es una credencial propiedad del cliente y nunca es el usuario de la aplicación.
Configuración local
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 devAbre http://localhost:3000, crea una cuenta de aplicación, crea un cliente y luego conecta Google Analytics.
Configuración de Google Cloud
Crea o selecciona un proyecto de Google Cloud.
Habilita la API de datos de Google Analytics y la API de administración de Google Analytics.
Configura la pantalla de consentimiento de OAuth (Externa o Interna).
Crea credenciales de ID de cliente de OAuth 2.0 (aplicación web).
URI de redirección autorizada:
Local:
http://localhost:3000/api/auth/google/callbackProducción:
https://<your-domain>/api/auth/google/callback
Solicita solo los ámbitos de GA4:
https://www.googleapis.com/auth/analytics.readonlyopenidemail
No agregues ámbitos de DV360 o Google Ads a este conector.
Configuración de GA4
Inicia sesión en esta aplicación con correo electrónico/contraseña (identidad de la aplicación).
Crea un cliente (te conviertes en
ownerenclient_members).Opcionalmente, agrega otros usuarios de la aplicación como
owneromember.Haz clic en Conectar Google Analytics. Esto adjunta una credencial de Google al cliente.
Vincula una o más propiedades de GA4 descubiertas desde esa cuenta de Google.
Un miembro que no hizo clic en Conectar aún puede consultar al cliente si tiene una fila en client_members.
Configuración de Supabase
Este repositorio incluye migraciones SQL en supabase/migrations. Créalas con la CLI; no inventes nombres de archivo.
Local:
npx supabase start
npx supabase db reset --localRemoto:
npx supabase link --project-ref <project-ref>
npx supabase db pushLa clave de rol de servicio es solo para el servidor. Nunca expongas SUPABASE_SERVICE_ROLE_KEY ni los tokens de actualización de Google al navegador.
Variables de entorno
Consulta .env.example. Requeridas:
Variable | Propósito |
| URL del proyecto de Supabase |
| Cliente de usuario del navegador/servidor |
| Administrador del lado del servidor (nunca |
| Aplicación de Google OAuth |
| Debe coincidir con Google Cloud |
| Ámbitos solo de GA4 |
| Origen público, p. ej. |
| Firma los tokens de acceso de MCP |
| 64 caracteres hex (32 bytes) para el cifrado de tokens de Google |
No pongas un ID de propiedad de GA4 en .env. Las propiedades pertenecen a los clientes en Supabase.
Genera una clave de cifrado de tokens:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Configuración de MCP (Claude)
Endpoint remoto:
https://<your-domain>/mcpEste servidor implementa MCP OAuth 2.1:
Metadatos de recurso protegido:
/.well-known/oauth-protected-resourceMetadatos del servidor de autorización:
/.well-known/oauth-authorization-serverAutorizar:
/oauth/authorize(inicio de sesión de la aplicación + consentimiento)Token:
/oauth/token(authorization_code + refresh_token, PKCE S256)Registrar:
/oauth/register(respaldo de DCR)Se anuncia CIMD (
client_id_metadata_document_supported)
En Claude: Configuración → Conectores → Agregar conector personalizado → pega https://<your-domain>/mcp. Claude ejecutará OAuth. Después de que apruebes, las herramientas estarán disponibles.
Inspector local:
npx @modelcontextprotocol/inspectorConéctate con Streamable HTTP a http://localhost:3000/mcp. Aún necesitas un token Bearer de MCP válido del flujo OAuth.
Herramientas
Herramienta | Propósito |
| Informe principal (fechas, métricas, dimensiones, límite, orden, filtro básico) |
| Usuarios activos en tiempo real / desglose de tráfico |
| Descubre métricas y dimensiones para una propiedad |
| Propiedades visibles para la conexión de Google del cliente |
| Período actual vs. anterior con cambio absoluto/% |
Cada herramienta requiere client_id. Las herramientas con ámbito de propiedad también requieren un property_id vinculado. La autorización siempre verifica client_members antes de llamar a Google.
Ejemplo: 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
}Ejemplo: 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 puede entonces responder preguntas como:
¿Cuántos usuarios tuvimos ayer?
Top 10 países este mes
Compara este mes con el mes pasado
¿Cuántos usuarios activos hay en el sitio ahora mismo?
Pruebas
npm testLas pruebas usan Google y Supabase simulados. Nunca usan tokens de OAuth de producción.
Vercel
Despliega la aplicación Next.js y establece las mismas variables de entorno. MCP_BASE_URL y GOOGLE_REDIRECT_URI deben usar el dominio de producción. La ruta /mcp se ejecuta en el tiempo de ejecución de Node.js con una duración máxima de 60 s.
Estructura del proyecto
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 transportLos conectores futuros (DV360, Google Ads) deben agregar src/connectors/<name> y src/mcp/<name> y reutilizar el núcleo compartido. No crees un vertedero genérico de API de Google.
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 Connectors
Query Churn Solution cancellation-flow metrics, revenue, and feedback analytics (read-only).
Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
Privacy-first web analytics. Query pageviews, referrers, trends, and AI insights.
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/devopsbrandmirchi/GoogleMcpServer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server