
Google Search Console MCP Server — gsc-mcp-full
The complete MCP server for Google Search Console. Ask Claude, Cursor, Windsurf, VS Code, Codex or any other MCP client about your search performance, indexing and sitemaps in plain language — and get analysis back, not a spreadsheet.
37 tools · every Search Console API endpoint · the 24-hour view and hourly data · history beyond 16 months · correct numbers in every language.

Quick start · Tools · Languages · FAQ · Full docs · Project page

What you get
| |
|---|
| ✅ Complete | All 10 live methods of the Search Console API, all 6 search types (web, image, video, news, Discover, Google News), all 7 dimensions including hourly, with contains, exact, exclude and regex filters. Nothing in the API is left out. |
| ⚡ Fast | Starts in under a second. Inspects up to 10 URLs in parallel, 50 per request, inside a time budget so a big batch never times out your client. Retries rate limits and server errors on its own. Groups 25,000 queries in about half a second. Questions about synced history never touch the network. |
| 🔄 Current | Built on MCP SDK 2.x. API coverage checked against Google's own API definition (October 2026). Mirrors the Performance report's newest options: the 24-hour view with preliminary data, and hourly, daily, weekly or monthly granularity. Tested on Linux, macOS and Windows with Python 3.10–3.13 on every change. |
| 🧠 Answers, not exports | Cannibalization, striking-distance keywords, under-performing titles, decaying pages, brand vs non-brand — worked out for you and returned as short tables your AI can reason about. |
| 🌍 Right in every language | Search Console splits one keyword into several rows when it is typed several ways. This server merges them — Persian, Arabic, Chinese, Japanese, Korean, Turkish, Vietnamese, Russian and more — so the totals are the real ones. |
| 🗄️ No 16-month limit | Sync your data into a local file once; compare this quarter with the same quarter two years ago, long after Google has deleted it. |
| 🕒 Your timezone | Search Console days are Pacific-Time days. Hourly data is re-cut into your local days. |
| 🎯 Numbers you can trust | Header totals are the real period totals, not a sum of the rows shown. Page URLs are never shortened, so they can be passed straight to the next tool. A failure is reported as an error with its reason, never as an empty result. Covered by 117 automated tests on Linux, macOS and Windows, and checked end to end against real properties. |
| 🔒 Safe by default | Read-only access unless you opt in. Runs on your machine; your sign-in never leaves it. No hosted service, no account, no telemetry. |
| 💸 Free and light | MIT licensed. Four dependencies. One command to run. |
Works with: Claude Desktop · Claude Code · Cursor · Windsurf · VS Code (Copilot agent mode) · OpenAI Codex CLI · any MCP client over stdio or HTTP.
Tools
37 tools in 8 groups. You don't call them yourself — ask in plain language and your AI picks the right one.
🌍 merges spelling variants · 🗄️ can run on local history (any date range) · ✍️ needs write access (GSC_ALLOW_WRITE=1)
📊 Search performance
| Tool | What it gives you | Ask it like this |
|---|
performance_overview | One-screen summary: totals, a daily, weekly or monthly trend, top queries and pages, devices, countries, data freshness | "How did example.com do in the last 6 months, month by month?" |
query_search_analytics 🌍 | Any report you can build in Search Console: every dimension, search type and filter, with a query filter that also matches a term's other spellings | "Top mobile queries from Germany containing 'klima' last month" |
compare_periods 🌍 | Two periods side by side with the biggest movers first — previous period, same dates last year, 52 weeks ago, or custom dates | "Compare this month with the same month last year" |
queries_for_page 🌍 | Every query that brings traffic to one page | "What do people search to land on /pricing/?" |
pages_for_query 🌍 | Which pages rank for one keyword and how impressions split between them | "Which of my pages rank for 'air conditioner installation'?" |
hourly_performance | Search Console's 24-hour view, and hour-by-hour data for the last 10 days in your own timezone | "Show the last 24 hours" · "Show last week as Tehran days" |
data_freshness | Which recent days and hours are final and which are still preliminary | "Is yesterday's data complete yet?" |
🎯 SEO opportunities
| Tool | What it gives you | Ask it like this |
|---|
striking_distance 🌍🗄️ | Keywords ranking 8–20 with real demand, and the clicks you'd gain on page one | "What are my quickest ranking wins?" |
find_cannibalization 🌍🗄️ | Keywords where two or more of your pages compete as separate results (sitelinks and #section links are not counted as competitors), ranked by wasted impressions | "Where are my pages competing with each other?" |
low_ctr_opportunities 🌍🗄️ | Page-one results whose click-through rate is far below what their position should earn | "Which titles should I rewrite first?" |
content_movers 🌍🗄️ | Pages or queries that decayed, rose, disappeared or appeared since the last period | "Which pages lost traffic this month?" |
brand_split 🌍🗄️ | Brand vs non-brand traffic, with your brand matched in every script it's written in | "How much of my traffic is non-brand?" |
🌍 Multilingual intelligence
| Tool | What it gives you | Ask it like this |
|---|
query_variants 🗄️ | Keywords that Search Console splits across spellings, with their real combined totals | "Which keywords are split across spellings?" |
language_breakdown 🗄️ | Share of clicks and impressions by the language and script of the query | "How much of my traffic is Arabic vs English?" |
keyboard_mistypes 🗄️ | Queries typed with the keyboard on the wrong layout (ovdn lhadk = «خرید ماشین») | "Find searches typed on the wrong keyboard" |
top_terms 🗄️ | Most demanded words across all queries — including Chinese, Japanese and Thai, which have no spaces | "What words appear most in my Japanese queries?" |
build_query_regex | A regex filter that works for non-English text, for the API or the Search Console UI | "Give me a regex for خرید خودرو that matches every spelling" |
🗄️ Unlimited history
| Tool | What it gives you | Ask it like this |
|---|
sync_history | Copies your data into a local database, day by day, past Google's 16 months and row caps | "Sync the last 16 months of example.com" |
history_status | What's stored: date range, days and rows per property | "What history do I have saved?" |
history_query 🌍 | Any report over any stored date range | "Top queries for all of 2025" |
history_trend 🌍 | Clicks, impressions, CTR and position per day, week or month | "Monthly clicks for 'heat pump' over two years" |
history_compare 🌍 | Two stored periods against each other, however far apart | "Q3 this year vs Q3 two years ago" |
history_sql | Your own read-only SQL against the stored data | "Run this SQL on my history: …" |
🔍 Indexing and URL inspection
| Tool | What it gives you | Ask it like this |
|---|
inspect_url | Full inspection of one page: index status, last crawl, canonical, robots, sitemaps, rich results | "Is /new-article/ indexed? What canonical did Google pick?" |
inspect_urls | Up to 50 pages inspected in parallel, as one table with separate index and rich-result verdicts | "Inspect these 30 URLs" |
indexing_summary | Problems only: which pages are not indexed or fail structured data, and why | "Which of these pages have indexing issues?" |
inspection_quota | How much of Google's daily inspection allowance is used | "How many inspections do I have left today?" |
🗺️ Sitemaps
| Tool | What it gives you | Ask it like this |
|---|
list_sitemaps | Every submitted sitemap with URL counts, errors and warnings | "List my sitemaps and their errors" |
get_sitemap | Details of one sitemap | "When did Google last read sitemap.xml?" |
submit_sitemap ✍️ | Submit or resubmit a sitemap | "Submit example.com/sitemap.xml" |
delete_sitemap ✍️ | Remove a sitemap from Search Console | "Remove the old sitemap" |
🏠 Properties