Google Search Console MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | Yes | Google OAuth client ID | |
| GOOGLE_CLIENT_SECRET | Yes | Google OAuth client secret | |
| TOKEN_ENCRYPTION_KEY | Yes | Encryption 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
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.
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.
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.
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.