Skip to main content
Glama
AKzar1el

Google Search Console MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_CLIENT_IDYesGoogle OAuth client ID
GOOGLE_CLIENT_SECRETYesGoogle OAuth client secret
TOKEN_ENCRYPTION_KEYYesEncryption key for tokens

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": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
server.capabilitiesA

List every tool this server exposes, its configured access mode, and whether the user's Google Search Console connection is currently authenticated. Call this first if you're unsure what tools are available, whether the deployment is read-only, or whether the user is connected. Returns the tool catalog plus an access mode and auth status. Takes no arguments.

sites.listA

List the Google Search Console properties (sites) the connected Google account has access to. Returns an array of { siteUrl, permissionLevel }. Call this when the user asks 'what sites do I have?' or 'what properties are connected?', or when the user asks about SEO for a site and hasn't specified which property. Also useful as a discovery step before calling other tools that require a site_url argument.

urls.inspectA

Inspect a single URL's index status in Google. Returns: whether the URL is indexed, last crawl date, indexing state, mobile usability, rich-results eligibility, and any AMP results. Use this when the user asks 'is X indexed?', 'why isn't X showing in Google?', or wants a deep look at one specific page. For bulk checks across many URLs, call this tool repeatedly — there is no batch endpoint — but note Google caps URL inspection at roughly 2,000 calls per property per day.

sitemaps.listA

List all sitemaps submitted for a Search Console property. Returns sitemap URLs, last submitted/downloaded dates, submitted URL counts, warning and error counts, and sitemap status. Google's deprecated sitemap indexed count is intentionally omitted. Use this when the user asks about sitemap health, submission status, or wants to audit which sitemaps are working.

analytics.queryA

Query Google Search Console search analytics data. Returns { row_count, start_row, rows } where each row has keys (dimension values), clicks, impressions, ctr, and position. When row_count equals row_limit, the response includes next_start_row — pass it back as start_row to fetch the next page. When Google provides them, response_aggregation_type and metadata are also included; metadata may identify the first incomplete date or hour.

IMPORTANT BEHAVIORS — read before calling:

  • For SITE TOTALS (total impressions, total clicks, overall CTR, overall average position), call with dimensions: []. This returns a single row containing the true site-level totals. Do NOT call with dimensions: ["query"] and sum the rows — Google omits anonymized low-volume queries from per-dimension responses, so summing per-query rows will undercount.

  • For TOP QUERIES / PAGES / COUNTRIES / DEVICES, call with the matching dimension. Expect the returned rows to cover only a subset of total impressions; this is normal Google behavior, not a data error.

  • DATA FRESHNESS: Search Console data lags about 2-3 days behind real time. If the user asks about "today" or "yesterday", expect empty or partial rows for the most recent days; the latest reliably-complete date is usually 3 days ago.

  • AVERAGE POSITION is impression-weighted. To compute an overall position across multiple rows, use sum(position * impressions) / sum(impressions). Never plain-average the position column across rows.

  • CTR in the response is a 0–1 fraction. Multiply by 100 for percent.

  • Use search_type to query image/video/news/discover indexes separately from web.

  • Use dimension_filter_groups to filter by country, device, query content, page URL, or search feature. includingRegex and excludingRegex use RE2 syntax. For brand vs non-brand splits, pass a single regex filter on the 'query' dimension.

  • data_state defaults to 'all' which matches the GSC dashboard. Pass 'final' only when the user explicitly asks for stable, non-preliminary data.

sites.addA

Add a new website property to your Google Search Console account. Note: Domain properties require sc-domain prefix (e.g., sc-domain:example.com), URL-prefix properties require full URL (e.g., https://example.com/).

sites.deleteA

Remove an existing website property from your Google Search Console account.

sitemaps.submitA

Submit a new sitemap to your Google Search Console account.

sitemaps.deleteA

Remove/delete a submitted sitemap from your Google Search Console account.

sitemaps.getA

Get status and details of a single sitemap submitted to Google Search Console.

insights.quick_winsA

Find search queries with at least the requested impressions that rank in a configurable striking-distance position range (8-20 by default). Returns clicks, impressions, CTR, and average position; CTR is context, not an eligibility filter. Pagination metadata flags when the local 100,000-row safety ceiling stopped fetching; a false flag does not guarantee Search Console returned every underlying row.

insights.cannibalizationA

Analyze search analytics to detect instances of keyword cannibalization, where multiple pages on your site compete for the same query. Pagination metadata flags when the local 100,000-row safety ceiling stopped fetching; a false flag does not guarantee Search Console returned every underlying row.

insights.content_decayA

Identify content decay by comparing search clicks for your site pages between two contiguous periods and finding the pages with the largest traffic drops. Pagination metadata flags when either source period reached the local 100,000-row safety ceiling; Search Console itself may still return only top data.

indexing.requestA

Requests indexing through Google's Indexing API for a URL within an owner-level Search Console property accessible to the connected Google account. Google currently restricts this API to pages containing JobPosting structured data or livestream pages containing BroadcastEvent inside VideoObject. It is not available for general webpage submission.

indexing.list_pagesA

Retrieve a list of site pages that have received search impressions, serving as a proxy list of indexed pages on the site. When one date boundary is omitted, the server derives the other to target an inclusive 30-day range; generated end dates are capped at the latest complete date.

analytics.compareA

Compare Search Console performance metrics (clicks, impressions, CTR, average position) between two distinct date ranges (Period A vs Period B) for a selected dimension (query, page, country, device). Pagination metadata flags when either period reached the local 100,000-row safety ceiling; Search Console itself may still return only top data.

reports.weekly_digestA

Generate a plain-language weekly SEO report for one Google Search Console property. Returns a markdown digest covering the 7 days ending on end_date, with week-over-week comparison, top pages, queries gaining or losing traction, and one specific action item. Defaults end_date to today if omitted.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 17 tools

Disambiguation4/5

Most tools are scoped to a distinct resource or analysis, and the descriptions clearly separate analytics.query from analytics.compare and the insights.* helpers. Minor overlap remains between indexing.list_pages and analytics.query with page dimensions, and the three insights tools may look interchangeable until read closely, but an agent can generally select correctly.

Naming Consistency4/5

Tool names follow a consistent dot-namespaced pattern (sites.list, sitemaps.submit, analytics.compare) with snake_case for multi-word operations. The set is readable and predictable, though insights.cannibalization and reports.weekly_digest use noun-phrase operations rather than the verb-first style used by most names.

Tool Count4/5

Seventeen tools is slightly above the ideal 3-15 range, but the count reflects the server's broad scope: property management, sitemaps, URL inspection, analytics, insights, indexing, and reporting. Each tool covers a distinct GSC workflow, so the size feels justified rather than bloated.

Completeness5/5

The server covers the core Google Search Console lifecycle comprehensively: site add/list/delete, sitemap submit/get/list/delete, URL inspection, analytics querying, comparison, insights, indexing, and reporting. There are no critical dead ends, and the few absences such as batch URL inspection are limitations of the underlying API rather than gaps in the tool surface.

Maintenance

ActivityActive
ResponsivenessNo issues