Google Analytics 4 MCP Server
A hosted Google Analytics 4 MCP server: what 95 GA4 tools add over a single run-report tool, how it differs from Google’s official open-source Analytics MCP, and how to set it up.
What a call looks like
These are real tool names from the live server, with the shape of what they return.
ga4_channel_performance{
"property_id": "312345678",
"date_range": "2026-08-01 to 2026-08-31",
"rows": [
{ "channel": "Paid Search", "sessions": 48210, "conversions": 1204, "conversion_rate": 2.50, "revenue": 96120.40 },
{ "channel": "Organic Search","sessions": 61877, "conversions": 1011, "conversion_rate": 1.63, "revenue": 78455.10 },
{ "channel": "Paid Social", "sessions": 39402, "conversions": 318, "conversion_rate": 0.81, "revenue": 21980.00 }
]
}ga4_funnel_analysis{
"steps": [
{ "step": "/pricing", "users": 12840 },
{ "step": "/signup", "users": 3105, "drop_off": 0.758 },
{ "step": "/checkout", "users": 1422, "drop_off": 0.542 }
]
}ga4_diagnose_missing_conversions{
"key_events_marked": ["purchase", "generate_lead"],
"events_firing_30d": { "purchase": 0, "generate_lead": 214, "form_submit": 388 },
"findings": [
"purchase is marked as a key event but has not fired in 30 days.",
"form_submit fires 388 times but is not a key event."
]
}get_ga_compare_wow{
"current": { "sessions": 21944, "users": 17210, "conversions": 402, "revenue": 31288.00 },
"previous": { "sessions": 20410, "users": 16033, "conversions": 441, "revenue": 34010.50 },
"change_pct": { "sessions": 7.5, "conversions": -8.8, "revenue": -8.0 }
}What the 95 GA4 tools are
They fall into four groups, and knowing them helps you write prompts the assistant answers in one call. Names are real; the full list is in the GA4 tool reference.
- Core reports — ga4_overview, ga4_traffic_sources, ga4_acquisition_channels, ga4_channel_performance, ga4_top_pages, ga4_landing_pages, ga4_events, ga4_conversions, ga4_device_breakdown, ga4_geographic_breakdown, ga4_realtime, and ga4_run_custom_report for any dimension and metric combination the preset tools do not cover
- Analysis — ga4_funnel_analysis, ga4_path_exploration, ga4_user_journey, ga4_cohort_analysis, ga4_user_retention, ga4_attribution_paths, ga4_compare_date_ranges, ga4_core_web_vitals, ga4_site_search_terms, ga4_predictive_metrics
- Ecommerce — ga4_ecommerce and ga4_ecommerce_items for revenue, transactions, average order value, cart and purchase behaviour per item
- Presets — about 50 get_ga_ tools for fixed windows and common views: get_ga_traffic_7d, get_ga_compare_wow, get_ga_compare_yoy, get_ga_paid_social, get_ga_day_hour_heatmap, get_ga_executive_dashboard, get_ga_ecommerce_dashboard and the rest. The assistant uses them when you ask for exactly that window, and the flexible tools otherwise.
- Audit and setup — ga4_audit_property_settings, ga4_check_data_quality, ga4_diagnose_missing_conversions, ga4_check_google_ads_integration, ga4_export_property_config, ga4_list_custom_dimensions, ga4_create_custom_dimension, ga4_bulk_create_key_events, ga4_create_audience, ga4_link_google_ads, ga4_setup_lead_gen_property, ga4_setup_ecommerce_property
GA4 as the check on your ad platforms
Every ad platform grades its own homework: Google Ads, Meta and TikTok each count conversions with their own attribution and windows, and together they usually claim more sales than you made. GA4 is where they can be put side by side. With GA4 connected next to the ad platforms, one prompt — “compare what Meta and Google Ads say they converted last month with what GA4 attributes to paid social and paid search” — runs meta_ads_campaign_performance, a Google Ads report and ga4_channel_performance and lines them up. The gap is rarely a bug; it is attribution, click-versus-view windows and consent. But it is the number budget decisions should be made against, and it is the thing a GA4-only server cannot do.
Audit and fix tracking, not just report on it
A surprising amount of GA4 trouble is setup: a purchase event marked as a key event that has not fired in a month, a form_submit that fires but was never marked, a Google Ads link that was never made so no conversions import. ga4_audit_property_settings checks streams, key events, Google Ads links, retention and custom dimensions in one pass; ga4_diagnose_missing_conversions compares events marked as key events with the events actually firing; ga4_check_google_ads_integration confirms the link. When the fix is in GA4 itself the assistant can apply it — ga4_bulk_create_key_events, ga4_create_custom_dimension, ga4_link_google_ads — once you ask, and only if your Google identity has edit access on the property.
Connecting, and what the Google consent covers
GA4 uses Google sign-in in the browser. It asks for Analytics read access, and edit access so the setup tools above can work; reporting needs only Viewer on the property, while creating key events, dimensions, audiences or links needs Editor. Connect with the same Google identity you use for Google Ads — splitting them across two identities is the usual reason one connects and the other does not. Every property that identity can reach is available; ga4_list_properties lists them, and you can set a default so you do not repeat the property id. The token is stored encrypted on the MCP Ads side and never reaches your AI client. Setup for each client is on the quickstart, and GA4 specifics are in the GA4 guide.
Google’s official Analytics MCP server, and when it is the better pick
Google’s Analytics team maintains an official open-source MCP server at github.com/googleanalytics/google-analytics-mcp, under the Apache 2.0 licence. It runs locally (installed with pipx), authenticates with Google Application Default Credentials through gcloud, is read-only, and is marked experimental. Its tools are general-purpose: get_account_summaries, get_property_details, run_report, run_realtime_report, get_custom_dimensions_and_metrics and a few more. The honest split:
- Pick Google’s server if you want a free, first-party, read-only connection, are comfortable with gcloud and a local Python install, and are happy for the model to compose each report from dimensions and metrics itself. For an analyst who knows GA4 well, that is often all that is needed.
- Pick MCP Ads if you want it hosted, with browser sign-in and nothing to install; if you want named analyses (funnels, cohorts, attribution paths, Core Web Vitals) and property audits rather than raw reports; if you need the setup tools that write; or if GA4 should sit in the same conversation as Google Ads, Meta, TikTok, LinkedIn and Search Console. It is $49/month flat after a 3-day free trial — see pricing.
Questions
Is there a free GA4 MCP server?
Yes. Google’s official Analytics MCP server is free and open source, runs locally with gcloud credentials and is read-only. MCP Ads has a 3-day free trial rather than a free plan.
Can it change my GA4 property?
Only through explicit setup tools — creating key events, custom dimensions or audiences, or linking Google Ads — which run when you ask, need Editor access on the property, and are refused for viewer-role users in your MCP Ads workspace. Report tools change nothing.
Why do GA4 and Google Ads disagree on conversions?
Different attribution models and windows. Google Ads credits the ad click that preceded the conversion; GA4 applies its own model across channels. Comparing them deliberately is more useful than making them match.
Does it work with more than one property?
Yes. Every property your Google identity can reach is available. Name the property in the request, or set a default in the dashboard.
Does it support realtime data?
Yes. ga4_realtime returns active users from the last 30 minutes by page and country.
Related
Muse can already use your apps. MCP Ads gives it every ad account you run - and a reason to check on them before you ask.
One MCP server that gives Grok live access to every ad account you run - and gives Grok Bot something worth scheduling.
Ask what a competitor is running and get their live ads back - from Google's Ads Transparency Center and Meta's Ad Library, in the same chat you plan campaigns in.
Connect an account and try it
Add MCP Ads to Claude or ChatGPT with one URL, authorise an ad account in the browser, and ask it something.