Google Search Console MCP
Provides tools for interacting with Google Search Console, including search analytics queries, question-shaped query detection, ranking opportunity analyses, URL inspection, and sitemap status. Supports server-side date handling, comparisons, and pagination.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Search Console MCP Which queries gained the most clicks on example.com this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Search Console MCP
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_daysand 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. Usedata_state=finalfor stable reporting.Comparisons are computed server-side.
compare=previous_periodorsame_period_last_year(shifted 364 days so weekdays align) returns one merged table withclicks_change,position_changeandis_newper 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 doctorchecks 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 workslogin 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-mcpClaude 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-mcpNow 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 |
| Properties the account can read, with permission levels. Start here. |
| 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. |
| 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. |
| Four analyses over the top 5000 rows: |
| 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. |
| Submitted sitemaps with status, errors and counts. Submit/delete only with |
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, freshnessFlags: --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 tsupTests 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 toolsinspect-urlURL inspectionARead-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 propertiesARead-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 opportunitiesARead-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 analyticsARead-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 queriesARead-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.
sitemapsSitemapsBRead-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
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Read-only Google Search Console MCP server for AI assistants.
Hosted, read-only Google Search Console MCP: performance, comparisons, URL inspection, sitemaps.
Audit, rank-track and analyze SEO for sites via an authenticated MCP server.
Google Search Console for AI assistants: traffic, rankings, indexing and page checks. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Search Console via MCP, offering search analytics, performance summaries, URL inspection, sitemap management, and property listing for SEO workflows.262 npm1MIT
- AlicenseAqualityCmaintenanceConnects MCP clients to the Google Search Console API, enabling search analytics queries, URL inspection, sitemap management, and performance comparison across time periods.2066 PyPIMIT
- AlicenseAqualityBmaintenanceSecure MCP server for Google Search Console. Query search analytics (clicks, impressions, CTR, position), manage sitemaps, inspect URL indexing status, and manage site properties.10AGPL 3.0
- AlicenseBqualityBmaintenanceEnables Google Search Console data queries via MCP, including search analytics, performance comparisons, URL inspection, and sitemap management.121MIT