Skip to main content
Glama
Google Search Console MCP

Google Search Console MCP

by eduardmur

Google Search Console MCP

npm license

An MCP server that gives Claude, Cursor, Codex and any other MCP client clean access to Google Search Console: search analytics, question-shaped queries, ranking opportunities, URL inspection and sitemaps.

It runs on your machine, talks to Google with your own credentials, and sends nothing anywhere else. No telemetry.

Why this one

Every GSC MCP server wraps the same API. The differences are in the details that decide whether the model gets numbers it can trust:

  • Dates are resolved on the server. Ask for last_28_days and the server computes the range in the property's timezone (America/Los_Angeles, the one Search Console itself uses). That removes both the UTC off-by-one and the dates models make up when asked about "last month".

  • Windows end where the data ends. Search Console reports lag 2-3 days. Preset ranges snap to the newest date that has rows, so trends are not biased by trailing empty days. Opt out with anchor=today.

  • Fresh data by default. Requests use dataState=all, matching the numbers you see in the Search Console UI. Use data_state=final for stable reporting.

  • Comparisons are computed server-side. compare=previous_period or same_period_last_year (shifted 364 days so weekdays align) returns one merged table with clicks_change, position_change and is_new per row. The model never has to join two tables, a task LLMs are unreliable at.

  • Compact responses. One text block of minified JSON per call, paginated with limit/offset/has_more, nothing sent twice. Long sessions keep their context for rows.

  • Question-shaped queries in 10 languages. A dedicated tool finds searches phrased as questions (what/how/why/compare/…) via regex filters that run inside Search Console itself: English, Spanish, French, Portuguese, Russian, Arabic, Hindi, Bengali, Indonesian and Chinese.

  • Read-only by default. Sitemap submit/delete exist but only work when you start the server with --enable-writes.

  • Errors that name the fix. Every failure message says what to do next, and gsc-mcp doctor checks the whole chain end to end.

Related MCP server: GSC MCP Server

Quick start

Requires Node.js 20+ and a one-time Google sign-in:

npx -y @eduardmur/gsc-mcp login   # guided setup, ~2 minutes
npx -y @eduardmur/gsc-mcp doctor  # verify everything works

login walks you through creating your own free Google OAuth client (you control the credentials; nothing is shared with anyone) and signs you in via your browser. Details and alternatives in docs/auth-oauth.md, docs/auth-service-account.md and docs/auth-adc.md.

Then add the server to your client:

Claude Code

claude mcp add gsc -- npx -y @eduardmur/gsc-mcp

Claude Desktop: add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "gsc": {
      "command": "npx",
      "args": ["-y", "@eduardmur/gsc-mcp"]
    }
  }
}

Cursor: add to .cursor/mcp.json:

{
  "mcpServers": {
    "gsc": {
      "command": "npx",
      "args": ["-y", "@eduardmur/gsc-mcp"]
    }
  }
}

Codex CLI

codex mcp add gsc -- npx -y @eduardmur/gsc-mcp

Now ask things like:

Which queries gained and lost the most clicks this week on example.com?

What questions do people ask that we rank for but never answer on a dedicated page?

Find cannibalization on sc-domain:example.com and tell me which page should win each query.

Tools

Tool

What it returns

list-properties

Properties the account can read, with permission levels. Start here.

query

Search analytics rows: dimensions (query, page, country, device, date, searchAppearance), Search-Console-side filters (contains/regex/country/device), metric filters, sorting, pagination up to 25k rows, optional compare with ready-made deltas.

question-queries

Searches phrased as questions, detected inside Search Console in 10 languages. The raw material for FAQ content, and the same questions people ask AI assistants.

opportunities

Four analyses over the top 5000 rows: low_ctr (impressions without clicks, adaptive threshold), striking_distance (positions 4-15), long_tail (4+ word queries), cannibalization (pages competing for one query).

inspect-url

Index status per URL: verdict, coverage, canonical chosen by Google vs declared (mismatches flagged), robots state, last crawl, rich results. Single URL or batches up to 20.

sitemaps

Submitted sitemaps with status, errors and counts. Submit/delete only with --enable-writes.

Full parameter reference: docs/tools.md.

Prompts

Six ready-made recipes ship with the server and appear as slash commands in clients that support MCP prompts (in Claude Code: /gsc:weekly-report etc.):

weekly-report · content-decay · striking-distance · cannibalization-check · questions-to-content · indexing-triage

Each one is a step-by-step plan: which tools to call with which arguments, and what to deliver.

CLI

gsc-mcp             # serve MCP on stdio (what your client runs)
gsc-mcp login       # connect a Google account (guided)
gsc-mcp logout      # remove saved tokens
gsc-mcp doctor      # 6 end-to-end checks: node, credentials, token, properties, query, freshness

Flags: --enable-writes, --key-file <path>, --client <path>, --no-open.

Tokens are stored in ~/.config/gsc-mcp/tokens.json (0600). The only Google scope requested is webmasters.readonly.

Prefer a hosted setup?

If you'd rather skip local setup, or want AI-visibility data next to your Search Console numbers (how ChatGPT, Perplexity, Gemini and AI Overviews talk about your brand), Searcherries runs a hosted MCP with one-click OAuth: GSC, Bing Webmaster Tools, GA4 AI traffic and tracked AI answers in one server. The two are independent: neither needs the other. See docs/hosted.md.

Troubleshooting

Run gsc-mcp doctor first; it pinpoints the failing step. Common cases (7-day token expiry in Testing mode, service-account access, quotas, Windows and WSL notes): docs/troubleshooting.md.

Development

npm install
npm run typecheck && npm run lint && npm test   # no network needed
npm run build                                    # single-file dist via tsup

Tests fake the Search Console REST layer; nothing in CI talks to Google. See CONTRIBUTING.md.

License

MIT. Built by the maker of Searcherries.

Available Tools

6 tools
inspect-urlURL inspectionA
Read-onlyIdempotent

Index status of specific URLs via the URL Inspection API: verdict, coverage, robots.txt and indexing state, last crawl, canonical chosen by Google vs declared by the site (mismatches flagged), mobile usability and detected rich results. Pass url for one page or urls for a batch (max 20; requests run 2 at a time). Quota is roughly 600 requests/minute and 2000/day per property — keep batches small. URLs must belong to the property.

Inputs: property (required), url, urls, language_code.

list-propertiesList Search Console propertiesA
Read-onlyIdempotent

Search Console properties the authenticated account can read, with the permission level. Property identifiers come in two forms: sc-domain:example.com (a domain property covering every subdomain and protocol) and URL-prefix like https://example.com/ (exactly that prefix). Call this first and pass the identifier verbatim as property to every other tool.

Inputs: no named parameters.

opportunitiesSEO opportunitiesA
Read-onlyIdempotent

Ready-made opportunity analyses over the top-5000 rows of a window. low_ctr: rows earning impressions but converting far below the site's own average CTR (threshold = min(5%, max(1%, avg*0.75))). striking_distance: queries ranking positions 4-15 — the cheapest wins. long_tail: conversational queries of 4+ words. cannibalization: queries where two or more of the site's pages compete against each other, with the leading URL. Web search type only.

Inputs: kind (required), property (required), limit, words, +10 more.

querySearch analyticsA
Read-onlyIdempotent

Search Analytics rows for one property: clicks, impressions, CTR and position grouped by up to three of query, page, country, device, date, searchAppearance. Dates are resolved server-side (presets like last_28_days, anchored to the last date with data). Value filters (contains/regex/equals) run inside Search Console; min/max metric filters and non-click sorts run on a top-5000 sample. compare=previous_period or same_period_last_year returns one merged table with server-computed deltas (position_change positive = improved) — never join two windows yourself. Rows are a paginated sample, not an exhaustive export.

Inputs: property (required), sort, type, limit, +18 more.

question-queriesQuestion-shaped queriesA
Read-onlyIdempotent

Google searches phrased as questions that showed this site — the raw material for FAQ pages and content that answers what people actually ask (including the questions AI features answer). Detection runs inside Search Console via regex filters built from question-prefix lists in 10 languages plus a minimum length. Search Console does not label AI traffic; these are question-shaped candidates. Sorted by impressions by default, since question queries are often shown without a click.

Inputs: property (required), sort, limit, anchor, +9 more.

sitemapsSitemapsB
Read-onlyIdempotent

Sitemaps of a property: submitted files with their status, errors, warnings and submitted/indexed counts. action=status returns one sitemap (sitemap_url required). submit and delete change the property and only work when the server was started with --enable-writes.

Inputs: property (required), action, sitemap_url.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation4/5

    Each tool has a clearly stated distinct purpose, but query, question-queries, and opportunities all operate over the same Search Analytics data. The descriptions differentiate them well (raw rows vs question-shaped candidates vs pre-built analyses), so an agent can mostly tell them apart, though there is latent overlap since query could partially replicate the other two.

    Naming Consistency3/5

    All names are lowercase kebab-case, but the pattern is mixed: list-properties, question-queries, and inspect-url follow a verb_noun shape while query, opportunities, and sitemaps are bare nouns. Readable but not a predictable convention.

    Tool Count5/5

    Six tools is well-scoped for Search Console's surface, with each tool earning its place and none appearing redundant or trivial. No bloat or thinness.

    Completeness4/5

    Covers the core GSC lifecycle: property listing, Search Analytics (with comparison and filtering), question mining, opportunity detection, URL inspection, and sitemap status/submit/delete. Minor gaps like property-level administration or authentication/verification ops exist but are typically handled in the UI, so agents can work around them.

    Maintenance

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with Google Search Console via MCP, offering search analytics, performance summaries, URL inspection, sitemap management, and property listing for SEO workflows.
      262 npm
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Connects MCP clients to the Google Search Console API, enabling search analytics queries, URL inspection, sitemap management, and performance comparison across time periods.
      20
      66 PyPI
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Secure MCP server for Google Search Console. Query search analytics (clicks, impressions, CTR, position), manage sitemaps, inspect URL indexing status, and manage site properties.
      10
      AGPL 3.0
    • A
      license
      B
      quality
      B
      maintenance
      Enables Google Search Console data queries via MCP, including search analytics, performance comparisons, URL inspection, and sitemap management.
      12
      1
      MIT