Skip to main content
Glama
GermaniU

ga4-seo-mcp

by GermaniU

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoHTTP bind address.127.0.0.1
MCP_PORTNoHTTP bind port.8000
MCP_TRANSPORTNoMCP transport: stdio, streamable-http or sse.stdio
MCP_AUTH_TOKENNoRequire Authorization: Bearer <token> on every HTTP request.
GA4SEO_TOOLSETSNoComma-separated toolsets to enable. Same as --toolsets.admin,data,gsc,psi
DATAFORSEO_LOGINNoDataForSEO login for the dataforseo toolset.
MCP_CORS_ORIGINSNoComma-separated exact origins for a browser client. Never *.
MCP_ALLOWED_HOSTSNoComma-separated host/IP values clients use. Required when binding 0.0.0.0 and connecting over the LAN.
PAGESPEED_API_KEYNoRecommended PageSpeed Insights API key. The anonymous quota is shared and often exhausted.
DATAFORSEO_PASSWORDNoDataForSEO password for the dataforseo toolset.
GA4SEO_ENABLE_WRITESNoSet to 1 to enable write tools. Same as --enable-writes.0
GOOGLE_ADS_DEVELOPER_TOKENNoGoogle Ads developer token for the ads toolset.
GOOGLE_ADS_LOGIN_CUSTOMER_IDNoGoogle Ads login customer ID, only when operating through a manager (MCC) account.
GOOGLE_APPLICATION_CREDENTIALSNoService account key file. Unset means Application Default Credentials from gcloud.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_account_summariesA

List every GA4 account you can access, with a summary of its properties.

Start here to find the account_id and property_id the other tools need.

list_propertiesA

List the GA4 properties under an account.

Args: account_id: numeric account ID or 'accounts/123456789'. include_deleted: also return properties in the trash (soft-deleted, kept 35 days).

get_propertyB

Get the full settings of a GA4 property (time zone, currency, industry, type).

list_data_streamsB

List the data streams (web, iOS, Android) of a GA4 property.

Web streams include their measurement ID (G-XXXXXXX) and default URI.

get_data_streamB

Get one data stream, including the measurement ID of a web stream.

list_key_eventsC

List the key events (formerly conversions) declared on a GA4 property.

list_custom_dimensionsB

List the custom dimensions declared on a GA4 property, with their scope.

list_google_ads_linksC

List the links between a GA4 property and Google Ads accounts.

bootstrap_site_measurementA

Plan, and optionally apply, the full measurement setup of a website.

With apply=False (default) nothing is changed: it detects what already exists for the site (GA4 property and web stream matched by the site's domain, key events, custom dimensions, Search Console domain property) and returns the steps that would run. Show this plan to the user and get explicit confirmation before calling apply=True.

With apply=True (requires the server to run with --enable-writes) it creates only the missing pieces, skipping what exists, so it is safe to re-run. It returns a step-by-step report with the GA4 measurement ID (G-...) and the DNS TXT token for Search Console. DNS verification and sitemap submission stay manual follow-up steps (sc_verify_site_dns, sc_submit_sitemap) because the TXT record must be published first.

Args: site_url: the site, e.g. 'https://example.com'. account_id: GA4 account that owns (or will own) the property; see list_account_summaries. property_display_name: name for a new property; also used to find an existing one. time_zone: IANA time zone for a new property, e.g. 'America/Mexico_City'. currency_code: ISO 4217 currency for a new property, e.g. 'USD'. key_events: event names to mark as key events, e.g. ['generate_lead']. custom_dimensions: parameters to register as custom dimensions. apply: False = plan only (default); True = execute the plan.

run_reportA

Run a flexible GA4 report.

Args: property_id: numeric ID or 'properties/123456789'. metrics: e.g. ['sessions', 'activeUsers', 'keyEvents']. Catalog: https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics dimensions: optional, e.g. ['date', 'sessionSource', 'pagePath']. Catalog: https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions date_start: 'YYYY-MM-DD', 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). date_end: same formats as date_start. limit: maximum rows (default 25). order_by_metric: sort by this metric, e.g. 'sessions'. order_desc: sort descending (default True).

Returns the dimension and metric names, the date range, row_count and the rows.

run_realtime_reportA

Realtime report for the last 30 minutes.

Useful to confirm that a new event fires in production right after a deploy.

Args: metrics: default ['activeUsers']; 'eventCount' also works. dimensions: default ['eventName']; also 'unifiedScreenName', 'country', 'deviceCategory'.

top_pagesC

Top pages by sessions, with active users, bounce rate and average session duration.

events_summaryA

Count of every event that fired, to audit what is actually being measured.

Compare it with list_key_events to find key events that never fire.

traffic_sourcesC

Top traffic sources (source / medium) with sessions, active users and conversions.

conversions_summaryC

Conversions and total users per event name: a summary of the active key events.

web_vitals_summaryA

Core Web Vitals reported by your own site as GA4 events.

Requires the site to send web-vitals events with the parameters web_vital_metric and web_vital_rating, both registered as event-scoped custom dimensions. For Google's field data use psi_field_data_only instead.

audit_portfolioB

Summary metrics for several GA4 properties in one call.

Returns sessions, active users, conversions, bounce rate and average session duration per property, plus the properties that failed and why.

Args: property_ids: e.g. ['123456789', '987654321'].

sc_list_sitesA

List the Search Console sites you can access.

Each entry has siteUrl ('sc-domain:example.com' for domain properties or a URL prefix like 'https://example.com/') and permissionLevel ('siteOwner', 'siteFullUser', 'siteRestrictedUser' or 'siteUnverifiedUser').

sc_top_queriesA

Top search queries with clicks, impressions, CTR (%) and average position.

Args: site_url: 'sc-domain:example.com' or 'https://example.com/', exactly as in sc_list_sites. date_start: 'YYYY-MM-DD'. date_end: 'YYYY-MM-DD'. Search Console data lags 2-3 days. limit: rows to return (max 25000). country: optional ISO 3166-1 alpha-3 code to filter by, e.g. 'mex' or 'usa'.

sc_page_performanceC

Top pages in Google Search by clicks, with impressions, CTR (%) and average position.

sc_query_breakdown_by_pageB

Which search queries bring traffic to one specific page.

Useful to decide which keywords to strengthen in that page's content.

sc_list_sitemapsA

List the sitemaps submitted for a Search Console site, with errors and warnings.

psi_auditA

Run a PageSpeed Insights audit (Lighthouse lab test + CrUX field data) on a public URL.

Takes 30-90 seconds. Without PAGESPEED_API_KEY the anonymous quota is small and Google may answer 429; set the key for regular use.

Args: url: absolute public URL, e.g. 'https://example.com/'. strategy: 'mobile' (default) or 'desktop'. categories: subset of ['performance', 'accessibility', 'best-practices', 'seo']. Default: all four.

Returns 0-100 category scores, lab Core Web Vitals (LCP, FCP, CLS, TBT, SI, TTFB) and, when Chrome has enough real-user traffic, CrUX p75 field data for the URL and its origin.

psi_field_data_onlyA

Only the CrUX field data (real Chrome users, p75 over 28 days) for a URL and its origin.

PageSpeed Insights still runs a performance-only Lighthouse pass, so expect 15-40 seconds. overall_category is FAST, AVERAGE or SLOW; it is null when the page has too little traffic.

Prompts

Interactive templates invoked by user choice

NameDescription
audit_ga4_setupAudit the measurement setup of a GA4 property: streams, key events, dimensions, Ads links.
seo_360_audit360° audit of organic search and web performance (Search Console + GA4 + PageSpeed).
portfolio_performance_digestConsolidated performance digest for several GA4 properties. Args: property_ids: comma-separated GA4 property IDs, e.g. '123456789,987654321'.
launch_site_measurementGuided end-to-end measurement setup for a site: plan, confirm, apply, verify, baseline.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have distinct resource+action targets, and the descriptions clearly separate similar pairs (psi_audit vs psi_field_data_only, web_vitals_summary vs psi_field_data_only). However, top_pages, events_summary, traffic_sources and conversions_summary are all essentially preset versions of run_report, creating mild overlap an agent must reason about.

Naming Consistency4/5

Names use consistent snake_case verb_noun within each domain (list_properties, get_property, run_report; sc_list_sites, sc_top_queries; psi_audit). The sc_/psi_ prefixes are meaningful namespacing, though GA4 tools carry no prefix, leaving a minor stylistic inconsistency across domains.

Tool Count3/5

24 tools is on the heavy side for the stated scope and exceeds the comfortable 3-15 range. Several reporting tools (top_pages, events_summary, traffic_sources, conversions_summary) are convenience wrappers around run_report, so the surface is somewhat inflated.

Completeness4/5

Reporting, GA4 admin reads, Search Console analytics and PageSpeed are well covered, and bootstrap_site_measurement handles provisioning. Gaps exist: no GA4 config write/update tools and no sc_verify_site_dns/sc_submit_sitemap tools despite bootstrap referencing them as follow-up steps.

Maintenance

ActivityNo data
ResponsivenessNo issues