QuerySail: Google Analytics
Server Details
Hosted, read-only Google Analytics 4 MCP: reports, period comparisons, realtime, custom fields.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- querysail/querysail-ga4
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
5 toolscompare_reportCompare Google Analytics periodsRead-onlyIdempotentInspect
Use this when the user asks what changed between two periods, why traffic or conversions went up or down, or which channels, sources, pages or countries gained or lost. Compares metrics for one property between a current period and the previous period (default), the same weekdays a year earlier, or custom dates, in one Google request. Returns each metric's totals with absolute and percent change and, with a dimension, the top gainers and losers ranked by change in one metric. With no dates the current period is the last 28 days ending yesterday. Filters apply to both periods. Changes are observed differences and do not identify causes. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| movers | No | Gainers and losers to return each. Default 10, maximum 50. | |
| filters | No | All filters are combined with AND. A filter on a requested metric is numeric (equals, notEquals, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual with a number value); any other field is a dimension filter with a string operator. | |
| metrics | No | Metric API names to compare. Default activeUsers, sessions, screenPageViews. | |
| rank_by | No | Metric to rank movers by. Must be one of metrics. Default the first metric. | |
| end_date | No | Current period end: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'), in the property's time zone. Provide together with start_date. | |
| dimension | No | Optional breakdown for top gainers and losers, e.g. 'sessionDefaultChannelGroup', 'sessionSourceMedium', 'landingPage', 'country'. Not a time dimension. | |
| compare_to | No | 'previous_period' (default) is the same number of days immediately before; 'previous_year' is 52 weeks earlier, so weekdays line up; 'custom' uses compare_start_date and compare_end_date. | |
| start_date | No | Current period start: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'), in the property's time zone. Provide together with end_date. | |
| property_id | Yes | Exact property ID from list_properties, e.g. 'properties/123456789'. | |
| connection_id | No | Optional: force a specific Google connection when the property is visible to several. | |
| compare_end_date | No | Comparison period end for compare_to 'custom'. | |
| compare_start_date | No | Comparison period start for compare_to 'custom'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| units | No | |
| losers | No | |
| totals | No | |
| gainers | No | |
| request | No | |
| coverage | No | |
| property | No | |
| freshness | No | |
| requestId | No |
list_fieldsList Google Analytics dimensions and metricsRead-onlyIdempotentInspect
Use this to find the exact API names of dimensions and metrics a property can report on, including its custom dimensions, custom metrics and key events, before calling run_report. Filter by kind, a search term (matched against the API name, display name and category) or custom definitions only. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which fields to list. Default 'all'. | |
| limit | No | Fields to return. Default 100, maximum 300. | |
| search | No | Optional text to match, e.g. 'channel', 'revenue' or 'page'. | |
| custom_only | No | Only the property's custom definitions. Default false. | |
| property_id | Yes | Exact property ID from list_properties, e.g. 'properties/123456789'. | |
| connection_id | No | Optional: force a specific Google connection when the property is visible to several. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| fields | No | |
| coverage | No | |
| property | No | |
| requestId | No |
list_propertiesList Google Analytics propertiesRead-onlyIdempotentInspect
Use this when the user asks which Google Analytics sites or apps they can access, or to find the exact property_id for one. Returns Google Analytics 4 properties with their property ID (like 'properties/123456789'), display name and Analytics account, and which connected Google accounts can see each. The same property is listed once even if several connected Google accounts can see it. Universal Analytics properties are not included. Read-only. Does not change anything in Google Analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from a previous result's coverage.nextCursor. | |
| connection_id | No | Optional: only list properties visible to this Google connection (connectionId from a previous result). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| coverage | No | |
| requestId | No | |
| properties | No | |
| connections | No |
run_realtime_reportRun a Google Analytics realtime reportRead-onlyIdempotentInspect
Use this when the user asks what is happening on their site or app right now: active users in the last 30 minutes, optionally by country, city, device, platform, page or screen ('unifiedScreenName') or event name. Default metric activeUsers; eventCount, screenPageViews and keyEvents are also available. Standard properties cover the last 30 minutes, GA4 360 properties 60. Realtime figures are preliminary and never cached. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | All filters are combined with AND. A filter on a requested metric is numeric (equals, notEquals, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual with a number value); any other field is a dimension filter with a string operator. | |
| metrics | No | Realtime metric API names. Default activeUsers. | |
| order_by | No | ||
| row_limit | No | Rows to return. Default 20, maximum 100. | |
| dimensions | No | Realtime dimension API names, e.g. 'country', 'city', 'deviceCategory', 'platform', 'unifiedScreenName', 'eventName', 'minutesAgo'. | |
| minutes_ago | No | How many minutes back to cover, up to now. Default 29 (the last 30 minutes). | |
| property_id | Yes | Exact property ID from list_properties, e.g. 'properties/123456789'. | |
| connection_id | No | Optional: force a specific Google connection when the property is visible to several. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| units | No | |
| totals | No | |
| request | No | |
| coverage | No | |
| property | No | |
| freshness | No | |
| requestId | No |
run_reportRun a Google Analytics reportRead-onlyIdempotentInspect
Use this to retrieve Google Analytics 4 data for one property: users, sessions, views, engagement, events, key events, revenue and any other metric, optionally broken down by dimensions such as date, channel, source/medium, landing page, page path, country, device or event name, and narrowed with filters (for example sessions from Organic Search to pages starting with '/blog/'). With no metrics it reports activeUsers, sessions and screenPageViews; with no dates it covers the last 28 days ending yesterday. Dates are in the property's time zone. Returns totals and up to 100 rows per call (default 20); page through with the returned cursor. Rates such as engagementRate are fractions. Google may withhold small values (thresholding) or sample large reports; the result says so. Figures are observed values and do not identify causes. Use list_fields to find custom dimension and metric names. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from coverage.nextCursor of the previous call with the same arguments. | |
| filters | No | All filters are combined with AND. A filter on a requested metric is numeric (equals, notEquals, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual with a number value); any other field is a dimension filter with a string operator. | |
| metrics | No | Metric API names, e.g. 'activeUsers', 'newUsers', 'sessions', 'engagedSessions', 'engagementRate', 'screenPageViews', 'eventCount', 'keyEvents', 'totalRevenue'. Default activeUsers, sessions, screenPageViews. | |
| end_date | No | Inclusive end date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'), in the property's time zone. Provide together with start_date. | |
| order_by | No | Sort order. Default: chronological when grouping by a time dimension such as date, otherwise the first metric, highest first. | |
| row_limit | No | Rows per call. Default 20, maximum 100. | |
| dimensions | No | Dimension API names to group by, e.g. 'date', 'sessionDefaultChannelGroup', 'sessionSource', 'pagePath', 'landingPage', 'country', 'deviceCategory', 'eventName', or custom ones such as 'customEvent:plan'. Omit for totals only. | |
| start_date | No | Inclusive start date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'), in the property's time zone. Provide together with end_date. | |
| property_id | Yes | Exact property ID from list_properties, e.g. 'properties/123456789'. | |
| connection_id | No | Optional: force a specific Google connection when the property is visible to several. | |
| include_totals | No | Also return totals across all rows. Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| units | No | |
| totals | No | |
| request | No | |
| coverage | No | |
| property | No | |
| freshness | No | |
| requestId | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
compare_report - First observed
list_fields - First observed
list_properties - First observed
run_realtime_report - First observed
run_report
Related MCP Connectors
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
Read-only Google Analytics 4 MCP server for AI assistants.
1Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Hosted, read-only Google Search Console MCP: performance, comparisons, URL inspection, sitemaps.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables read-only Google Analytics 4 reporting through MCP, including daily summaries, top pages, acquisition, events, realtime activity, metadata, and custom reports with CSV/JSON output.8MIT
- FlicenseNot gradedqualityCmaintenanceRead-only access to Google Analytics 4 reporting data, including traffic overview, top pages, traffic sources, and conversion events, supporting custom report queries via MCP.-
- AlicenseAqualityAmaintenanceEnables read-only access to Google Analytics 4 data through seventeen tools covering reports, realtime data, funnels, pivots, metadata, and admin lists. It runs locally with service account credentials and lets users query properties via standard MCP clients.17MIT
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server exposing Google Analytics 4 and AdSense APIs (reports, metadata, admin reads) via Cloudflare Workers with OAuth authentication.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.