View Categories

How to Query Google Analytics 4 with Claude / Cursor via MCP (Google Analytics MCP Server Setup)

23 min read

MCP SERVER ANALYTICS 4

Query Google Analytics 4 with Claude or Cursor via MCP.

A 5-minute setup that lets your AI tool ask plain-English questions about your GA4 data — pageviews, sessions, traffic sources, conversions, engagement — without exposing Google Analytics OAuth tokens to the AI vendor or opening firewall ports on your network.

No firewall holes One key, every connector Live data, no cache lag Bring your own AI tool

Query Streams is a secure, real-time data integration platform that brings every database and SaaS API in your account into Claude, Cursor, ChatGPT, and Grok — through a single MCP key with no firewall changes. This google analytics mcp guide walks through wiring up the Google Analytics 4 connector specifically, so your AI tool can answer plain-English questions about pageviews, sessions, traffic sources, and conversions without you exporting CSV reports out of the GA4 web UI. Learn more at QueryStreams.com and sign up for free to start asking your AI tool real marketing-analytics questions.

What the Query Streams Google Analytics MCP server gives you

Other “Google Analytics MCP” servers on the open-source landscape connect the AI tool straight to the GA4 Data API. That works, but it pushes a Google OAuth token into your AI client’s config, scopes the AI tool to only Analytics, and gives you no audit trail of what the AI actually asked. The Query Streams Google Analytics MCP server solves a wider problem: one key, every connector, full audit trail, and the AI tool never holds your Google credentials. The agent caches each GA4 property into a local DuckDB file so the LLM sees real SQL surfaces — tables, columns, joins, semantic types — instead of REST endpoints with opaque dimension and metric names.

Zero inbound firewall holes

The Network Agent opens a single outbound encrypted cloud link to Query Streams. Your AI client connects to the cloud, never to your network. No port to open, no IP to allowlist, no VPN.

One key, every connector

The same MCP key reaches every database and SaaS API your account has connected. Add a Stripe or PostgreSQL connector tomorrow and the AI tool sees it without re-keying.

Schema Intelligence baked in

The AI sees AI-curated descriptions, semantic types, enum value lists, and discovered foreign keys for every column — not just bare information_schema output. It writes accurate SQL the first try.

Read-only enforced at the agent

Even a hallucinating LLM can’t issue DELETE or UPDATE through Query Streams MCP. The Network Agent rejects anything that isn’t SELECT, WITH, or EXPLAIN before it reaches the data source.

Per-key rate limits

Default 60 requests per minute and 10 execute calls per minute, configurable per key. A runaway AI tool-call loop hits a token bucket, not your GA4 Data API quota or your wallet.

How the Google Analytics MCP server works without opening firewall ports

The Query Streams Network Agent is a small program you install once on a machine that can reach the Google Analytics Data API (any laptop, server, or cloud VM). It opens one outbound TLS cloud link to the Query Streams cloud and waits there for tool calls. When Claude or Cursor asks a question, the cloud forwards the request to the agent, the agent calls the GA4 Data API, the agent caches the response in a local DuckDB so the AI can run SQL against it, and the result streams back through the same outbound channel. Nothing inbound. Nothing exposed. The AI tool never sees your Google OAuth token, and the GA4 MCP server never holds your credentials directly — the agent does, on your network.

AI Client

Cursor, Claude,
ChatGPT, Grok

QS MCP Server

Streamable HTTP
X-MCP-Key auth

Network Agent

On your network
Cloud link out

Google Analytics 4

cached as SQL
via DuckDB

No inbound port required — the agent dials out, never the other way around

The MCP key you give Cursor or Claude is scoped (read / analyze / execute), revocable at any time, and rate-limited per-key. The AI tool calls these MCP tools to do its work:

querystreams-mcp · tool catalog
qs_list_organizationsread
Returns the org bound to the calling key.
qs_list_agentsread
Lists Network Agents and online state.
qs_list_connectorsread
Lists data connectors (one entry per database server or API).
qs_get_connector_schemaread
Returns the cached GA4 tables and columns the AI can query, with Schema Intelligence enrichment when available.
qs_profile_tableanalyze
Sample values, distributions, enum detection, semantic types — on demand.
qs_list_saved_queriesread
Pre-built parameterized SQL templates the team trusts. The AI runs them without ever seeing the SQL.
qs_run_saved_queryexecute
Executes a saved query by pattern_key with optional parameter overrides.
qs_run_queryexecute
Executes a SELECT against a connector. Read-only validator runs at the agent, before the database sees the SQL.

Why Schema Intelligence makes the GA4 MCP server different

Most “MCP for X” servers in the open-source landscape hand your AI tool the same information_schema your database hands a stranger. Column names. Data types. Maybe a primary key. For Google Analytics 4 specifically, the picture is even bleaker: a typical GA4 MCP server returns a flat list of GA4 dimension and metric names, the AI has to guess which metrics are summable vs. averaged, has no idea that engagement_rate is stored as a 0-1 decimal rather than a percentage, and has no clue that event_date is a YYYYMMDD-formatted integer rather than a real SQL DATE. That’s why the first SQL most LLMs write against a bare GA4 schema — whether returned by a generic GA4 MCP or by a generic ga4 mcp library — is wrong on the first try. It’s not that the LLM is bad. It’s that it doesn’t have the data it needs to be right.

The Query Streams MCP server returns that same schema enriched with what we call Schema Intelligence (SI) — AI-curated metadata generated by running profiling queries against your actual GA4 data before the AI client ever asks. When SI is enabled on a connector, every schema tool the AI calls (qs_get_connector_schema, qs_get_table_schema, qs_profile_table, qs_get_relationships) returns the bare schema plus six layers of curated knowledge. The LLM stops guessing on event names, traffic sources, device categories, custom dimensions, and that integer-encoded date column.

To make this concrete, here is what the AI client gets back from a single qs_get_table_schema call against the GA4 connector’s ga4_events table — first without Schema Intelligence, then with it.

Without Schema Intelligence data_source: captured_schema
// what the LLM sees == TABLE: ga4_events == Columns: – event_id varchar(64) [PK, NOT NULL] – property_id varchar(20) NOT NULL – event_date int NOT NULL – event_name varchar(40) NOT NULL – user_pseudo_id varchar(64) – device_category varchar(20) – traffic_source_medium varchar(40) – page_path varchar(500) – event_count int NOT NULL – active_users int – engagement_rate decimal(8,4) Indexes: ix_event_date, ix_property_id Foreign Keys: (none declared) si_recommendation: state: “not_run” what_youre_missing_for_this_call: – AI-discovered foreign keys – Per-column sample values + enum detection – Table and column descriptions – Semantic type classifications – Business domain tagging
With Schema Intelligence data_source: schema_intelligence
// what the LLM sees == TABLE: ga4_events [FACT, domain:analytics] == “GA4 event-level data, one row per user interaction captured from your GA4 property.” ai_analyzed_at: 2026-04-30 · ~1,847,233 rows Columns: – event_id varchar(64) [PK] identifier – property_id varchar(20) identifier Sample: “properties/123456789” – event_date int date_yyyymmdd ⚠ NOT a SQL DATE – integer YYYYMMDD encoded Sample: 20260428, 20260427, 20260426 – event_name varchar(40) status_code (enum) page_view (62%) | session_start (18%) | purchase (3%) | sign_up (2%) | … – user_pseudo_id varchar(64) identifier Sample: “1623456789.2026020314” – device_category varchar(20) status_code (enum) mobile (58%) | desktop (37%) | tablet (5%) – traffic_source_medium varchar(40) status_code (enum) organic (44%) | cpc (28%) | referral (15%) | email (8%) | direct (5%) – page_path varchar(500) url Sample: “/blog/database-mcp”, “/pricing” – event_count int counter Range: 1 – 142 – active_users int counter Range: 0 – 38 – engagement_rate decimal(8,4) percentage ⚠ Stored 0-1, multiply by 100 for % Sample: 0.4218, 0.5671, 0.3145

The six layers Schema Intelligence adds

Each layer addresses a specific class of question the LLM would otherwise guess at, and SI runs as an opt-in, read-only profiling pass that never changes your schema. More on how Schema Intelligence is generated →

AI-curated descriptions

Plain-English purpose for every database, schema, table, and column — generated once, refreshed when your schema changes. Confidence-scored; user-authored descriptions always win.

ga4_events: “GA4 event-level data,
one row per user interaction.”

Table classifications

Each table tagged FACT (transactional events), DIM (descriptive reference), or LOOKUP (small code maps), plus a business domain — analytics, sales, hr, seo, finance, support, and 14 more.

ga4_events [FACT, domain:analytics]
ga4_traffic_sources [DIM, domain:analytics]

Semantic types per column

Eighteen types — currency, email, date_yyyymmdd, status_code, percentage, ranking_position, identifier, url, person_name, and more. The AI generates dialect-correct SQL appropriate to each type.

engagement_rate: percentage
event_count: counter · event_date: date_yyyymmdd

Sample values from real data

Random rows surfaced to the LLM so it recognises patterns no schema can show — GA4-style underscored event names, custom-dimension shapes, and the actual encoding of your traffic-source strings.

page_path: [‘/blog/database-mcp’,
‘/pricing’, ‘/features/text-to-sql’]

Enum detection with distributions

Low-cardinality columns (50 or fewer distinct values, at most 5% of rows unique) mapped to their full value list with row counts. The AI never guesses casing or spelling on event names again.

event_name: page_view (62%)
| session_start (18%) | purchase (3%)

Implicit foreign-key discovery

Cross-table data overlap analysis finds joins that aren’t declared as DDL constraints. Stored alongside formal FKs with confidence scores, returned by qs_get_relationships.

ga4_events.property_id -> ga4_properties.id
(99% overlap, conf 1.0)

Same prompt, different SQL

The proof is in the SQL the AI tool actually writes. Same Cursor session, same Claude model, same prompt — “Show me my top 10 landing pages by engagement last month, where pageviews are over 100.” Without Schema Intelligence the LLM has to guess. With it, the LLM knows.

Without Schema Intelligence
— LLM’s first attempt against bare schema: SELECT TOP 10 page_path, event_count AS pageviews, engagement_rate AS engagement FROM ga4_events WHERE event_date BETWEEN ‘2026-04-01’ AND ‘2026-04-30’ AND event_name = ‘pageview’ AND event_count > 100 ORDER BY engagement_rate DESC ERROR: “Conversion failed when converting date” event_date is YYYYMMDD int, not a SQL DATE ‘pageview’ returns 0 rows — GA4 uses ‘page_view’ engagement_rate is 0-1 — shows “0.42” not “42%”
With Schema Intelligence
— LLM’s first attempt with SI enabled: SELECT TOP 10 page_path, SUM(event_count) AS pageviews, ROUND(AVG(engagement_rate) * 100, 1) AS eng_pct FROM ga4_page_performance WHERE event_date BETWEEN 20260401 AND 20260430 AND event_name = ‘page_view’ GROUP BY page_path HAVING SUM(event_count) > 100 ORDER BY eng_pct DESC 10 rows. Correct first try. event_date semantic type = date_yyyymmdd engagement_rate semantic type = percentage (×100) ‘page_view’ from discovered event_name enum
Don’t want to run Schema Intelligence? MCP still works — schema tools return bare metadata and every degraded response carries an si_recommendation block the AI can act on to enable SI mid-conversation via qs_request_si_analysis. How Schema Intelligence enrichment works →
Nova AI

MCP not for you? Try Nova AI instead.

Skip MCP entirely: Nova AI is built right into the Query Streams web portal, so you can sign in and ask the same plain-English GA4 questions — “what’s our bounce rate trend over the last 90 days?” or “which content categories drive the most signups?” — with no config files and nothing to wire up.

Meet Nova AI

Prerequisites

Before you start, make sure you have:

  1. A free Query Streams account at my.querystreams.com.
  2. The Query Streams Network Agent installed on a machine with internet access — see Download the Query Streams Agent.
  3. A Google Analytics 4 connector configured against the agent — see the existing API Connector Setup guides for OAuth pairing. The agent holds the Google OAuth token; the AI tool never touches it.
  4. Any MCP-capable AI client. We’ll show Cursor, Claude Desktop, ChatGPT, and Grok in this guide; if you use Windsurf, Zed, Continue, Cline, VS Code Copilot, Codex, or Goose, the config block is essentially the same.
  5. Five minutes.
You only set up the agent once. The same agent that powers Query Streams’ Excel and Google Sheets add-ons, the web Query Builder, and Nova AI also serves MCP. Adding MCP to an existing Query Streams account is just generating a key — the agent and connectors are already running.
1

Generate an MCP key

From the /mcp page in Query Streams, mint a key with the scopes you want.

2

Drop it into your AI client

One JSON snippet for Cursor, Claude, ChatGPT, or Grok. Same key everywhere.

3

Ask a question

“What’s our top traffic source by conversion this month?” — the AI calls the right tools, you get the answer.

Step 1: Generate a Google Analytics MCP key in Query Streams

Sign in to Query Streams and open the MCP page (or sign in first at my.querystreams.com and click MCP in the left navigation). The same Google Analytics MCP key reaches every connector in your account — not just GA4 — so you only ever generate one. Click Generate key, give the key a recognizable name (something like cursor-laptop or claude-desktop), and pick the scopes you want this key to have:

  • read — the AI can browse connectors and read schema. Required for everything else.
  • analyze — the AI can profile tables and discover relationships (sample values, distributions, semantic types). Optional but strongly recommended for analytics work, where understanding the shape of your event data matters.
  • execute — the AI can actually run SQL. Without this, the AI is read-only against schema metadata only.

For a typical “let Claude analyse my Google Analytics data” workflow, all three scopes are appropriate. For a key you’re handing to a teammate or a less-trusted client, drop execute and let them browse only. You can revoke any key at any time from the same page; the AI client will see MCP_KEY_REVOKED on its next call and stop working immediately. There’s no propagation delay.

Copy the key now — Query Streams shows it once, then stores only a hash. If you lose it, generate a new one. The key looks like qsmcp_ followed by 48 random characters and is what your AI client sends in the X-MCP-Key request header.

Step 2: Add Query Streams MCP to your AI client

The configuration is the same shape across every MCP-capable client — an MCP server entry pointing at https://mcp.querystreams.com with your key in the X-MCP-Key header. Pick your client below.

Cursor
Cursor ~/.cursor/mcp.json
// Edit ~/.cursor/mcp.json
{
  "mcpServers": {
    "querystreams": {
      "url": "https://mcp.querystreams.com",
      "headers": {
        "X-MCP-Key": "qsmcp_PASTE_KEY_HERE"
      }
    }
  }
}
Claude Desktop
Claude Desktop claude_desktop_config.json
// Settings → Developer → Edit Config
{
  "mcpServers": {
    "querystreams": {
      "url": "https://mcp.querystreams.com",
      "headers": {
        "X-MCP-Key": "qsmcp_PASTE_KEY_HERE"
      }
    }
  }
}
ChatGPT
ChatGPT Apps & Connectors
// Settings → Apps & Connectors → Add MCP
Server URL  https://mcp.querystreams.com
Auth header X-MCP-Key
Header value qsmcp_PASTE_KEY_HERE

// Requires a paid ChatGPT plan
// (Plus / Pro / Team / Enterprise).
Grok
Grok Remote MCP Tools
// Grok → Settings → Tools
{
  "mcp_servers": [{
    "name": "querystreams",
    "url": "https://mcp.querystreams.com",
    "auth_header": "X-MCP-Key",
    "auth_value": "qsmcp_..."
  }]
}

Restart your AI client. On its next start it will discover the eight Query Streams MCP tools listed above and surface them in its tool palette. In Cursor and Claude Desktop you can verify by typing “list connectors” — the AI should call qs_list_connectors and return your Google Analytics 4 connector along with anything else you have configured.

Step 3: Ask the AI a Google Analytics 4 question

You don’t write SQL — the AI does. You ask a question, the AI picks the right MCP tool, the agent runs the query against your cached GA4 data, and the answer comes back as text plus tables. Three example prompts to try first:

“What’s our top traffic source by conversion this month?”
Acquisition
The AI will call qs_get_connector_schema to discover the cached GA4 tables, then qs_run_query with a SELECT that groups by traffic_source_medium over the current month, joins to the conversion event count, and sorts by conversion rate. You’ll see the result table inline, plus a written interpretation of which channels are driving the most signups and which are leaking traffic.
“Which pages have high traffic but low engagement?”
Content Quality
The AI computes the site-wide engagement rate from your GA4 data, then filters to high-traffic pages below it. Low-engagement-but-high-traffic pages are usually content rewrite candidates — people are landing but not staying. The AI will typically flag the top 5–10 candidates and explain why each is an engagement concern (high bounce rate, short session duration, single-event sessions, etc.).
“Show me the user journey from signup to first purchase.”
Funnel
A funnel by event stage with median time-to-conversion and drop-off rates between stages. The AI tool will usually highlight the steps with the steepest drop-off, and propose a follow-up query — “want me to break this down by acquisition channel for the top-converting cohort?” — if you want to drill in. Replies are conversational; you don’t need to reset context.

The first time the AI calls a tool, your client may pop up a confirmation prompt asking you to approve the tool call — that’s MCP’s standard consent flow, not anything Query Streams adds. Approve once and the AI proceeds with the rest of the conversation freely. You can revisit the consent at any time in your client’s settings.

Honest billing notice: MCP usage is charged on uncompressed bytes

Query Streams’ Excel add-in, Google Sheets add-on, web Query Builder, and Nova AI all run over our compressed cloud link — we measure and bill compressedBytes against your data realm. The MCP transport (Streamable HTTP per the official MCP spec) does not reliably support compression end-to-end across every client and intermediate proxy, so we measure and bill uncompressedBytes for MCP traffic.

  • What this means: a 3 MB GA4 daily aggregate query costs ~3 MB of your data realm when fetched via MCP, vs. ~400–600 KB via Excel / Sheets / Nova / the Query Builder. GA4 event data is unusually compressible — repeated event-name and traffic-source strings compress 6–8x via LZ4 over our cloud link — so the gap on this connector is wider than for most databases.
  • What this isn’t: a markup or a punishment for using MCP. We pass through actual bytes shipped. The other clients are cheaper because compression works reliably on those transports; we don’t punish you for the protocol choice, but we have to be transparent about the cost shape.
  • What you can do: for very large recurring queries (e.g. 100K+ row event exports), prefer the Excel / Sheets / Nova path. For interactive AI tool calls (the typical 100–5,000 row response that fits in an LLM context), MCP is the right choice and the cost difference is in cents.

Frequently asked questions

Do I need to open ports or run a VPN to use this? +
No inbound rules, port-forwarding, NAT punchthrough, or VPN — the Network Agent makes one outbound TLS connection (port 443) and your AI client reaches https://mcp.querystreams.com from the public internet, so if outbound HTTPS works on the agent host, MCP works. See how the outbound-only connection works →
Which AI tools can I use with Query Streams MCP? +
Any client that speaks the open Model Context Protocol — Claude Desktop, Claude Code, Cursor, ChatGPT (paid), Grok, Gemini CLI, Windsurf, Zed, and 500+ more — so you bring your own AI tool and don’t have to switch. Browse the supported AI clients →
Can I revoke an MCP key? +
Yes — three independent kill-switches (per-key from the /mcp page, per-org via plan settings, and platform-level), none of which need a database password rotation or agent restart. More on revoking keys and MCP key security →
How is MCP usage billed against my data realm? +
MCP execute calls deduct from the same data-realm budget your Excel, Google Sheets, web Query Builder, and Nova AI usage already draws on — one consumption budget across every access method. The size measured for MCP differs. The other clients run over our compressed cloud link (we bill compressedBytes); MCP runs over Streamable HTTP, which doesn’t reliably support compression end-to-end through every client and proxy, so we bill uncompressedBytes. A 1 MB result returned to Excel typically costs ~150–250 KB of your data realm; the same 1 MB result returned to Cursor over MCP costs ~1 MB. We’re transparent about it because we’d rather you know up front than be surprised at the end of the billing cycle.
Does Query Streams MCP work with my GA4 property + custom dimensions and event parameters? +
Yes. The Network Agent supports any GA4 property via the standard OAuth grant Google uses for the Analytics Data API. Custom dimensions (user-scoped, event-scoped, and item-scoped) and custom event parameters are surfaced as additional columns on the cached ga4_events table and on every projection (ga4_page_performance, ga4_user_acquisition, ga4_conversions, ga4_traffic_sources) that includes them. Schema Intelligence detects custom dimensions on the first sync and includes them in the LLM’s view of the schema with semantic types, sample values, and enum distributions where applicable — so a column you defined as “customer_tier” with values free/pro/enterprise shows up to the AI as a status_code enum, not as an opaque varchar. You can register multiple GA4 properties as separate connectors (e.g. main site + blog + mobile app) and the LLM picks the right one by name. Universal Analytics, the deprecated predecessor, is not supported — GA4 only.
How does this differ from running an open-source GA4 MCP server myself? +
A direct Google Analytics MCP server (community projects on GitHub do exist) is one MCP per data source. To get Claude reading from GA4 + your PostgreSQL + your Stripe account + your Snowflake warehouse you’d need four MCP servers configured separately in every AI client, each with its own credentials, each with its own scope model, each with its own audit story. Query Streams MCP is one key reaching every connector your account has paired. You also pick up Schema Intelligence, agent-layer read-only enforcement, per-key rate limits, audit trail in event_logs, and the same data-realm billing pipeline you already use — none of which a direct MCP gives you. And on the GA4 side specifically, the cached SQL surface (with the YYYYMMDD date semantic-type annotation, the engagement-rate percentage hint, and discovered enum values for event_name) gives the LLM far better first-shot accuracy than translating natural language straight into a GA4 Data API runReport call.
What happens if the AI tries to write or delete data? +
It’s rejected at the agent before the data source sees the SQL. Every qs_run_query call is parsed by a hardcoded read-only validator that allows only SELECT, WITH, and EXPLAIN statements; anything else returns READONLY_VIOLATION and never reaches the GA4 cache. The validator runs in the agent process on your network, not in the cloud, so a compromised cloud surface couldn’t bypass it. (The GA4 Data API itself is read-only too, but the same protection applies to every other connector you might add — PostgreSQL, MySQL, etc.)
Can I see what the AI actually asked? +
Yes. Every MCP tool call writes a row to event_logs with the org, user, key, scope, latency, and result code. The org-admin can answer “who used MCP last week, which connector, and what did they ask?” with a single query. Note that we log the tool name and metadata, not the SQL text or returned rows — those flow through the cloud link and never land in cloud logs. For GA4 specifically the event_logs table is also your only audit trail: unlike most databases, the GA4 Data API does not expose an admin audit log to OAuth applications, so the agent-side log is the source of truth for “who queried which property, when”.
Do I have to run Schema Intelligence to use Query Streams MCP? +
No — Schema Intelligence is opt-in per (connector, database) pair, and MCP works fine without it. The AI gets bare schema (types, primary keys, formal foreign keys, indexes) and writes basic queries. With SI enabled, the AI gets six additional layers of curated metadata: (1) AI-curated descriptions on every database, table, and column; (2) table classifications (FACT for transactional events, DIM for descriptive reference, LOOKUP for small code maps) plus a business domain tag (sales, hr, seo, finance, support, and 14 more); (3) a semantic type on every column (currency, email, date_yyyymmdd, status_code, percentage, ranking_position, identifier, url, person_name, and 9 more) that drives dialect-correct SQL generation; (4) sample values from your real data so the LLM recognises patterns no schema can show; (5) enum detection with full value distributions for low-cardinality columns; and (6) AI-discovered foreign keys based on cross-table data overlap, surfaced through qs_get_relationships. Without SI, every schema-tool response also carries an si_recommendation block listing exactly what’s missing for the call — the AI can read this and offer to trigger SI mid-conversation via qs_request_si_analysis. Run time scales with table count: a small database under 100 tables completes in around 10 minutes; a typical mid-size database (a few hundred tables) finishes in 15–25 minutes; a large enterprise database with 1,500+ tables can take 45–60 minutes for a full scan. SI runs through your Network Agent against your data (never in the cloud), never writes to your database, never changes your schema, and refreshes incrementally when your schema changes — so subsequent runs after you add or alter tables are much faster than the first one. The end-to-end effect: with SI enabled, your AI client writes correct SQL on the first try far more often than it does against any “MCP for X” server that just hands the LLM information_schema.
What if I add another connector later, like Stripe or PostgreSQL? +
Nothing changes client-side — the same key reaches the new connector the moment the agent pairs it (qs_list_connectors picks it up automatically), so one config block buys your whole account, present and future. Why one key covers every connector →
Do I have to set up MCP just to chat with my data? +
No — Nova AI is built into the Query Streams portal and works against every connector (Google Analytics 4 included) with no MCP setup or config files; use Nova to chat with your data inside Query Streams, and use MCP when you want your own AI client (Claude, Cursor, ChatGPT, …) to reach the same data on the same agent, connectors, and Schema Intelligence. Learn more about Nova AI →

Get started

Connect your AI tool to your GA4 data in five minutes.

One google analytics mcp key reaches GA4, every database, and every other API connector in your Query Streams account — with full audit trail, per-key rate limits, and zero firewall changes. Whether your stack is Claude + GA4, Cursor + GA4, ChatGPT, or Grok, the same key and the same Network Agent serve every client.

Related guides: Download the Query Streams Agent | API Connector Setup | All MCP Server guides | Nova AI text-to-SQL

Category: MCP Server

Tags: mcp, claude, cursor, chatgpt, grok, google-analytics, ga4, web-analytics, marketing-analytics, api-connector, ai

Meta Description: Connect Claude or Cursor to Google Analytics 4 via MCP. Query GA4 data with AI in plain English. Free.

Updated on June 16, 2026

Powered by BetterDocs