ga4-firebase-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GA4_MCP_CONFIG | No | Override the config file path (default: ~/.config/ga4-mcp/config.json) | |
| GA4_PROPERTIES | No | Read-only GA4 properties configuration | |
| GA4_PROPERTY_ID | No | Read-only GA4 property ID | |
| GA4_QUOTA_PROJECT | No | Read-only GCP quota project |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ga4_configureA | Save a GA4 property so every other tool can use it by name, and remember it across sessions. Give either property_id or firebase_project (the linked GA4 property is looked up). Choose how to authenticate with auth_type. The connection is tested before saving, unless skip_test is true. Saving an existing name replaces it. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4; con firebase_project, además Firebase Viewer en ese proyecto. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_list_propertiesA | List the GA4 properties this server remembers: name, property id, Firebase project, quota project, how it authenticates (secrets masked) and which one is the default. |
| ga4_set_defaultA | Choose which saved GA4 property tools use when a call names none. |
| ga4_remove_propertyA | Forget a saved GA4 property. Properties that come from environment variables can't be removed here. |
| ga4_test_connectionA | Check that a saved property's credentials can read its GA4 data: returns active users and events for the last 7 days, or the API error. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_property_from_firebaseA | Find the GA4 property linked to a Firebase project, with the data stream for each Android and iOS app. Use it before ga4_configure when you only know the Firebase project. Requires: Firebase Management API (firebase.googleapis.com) enabled on the quota project; Firebase Viewer (o Lector) en el proyecto de Firebase. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_firebase_appsA | List the Android, iOS and web apps of a Firebase project, with their app ids, package names and bundle ids. Requires: Firebase Management API (firebase.googleapis.com) enabled on the quota project; Firebase Viewer (o Lector) en el proyecto de Firebase. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_check_accessA | Check, for a saved property, which Google APIs are enabled and reachable (Data API, Admin API, Firebase Management API) and whether the credentials can write (analytics.edit scope). Returns which tools work, which are blocked, and the exact steps to unblock each. Call it before using Admin tools (custom dimensions, streams, key events...) or when a tool fails for access. |
| ga4_metadataA | List the dimensions and metrics available in the GA4 property, including custom event parameters registered as custom dimensions (customEvent:*). Use before ga4_run_report to find valid API names. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_check_compatibilityA | Check which dimensions and metrics can be combined in one report. Pass the ones you plan to use; the answer marks each as COMPATIBLE or INCOMPATIBLE and lists what else fits. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_run_reportA | Run any GA4 Data API report. Dimensions and metrics use API names (see ga4_metadata), e.g. dimensions ["eventName","platform"], metrics ["eventCount","totalUsers"]. Filters and orderBys use the Data API JSON shape. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_batch_reportsA | Run up to 5 reports in one call (Data API batchRunReports). Each request uses the raw RunReportRequest JSON shape: dateRanges, dimensions, metrics, dimensionFilter, orderBys, limit… Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_pivot_reportA | Pivot table report (Data API runPivotReport): rows and columns from different dimensions, e.g. platform across columns and eventName down rows. Each pivot lists its fieldNames and limit. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_realtime_reportA | Realtime report for the last 30 minutes (Data API runRealtimeReport). Realtime has its own, smaller set of fields: dimensions like eventName, platform, country, city, unifiedScreenName, appVersion, minutesAgo; metrics activeUsers, eventCount, screenPageViews, keyEvents. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_event_countsA | Event count and unique users for a list of events (or every event starting with a prefix), optionally over time (day, ISO week or month) and split by one more dimension such as platform or country. Unique users are deduplicated within each period, so they cannot be summed across periods. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_top_eventsA | Most frequent events in a period, with event count, unique users and events per user. Optionally only events starting with a prefix. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_compare_periodsA | Compare two date ranges side by side: each row gets the metric in the current period, the previous period, and the relative change. Good for week over week or month over month. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_active_usersA | Daily active users with their 7-day and 28-day rolling counts (DAU, WAU, MAU) and stickiness ratios, optionally split by platform or another dimension. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_cohort_retentionA | Weekly or monthly retention of first-time users: one cohort per week (or month) of first visit, with active users in each following period and the share retained. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_screen_viewsB | App screens (or web pages) by views, users and engagement time. Optionally only screens whose name contains a text. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_acquisitionA | Where new users come from: first-user source, medium and campaign, with new users, active users and key events. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_tech_breakdownA | Users and events by platform, app version, operating system version or device model; optionally only for some events. Useful to spot a version or device where a step fails. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_funnelA | Sequential funnel over GA4 events (Data API runFunnelReport, v1alpha): counts users who completed each step in order, with completion and abandonment rates per step. Optionally broken down by a dimension such as platform. The endpoint is alpha and can return user counts that disagree with ga4_event_counts for the same events and dates (for example more users at a step than ever fired its event): cross-check before reporting. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_step_conversionA | Funnel built from unique users per event (not sequential): for each event in order, users, share of the first step and share kept from the previous step, optionally split by a dimension such as platform. Reliable where ga4_funnel's alpha counts are not, but a user can count at a later step without having done the earlier ones. Requires: Google Analytics Data API (analyticsdata.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_account_summariesA | List every Google Analytics account and property these credentials can access, with property ids and names. Useful to find the property id to configure. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; cualquier rol en al menos una cuenta de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_property_detailsA | Property settings: display name, time zone, currency, industry, service level and creation date. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_data_streamsB | Data streams of the property: one per Android app, iOS app or website, with package name, bundle id or URL. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_custom_dimensionsB | Event and user parameters registered as custom dimensions. Only these parameters can be used in reports, as customEvent: or customUser:. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_custom_metricsB | Numeric event parameters registered as custom metrics, usable in reports as customEvent:. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_create_custom_dimensionA | Register an event parameter (for example destination) as a custom dimension so reports can use it as customEvent:. This changes the property for everyone. Data is only available from the day it is registered, not before. Needs the Editor role and the analytics.edit scope. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Editor en la propiedad de GA4; OAuth scope analytics.edit. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_key_eventsB | Events marked as key events (formerly conversions) in the property. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_audiencesB | Audiences defined in the property, with their membership rules. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_bigquery_linksA | BigQuery export links of the property: target project, daily or streaming export, and which streams are exported. Raw event data with every parameter lives there. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_firebase_linksB | Firebase projects linked to the property. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_data_retentionB | How long GA4 keeps event-level and user-level data for explorations. Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Lector (Viewer) en la propiedad de GA4. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
| ga4_change_historyA | Recent configuration changes in the property: who changed what and when (Admin API searchChangeHistoryEvents). Requires: Google Analytics Admin API (analyticsadmin.googleapis.com) enabled on the quota project; Editor o Administrador en la cuenta de GA4; OAuth scope analytics.edit. If it fails for access, the error explains how to fix it; ga4_check_access checks everything at once. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
Most tools target clearly distinct GA4 surfaces (top events vs. realtime vs. pivot vs. batch reports; custom dimensions vs. custom metrics; list vs. create dimension). A few pairs are genuinely close — ga4_top_events vs. ga4_event_counts, ga4_funnel vs. ga4_step_conversion, ga4_check_access vs. ga4_test_connection, and the three Firebase tools (property_from_firebase / firebase_apps / firebase_links) — but the descriptions explicitly cross-reference and differentiate them, which mitigates the risk.
All 36 tools share a uniform ga4_ prefix and snake_case, so the family is immediately recognizable. Most names are noun-phrase report/resource names (ga4_active_users, ga4_audiences, ga4_data_streams) while a handful use verb_noun (ga4_create_custom_dimension, ga4_list_properties, ga4_run_report, ga4_configure); the mix is readable but not a single strict verb_noun pattern.
36 tools is heavy for one server and well past the comfortable 3-15 range, partly because many convenience wrappers (top_events, event_counts, active_users, acquisition, tech_breakdown, screen_views, cohort_retention, compare_periods, step_conversion) are thin specializations of ga4_run_report. The breadth of GA4 Data + Admin + Firebase + connection-management domains justifies a large surface, but consolidation would make selection easier.
Reporting coverage is excellent — generic, batch, pivot, realtime, funnel, cohort, and many prebuilt reports — and admin read coverage spans properties, streams, audiences, key events, links, retention, and change history. The main gap is write/CRUD depth: only custom dimension creation exists, with no update/delete of dimensions, key events, or streams, though connection setup, access diagnostics, and metadata discovery are all present.