GA4 MCP Server
GA4 MCP Server
Produktionsreifer, mandantenfähiger Google Analytics 4 MCP-Server für Claude.
Dies ist der erste Connector in einer größeren Plattform. Gemeinsame Infrastruktur (Auth, Clients, Google OAuth-Token-Speicherung, Autorisierung, Logging, Fehler) ist wiederverwendbar. GA4-spezifischer Code bleibt unter src/connectors/ga4 und src/mcp/ga4. Behandle dies nicht als monolithisches Google Marketing MCP.
Architektur
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_propertiesAnwendungsbenutzer sind Supabase Auth-Benutzer. Der Mandantenzugriff erfolgt ausschließlich über client_members(user_id, client_id, role). Ein Google-verbundenes Konto ist eine client-eigene Berechtigung und niemals der Anwendungsbenutzer.
Lokale Einrichtung
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Öffne http://localhost:3000, erstelle ein Anwendungskonto, erstelle einen Client und verbinde dann Google Analytics.
Google Cloud Einrichtung
Erstelle oder wähle ein Google Cloud-Projekt.
Aktiviere Google Analytics Data API und Google Analytics Admin API.
Konfiguriere den OAuth-Zustimmungsbildschirm (Extern oder Intern).
Erstelle OAuth 2.0 Client-ID-Anmeldedaten (Webanwendung).
Autorisierte Weiterleitungs-URI:
Lokal:
http://localhost:3000/api/auth/google/callbackProduktion:
https://<deine-domain>/api/auth/google/callback
Fordere nur GA4-Bereiche an:
https://www.googleapis.com/auth/analytics.readonlyopenidemail
Füge diesem Connector keine DV360- oder Google Ads-Bereiche hinzu.
GA4 Einrichtung
Melde dich bei dieser App mit E-Mail/Passwort an (Anwendungsidentität).
Erstelle einen Client (du wirst zum
ownerinclient_members).Füge optional andere Anwendungsbenutzer als
ownerodermemberhinzu.Klicke auf Connect Google Analytics. Dadurch wird eine Google-Berechtigung an den Client gebunden.
Verknüpfe eine oder mehrere GA4-Properties, die von diesem Google-Konto entdeckt wurden.
Ein Mitglied, das nicht auf Connect geklickt hat, kann den Client dennoch abfragen, wenn es einen client_members-Eintrag besitzt.
Supabase Einrichtung
Dieses Repository enthält SQL-Migrationen in supabase/migrations. Erstelle sie mit der CLI; erfinde keine Dateinamen.
Lokal:
npx supabase start
npx supabase db reset --localRemote:
npx supabase link --project-ref <project-ref>
npx supabase db pushDer Service-Rollen-Schlüssel ist nur für den Server bestimmt. Setze niemals SUPABASE_SERVICE_ROLE_KEY oder Google-Refresh-Tokens im Browser offen.
Umgebungsvariablen
Siehe .env.example. Erforderlich:
Variable | Zweck |
| Supabase-Projekt-URL |
| Browser/Server-Benutzer-Client |
| Serverseitiger Administrator (niemals |
| Google OAuth-App |
| Muss mit Google Cloud übereinstimmen |
| Nur GA4-Bereiche |
| Öffentliche Herkunft, z. B. |
| Signiert MCP-Zugriffstoken |
| 64 Hex-Zeichen (32 Bytes) für die Google-Token-Verschlüsselung |
Setze keine GA4-Property-ID in .env. Properties gehören zu Clients in Supabase.
Generiere einen Token-Verschlüsselungsschlüssel:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"MCP Einrichtung (Claude)
Remote-Endpunkt:
https://<your-domain>/mcpDieser Server implementiert MCP OAuth 2.1:
Geschützte Ressourcen-Metadaten:
/.well-known/oauth-protected-resourceAutorisierungsserver-Metadaten:
/.well-known/oauth-authorization-serverAutorisieren:
/oauth/authorize(Anmeldung + Zustimmung)Token:
/oauth/token(authorization_code + refresh_token, PKCE S256)Registrieren:
/oauth/register(DCR-Fallback)CIMD wird beworben (
client_id_metadata_document_supported)
In Claude: Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen → https://<deine-domain>/mcp einfügen. Claude führt OAuth aus. Nach deiner Zustimmung sind die Tools verfügbar.
Lokaler Inspector:
npx @modelcontextprotocol/inspectorVerbinde mit Streamable HTTP zu http://localhost:3000/mcp. Du benötigst weiterhin ein gültiges MCP-Bearer-Token aus dem OAuth-Flow.
Tools
Tool | Zweck |
| Primärer Bericht (Daten, Metriken, Dimensionen, Limit, Sortierung, einfacher Filter) |
| Echtzeit aktive Benutzer / Verkehrsaufschlüsselung |
| Metriken und Dimensionen für eine Property entdecken |
| Dem Google-Konto des Clients sichtbare Properties |
| Aktueller vs. vorheriger Zeitraum mit absoluter/% Änderung |
Jedes Tool erfordert client_id. Property-bezogene Tools erfordern außerdem eine verknüpfte property_id. Die Autorisierung prüft immer zuerst client_members, bevor Google aufgerufen wird.
Beispiel: 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
}Beispiel: 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 kann dann Fragen beantworten wie:
Wie viele Benutzer hatten wir gestern?
Top 10 Länder diesen Monat
Vergleiche diesen Monat mit dem letzten Monat
Wie viele aktive Benutzer sind gerade auf der Seite?
Testen
npm testTests verwenden gemocktes Google und Supabase. Sie verwenden niemals Produktions-OAuth-Token.
Vercel
Stelle die Next.js-App bereit und setze die gleichen Umgebungsvariablen. MCP_BASE_URL und GOOGLE_REDIRECT_URI müssen die Produktionsdomain verwenden. Die /mcp-Route läuft auf der Node.js-Laufzeit mit einer maximalen Dauer von 60s.
Projektstruktur
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 transportZukünftige Connectors (DV360, Google Ads) sollten src/connectors/<name> und src/mcp/<name> hinzufügen und den gemeinsamen Kern wiederverwenden. Erstelle keine allgemeine Google-API-Sammelstelle.
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