Google Analytics MCP · Updated September 5, 2026
Google Analytics MCP Server: query GA4 from Claude or ChatGPT
Paste one link into Claude or ChatGPT, sign in with Google, and your AI can run any GA4 report — channels, landing pages, key events, revenue, realtime, AI-referral traffic. No Cloud project, nothing to install, about a minute of setup. Everything below the link is the full reference for you and your AI agent.
https://connector.get-ryze.ai/mcp- 01Copy your MCP link:
https://connector.get-ryze.ai/mcp - 02In Claude go to Settings → Connectors → Add custom connector. Name it Ryze AI, paste the link, click Add. In ChatGPT it is Settings → Apps → Create app.
- 03Click Connect, sign in with Google, pick your workspace. Open a new chat and ask: “Which channels drove the most key events in the last 28 days?”
01 — Overview
What this Google Analytics MCP server does
The short version
- One URL,
https://connector.get-ryze.ai/mcp, works in Claude, ChatGPT, Claude Code, Cursor and any MCP client. - Sign in with Google. No Google Cloud project, no service account, no Data API enablement, no Python.
- 9 GA4 tools, all read-only: raw Data API reports, pivot reports, realtime, Admin API reads, and four ready-made AI-referral traffic reports.
- Same endpoint carries Google Ads, Meta Ads, TikTok, Search Console and Shopify — 150+ tools in total.
- Free to connect. SEO Autopilot is $129/mo flat if you want Ryze AI to act on what the data shows.
- Server name
- Ryze AI (Google Analytics MCP)
- Endpoint
- https://connector.get-ryze.ai/mcp
- Transport
- Remote MCP over Streamable HTTP
- Auth
- OAuth 2.0 (Google sign-in, one Ryze workspace per connection)
- Hosting
- Hosted by Ryze AI — nothing to install or run
- GA4 tools
- 9 (9 read · 0 write)
- Also on this endpoint
- Google Ads, Meta Ads, TikTok, Search Console, Shopify — 150+ tools
- Cloud project
- Not required
- Price
- Free to connect · SEO Autopilot $129/mo flat
- Updated
- September 5, 2026
MCP (Model Context Protocol) is the open standard AI assistants use to call external tools. A Google Analytics MCP server turns a GA4 property into a set of those tools, so an assistant can pull a channel report, check a landing page’s key-event rate or explain a traffic drop from a chat instead of the GA4 UI. Most GA4 MCP servers on GitHub, including Google’s own, are local Python processes you point at a Cloud project and a service-account key; this one is hosted, so the whole setup is a URL and a Google sign-in. The comparison further down covers when self-hosting is the better route.
/01
Managed OAuth 2.0
Browser sign-in with Google, tokens refreshed server-side. No Cloud project, no service-account JSON, no Data API to enable.
/02
Raw Data API reports
runRawReport takes any GA4 runReport body — dimensions, metrics, named date ranges, filters, ordering — and pages through results with offset.
/03
Pivot and realtime
runPivotReport builds pivot tables; runRealtimeReport reads the last 30 minutes with minuteRanges, active users and screen views.
/04
Admin API reads
runAdminRead fetches key events, custom dimensions, data streams, audiences and property settings over v1beta or v1alpha — GET only.
/05
AI-referral traffic
Four dedicated tools report sessions and conversions from ChatGPT, Perplexity, Gemini, Copilot and Claude referrers: by source, by landing page, by engine vs prior period, and daily.
/06
Property discovery
listAccountSummaries returns every account and property the login can see, so the assistant can find the right property ID before it queries.
/07
Read-only by design
Nothing here writes to GA4. Property settings, key events and data streams stay exactly as they are; the server only reads.
/08
Six platforms, one URL
The same endpoint carries Google Ads, Meta Ads, TikTok, Search Console and Shopify toolsets — one login instead of six servers.
02 — Tool reference
The 9 Google Analytics tools
Every tool takes a propertyId (the numeric GA4 property ID, not the G-XXXX measurement ID). All nine are read-only, so there is nothing to approval-gate; the assistant can run them the moment OAuth completes.
| Tool | Access | What it does | Key parameters |
|---|---|---|---|
listAccountSummaries | read | Every GA4 account and property the signed-in login can reach. Call this first to find property IDs. | none |
runRawReport | read | Any GA4 Data API runReport: dimensions, metrics, up to four named date ranges, dimension and metric filters, ordering, limit and offset. | propertyId · request { dateRanges, dimensions, metrics, dimensionFilter, metricFilter, orderBys, limit, offset } |
runPivotReport | read | Pivot tables — e.g. channel × device × month — with per-pivot limits and ordering. | propertyId · request { dateRanges, dimensions, metrics, pivots[], dimensionFilter } |
runRealtimeReport | read | Active users, screen views and events in the last 30 minutes, by minute, country, device or screen. | propertyId · request { minuteRanges, dimensions, metrics } |
runAdminRead | read | GET any Admin API resource: keyEvents, customDimensions, dataStreams, audiences (alpha), attribution settings. Mutations are rejected. | path (properties/<id>/…) · version (v1beta | v1alpha) |
getAIReferrals | read | AI referral sources (ChatGPT, Perplexity, Gemini, Copilot, Claude…) with sessions and conversions for a period. | propertyId · period { startDate, endDate } |
getAiLandingPages | read | Top landing pages receiving AI-referred traffic. | propertyId · period · limit (≤ 200) |
getAiTrafficByEngine | read | AI traffic grouped by engine, compared with a prior period. | propertyId · period · priorPeriod |
getAiTrafficDaily | read | Daily sessions from AI referrers, for trend lines and week-over-week checks. | propertyId · period |
The same endpoint exposes the Google Ads, Meta Ads, TikTok, Search Console and Shopify toolsets. The cross-platform list lives in the advertising API & MCP tools reference; Google Ads and Meta have their own pages at Google Ads MCP and Meta Ads MCP.
03 — Prerequisites
What you need before you start
You need
- A Google login with Viewer access or higher to the GA4 property (Analyst or Editor is not required for reads).
- A free Ryze AI account — created during the OAuth step if you don’t have one.
- An MCP client: Claude Pro, Team or Max (custom connectors are not on the free plan), ChatGPT Plus, Pro or Business with Developer mode, or Claude Code, Cursor, Windsurf, VS Code on any plan.
You don’t need
- A Google Cloud project, an enabled Analytics Data API or a service-account key — the hosted server brings its own API access.
- A GA4 property ID hard-coded anywhere: the assistant discovers properties with listAccountSummaries.
- Python, Node, a virtual environment, a
.envfile or a process to keep running.
04 — Setup
Install in every MCP client
All routes end in the same OAuth screen: sign in with Ryze AI, choose your workspace, click Allow. If Google Analytics is not yet connected to the workspace, add it once under Workspace Settings → Integrations; the tools appear in the next chat. One connection maps to one workspace, so agencies with several client workspaces reconnect per workspace. Screenshots for the Claude route are in how to connect Claude to the Ryze AI MCP.
Claude (web and desktop)
- 01On claude.ai, click your avatar (bottom-left) → Settings.
- 02Open the Connectors tab and click Customize, then the + next to Connectors.
- 03Name: Ryze AI. Remote MCP server URL:
https://connector.get-ryze.ai/mcp. Click Add. - 04Click Connect on the new connector, sign in, pick your workspace and click Allow Claude to connect.
- 05A green confirmation lists the available tools. Start a new chat and ask your first question.
Requires Claude Pro, Team or Max. The Claude desktop app uses the same Settings → Connectors flow; if you prefer the config file, use the mcp-remote entry under “Claude Desktop config file” below.
ChatGPT
- 01Settings → Apps. Under Advanced settings, turn on Developer mode.
- 02Click Create app. Name: Ryze AI. MCP server URL:
https://connector.get-ryze.ai/mcp— choose Server URL, not Tunnel. - 03Authentication: OAuth. Tick the acknowledgment and click Create.
- 04On the authorization page choose Sign in with Ryze AI, pick your workspace and click Allow.
- 05Start a new chat: “Compare sessions and key events by default channel group, last 28 days vs the 28 before.”
Requires a ChatGPT plan that supports apps and connectors (Plus, Pro or Business).
Claude Code
claude mcp add --transport http ryze https://connector.get-ryze.ai/mcpThen run /mcp inside Claude Code to complete the OAuth sign-in. Add --scope user to make it available in every project.
Cursor, Windsurf and any mcp.json client
{
"mcpServers": {
"ryze": {
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Save, then approve the OAuth prompt the client opens. Windsurf uses the key serverUrl instead of url.
VS Code (GitHub Copilot agent mode)
{
"servers": {
"ryze": {
"type": "http",
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Claude Desktop config file (optional)
{
"mcpServers": {
"ryze": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://connector.get-ryze.ai/mcp"]
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop; the first call opens the browser for OAuth. Most people won’t need this — Settings → Connectors does the same without Node.
05 — Usage
What to ask once connected
Reporting
- >“Give me sessions, engaged sessions and key events by default channel group for the last 28 days.”
- >“Which landing pages drove the most purchases this month, and what was their revenue?”
- >“Build my Monday traffic report: total users, top 5 sources, key-event rate, and what changed vs last week.”
Diagnosis
- >“Organic sessions dropped last week. Break it down by landing page and country to find where.”
- >“Compare mobile vs desktop engagement rate and key-event rate for paid traffic, last 30 days.”
- >“Which pages have the highest exit share among sessions that reached checkout?”
AI referrals
- >“How much traffic came from ChatGPT, Perplexity and Gemini this month, and which pages did it land on?”
- >“Compare AI-referral sessions this month with last month by engine.”
- >“Show daily AI-referral sessions for the last 60 days as a table I can chart.”
Setup checks
- >“List the key events configured on this property and their counting method.”
- >“What custom dimensions exist, and which are event-scoped vs user-scoped?”
- >“Show me active users right now by country and device.”
Ready-made workflows: the GA4 + ads integration guide for Claude MCP, measuring AI referral traffic in GA4, using GA4 data for SEO with an AI assistant and automated GA4 insights with an AI agent.
06 — Request examples
Data API requests you can paste into the chat
You rarely need to write these — the assistant builds them. When you want exact control, describe the request and the server runs it through runRawReport. Three that come up daily:
Channel performance, last 28 days vs the 28 before
{
"dateRanges": [
{ "startDate": "28daysAgo", "endDate": "yesterday", "name": "current" },
{ "startDate": "56daysAgo", "endDate": "29daysAgo", "name": "previous" }
],
"dimensions": [{ "name": "sessionDefaultChannelGroup" }],
"metrics": [
{ "name": "sessions" }, { "name": "engagedSessions" },
{ "name": "keyEvents" }, { "name": "sessionKeyEventRate" }
],
"orderBys": [{ "metric": { "metricName": "sessions" }, "desc": true }]
}Name every date range. GA4 adds a dateRange dimension itself and labels rows with your names, so comparisons cannot be mismapped. Use keyEvents, not the deprecated conversions.
Landing pages from paid traffic with revenue
{
"dateRanges": [{ "startDate": "30daysAgo", "endDate": "yesterday", "name": "last30" }],
"dimensions": [{ "name": "landingPagePlusQueryString" }],
"metrics": [
{ "name": "sessions" }, { "name": "ecommercePurchases" },
{ "name": "purchaseRevenue" }
],
"dimensionFilter": {
"filter": {
"fieldName": "sessionMedium",
"inListFilter": { "values": ["cpc", "paid", "ppc"] }
}
},
"limit": 50
}Filters use fieldName plus a stringFilter, inListFilter or numericFilter. Default limit is 10,000 rows; page with offset until rowCount is covered.
Realtime: who is on the site right now
{
"minuteRanges": [{ "startMinutesAgo": 29, "endMinutesAgo": 0 }],
"dimensions": [{ "name": "country" }, { "name": "deviceCategory" }],
"metrics": [{ "name": "activeUsers" }, { "name": "screenPageViews" }]
}Realtime uses minuteRanges instead of dateRanges and covers the last 30 minutes only. Realtime dimensions: minutesAgo, country, deviceCategory, unifiedScreenName.
07 — Compare
Hosted vs Google's official vs self-hosted
| What you operate | Ryze AI hosted server | Google's official GA MCP | Open source (GitHub) |
|---|---|---|---|
| Runtime | None — remote HTTP | Local Python process you run | Local Node or Python process you run |
| Credentials you manage | Google sign-in only | Cloud project + Application Default Credentials | Cloud project + service-account JSON |
| APIs you enable | None | Analytics Data API + Admin API in your project | Analytics Data API in your project |
| Data API quota | Handled by Ryze | Your project's property tokens | Your project's property tokens |
| Platforms | GA4 + Google Ads, Meta, TikTok, Search Console, Shopify | GA4 only | GA4 only |
| AI-referral reports | Built in (4 tools) | Build the filters yourself | Build the filters yourself |
Self-hosting is the right call when the data must never leave your machine or you are building your own agent on the raw Data API. For that route: GA4 data with an AI assistant and the Claude MCP GA4 integration guide. For ads and analytics in one chat, the Google Ads MCP and Meta Ads MCP pages cover the write side.
08 — Security & permissions
Safe by default
OAuth 2.0 only
You sign in on Google's page. Your password never touches Ryze, and tokens are refreshed server-side.
One workspace per connection
Each connection is authorized against a single Ryze workspace, chosen on the consent screen. Switching workspaces means reconnecting and starting a new chat.
Read-only toolset
All nine GA4 tools read. runAdminRead rejects :create, :update and :delete paths, so the assistant cannot change key events, streams or property settings.
Minimal scope
The Google consent screen asks for Analytics read-only access. Nothing on this endpoint requests edit rights to your property.
Revoke any time
Remove access from your Google account's third-party permissions or from Workspace Settings → Integrations in Ryze.
Policies
Read the MCP privacy policy, MCP terms, security policy and MCP permissions best practices.
09 — Quotas & limits
What to know before a heavy session
| Property tokens | GA4 Data API bills each request in property tokens (standard properties: 200,000 per day and 40,000 per hour per property, 10 concurrent requests). Add returnPropertyQuota: true to a request to see what is left. |
| Rows per report | Default limit 10,000 rows per runRawReport call, maximum 250,000. Page with offset until rowCount is covered. |
| Date ranges | Up to four dateRanges per request. Name them — GA4 labels rows by name; unnamed ranges come back as date_range_0, date_range_1 in request order. |
| Realtime | Last 30 minutes only, via minuteRanges. Realtime has its own smaller dimension and metric set. |
| Data freshness | Standard reports lag 24–48 hours; today's numbers are partial. Use runRealtimeReport for what is happening now. |
| Deprecated fields | conversions and sessionConversionRate are deprecated — request keyEvents and sessionKeyEventRate instead. |
| Thresholding | Reports that include demographic or interest dimensions can drop rows to protect user privacy; totals then differ from the UI. |
| Client plans | Claude custom connectors: Pro, Team or Max. ChatGPT connectors: Plus, Pro or Business with Developer mode. |
10 — Troubleshooting
Common errors and the fix
| Symptom | Cause | Fix |
|---|---|---|
| Tools don't show up in the chat | The chat was opened before the connector existed. | Start a new chat — Claude and ChatGPT bind connectors when a conversation starts. |
| No 'custom connector' option in Claude | Free Claude plan. | Custom connectors need Claude Pro, Team or Max. ChatGPT needs Plus, Pro or Business with Developer mode on. |
| "propertyId is required" | No property chosen yet. | Ask for accessible properties first (listAccountSummaries), then name the property or pass its numeric ID. |
| Bare strings rejected in dimensions or metrics | The Data API wants objects. | Send [{ "name": "sessions" }], not ["sessions"]. |
| Comparison rows look swapped | Unnamed date ranges are labelled date_range_0/1 in request order. | Give every range a name and read the dateRange dimension by that name. |
| Field 'conversions' is not valid | Deprecated metric. | Use keyEvents and sessionKeyEventRate. |
| Numbers differ from the GA4 UI | Different date range, sampling, thresholding, or the UI's modelled data. | Match the range exactly, check for (other) rows, and compare against an unsampled Explore report. |
| 404 on runAdminRead | Resource not in the chosen API version. | Audiences, channel groups and attribution settings need version v1alpha; keyEvents and customDimensions are v1beta. |
| Data from the wrong client property | The connection is authorized to another workspace. | Each connection is one Ryze workspace. Reconnect, pick the right workspace, and start a new chat. |
Still stuck? Email support@get-ryze.ai. Agencies juggling many accounts: MCP config for multiple ad accounts.
11 — FAQ
Google Analytics MCP server questions
What is the Google Analytics MCP server?
It is an MCP (Model Context Protocol) server that exposes a Google Analytics 4 property as tools an AI assistant can call. Ryze AI's Google Analytics MCP server is hosted and remote: you add one URL to Claude, ChatGPT, Cursor or Claude Code, sign in with Google via OAuth, and the assistant can run Data API reports, pivot and realtime reports, Admin API reads and AI-referral traffic reports.
What is the Google Analytics MCP server URL?
The server URL is https://connector.get-ryze.ai/mcp. It is a remote MCP server over Streamable HTTP with OAuth 2.0. The same endpoint serves the Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets, so one connector covers analytics and ads together. Each connection is authorized against one Ryze workspace.
Do I need a Google Cloud project or service account?
No. The hosted server runs on Ryze AI's own Google API access. You sign in with a Google account that can view the GA4 property and you are done. Google's official Analytics MCP server and the open-source GA4 servers require a Cloud project with the Analytics Data API enabled, Application Default Credentials or a service-account key, and a local Python or Node runtime.
Which GA4 tools does the server expose?
Nine read-only tools: listAccountSummaries (find properties), runRawReport (any Data API runReport), runPivotReport, runRealtimeReport, runAdminRead (GET-only Admin API), and four AI-referral reports — getAIReferrals, getAiLandingPages, getAiTrafficByEngine and getAiTrafficDaily. None of them writes to the property.
Can the MCP server change my GA4 settings?
No. Every Google Analytics tool on the endpoint is read-only, and runAdminRead explicitly rejects create, update and delete paths. Key events, data streams, audiences and property settings stay as they are. Write tools exist on the same endpoint only for ad platforms such as Google Ads and Meta, and those are approval-gated.
How do I run a raw GA4 Data API report through MCP?
Ask in plain English or describe the runReport body. runRawReport takes dateRanges, dimensions, metrics, dimensionFilter, metricFilter, orderBys, limit and offset, exactly as the GA4 Data API does. Dimensions and metrics are objects with a name field, date ranges should be named so comparisons stay in order, and results page with offset up to the rowCount.
Does the server report AI referral traffic from ChatGPT and Perplexity?
Yes. Four dedicated tools group sessions and conversions from AI referrers — ChatGPT, Perplexity, Gemini, Copilot, Claude and others — by source, by landing page, by engine against a prior period, and day by day. You do not have to build the referrer filters yourself.
Can I use it with several GA4 properties or clients?
Yes. listAccountSummaries lists every account and property the login can reach, and you pass propertyId on each call to pick one. One connection maps to one Ryze workspace, so agencies keeping clients in separate workspaces reconnect per workspace and start a new chat.
What are the GA4 Data API limits I should know about?
Google bills each request in property tokens: standard properties get 200,000 tokens per day and 40,000 per hour, with 10 concurrent requests. Reports return 10,000 rows per call by default (250,000 maximum), accept up to four date ranges, and standard data lags 24–48 hours. Realtime covers the last 30 minutes only.
What does the Google Analytics MCP server cost?
Connecting is free — a Ryze AI account costs nothing to create and the connector has no per-call fee. SEO Autopilot is $129/month flat with a 7-day free trial if you want Ryze AI to act on the data. On the client side you need a Claude plan that allows custom connectors (Pro, Team or Max) or a ChatGPT plan with connectors (Plus, Pro or Business).
Is the Google Analytics MCP server secure?
Access is OAuth 2.0 only, so your Google password never touches Ryze. The consent screen requests Analytics read-only scope, each connection is scoped to one Ryze workspace, and you can revoke access at any time from your Google account permissions or from Workspace Settings → Integrations in Ryze. The MCP privacy policy, MCP terms and security policy are linked on this page.
Why doesn't Claude see the Google Analytics tools after I connected?
Start a new chat. Claude and ChatGPT bind connectors when a conversation starts, so an existing chat keeps its original tool set. If Google Analytics itself is not connected to the workspace yet, add it under Workspace Settings → Integrations in Ryze. If the connector option is missing entirely, you are on a free Claude plan — custom connectors require Pro, Team or Max.
How is this different from Google's official Analytics MCP server?
Google's official server is built for developers: you create a Cloud project, enable the Data and Admin APIs, set up Application Default Credentials and run the server locally, and it covers GA4 only. The Ryze AI server is hosted, needs nothing beyond a Google sign-in, adds Google Ads, Meta, TikTok, Search Console and Shopify on the same endpoint, and ships ready-made AI-referral reports.
12 — Compatibility
Works in every MCP client
13 — Related
Keep reading
One OAuth login · 9 GA4 tools · Live in ~60 seconds
Add Google Analytics to your AI today.
Free to connect. Upgrade to SEO Autopilot ($129/mo flat, 7-day free trial) when you want Ryze AI to act on what the data shows, 24/7.
2,000+ clients · 700+ agencies · $500M+ managed · No dev token · No server to run

