Skip to main content
Glama
mamrrez

Google Search Console MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GSC_LANGNoLanguage hint when a query's script is ambiguous (fa, ar, tr…)
GSC_DB_PATHNoOverride individual file location for database
GSC_ROW_CAPNoMost rows one tool call may fetch. Default: 100000100000
GSC_USE_ADCNoSet to 1 to use Google Application Default Credentials on a cloud VM when no credentials file is set. Default off.
GSC_TIMEZONENoYour timezone for local-day reports, e.g. Asia/Tehran, Europe/Berlin
GSC_CONFIG_DIRNoWhere your sign-in and history are kept. Default: ~/.config/gsc-mcp-full~/.config/gsc-mcp-full
GSC_DATA_STATENoall matches the Search Console UI; final returns only settled days. Default: all.all
GSC_TOKEN_PATHNoOverride individual file location for token
GSC_ALLOW_WRITENoSet to 1 to enable the write tools (then run gsc-mcp-full auth --force once). Default off.
GSC_BIDI_ISOLATENoSet to 1 if right-to-left text renders scrambled in tables. Default off.
GSC_ALLOWED_HOSTSNoHTTP mode only: public host names allowed to reach the server through a proxy, comma-separated
GSC_CREDENTIALS_PATHYesYour OAuth client JSON or service-account key (detected automatically)

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_capabilitiesA

Auth status, scope, write access, history coverage and the list of tools. Call this first when unsure.

reauthenticateA

Forget the cached client and sign in again (switch Google accounts or scopes).

build_query_regexA

Build a Search Console regex for a term that works in any script and matches its common spellings.

Use the result as query_regex in other tools or paste it into the Search Console UI (regex filter). RE2's \b is ASCII-only, so this uses Unicode-safe boundaries; Arabic script gets ی/ي, ک/ك, ه/ة, ا/أ/إ/آ classes with optional vowel marks and half-spaces; digits match Persian, Arabic-Indic and full-width forms; Cyrillic е/ё; case-insensitive. loose=True also lets words run together. Accent and kana variants are not covered.

list_propertiesA

List every Search Console property this account can see, with the permission level.

get_propertyB

Details of one property (exact URL and permission level). Accepts loose input like example.com.

add_propertyB

Add a property to this account (needs GSC_ALLOW_WRITE=1). Verification still happens in Search Console.

remove_propertyA

Remove a property from this account (needs GSC_ALLOW_WRITE=1). Data is not deleted at Google.

query_search_analyticsA

Search Analytics rows with any dimensions and filters. The general-purpose query tool.

Args: site_url: property (sc-domain:example.com, https://example.com/ or just example.com). days / start_date / end_date: range; explicit dates (YYYY-MM-DD) win over days. dimensions: comma list of query, page, country, device, date, searchAppearance, hour. search_type: web, image, video, news, discover, googleNews. query_filter: a term in ANY language; case-insensitive, and matches its common spellings (ی/ي, ک/ك, half-space, vowel marks, Persian/Arabic digits, е/ё). query_regex / query_regex_exclude: raw RE2 regex (see build_query_regex for a safe one). page_filter: substring of the page URL; page_exact: the exact URL; page_filter_exclude: substring to leave out; page_regex: RE2 regex on the URL. country: ISO-3166-1 alpha-3 (IRN, USA…); device: DESKTOP, MOBILE, TABLET. data_state: all (matches the UI, default) or final. group_variants: merge spelling variants of the same query (only when dimensions=query). level: standard or loose grouping (loose also merges spacing and accent differences). sort_by: clicks, impressions, ctr, position — applied to the fetched rows; Google itself always returns the top rows by clicks. limit: rows shown. max_rows: rows fetched.

performance_overviewB

One-screen summary: totals, trend, top queries and pages, devices, countries, and how fresh the data is.

granularity: day, week, month or auto — the same choice as the Performance report's time-granularity menu (for hourly, use hourly_performance). auto picks day up to 31 days, week up to six months, then month.

compare_periodsB

Compare a period with an earlier one; biggest movers first.

compare_to: previous (the same number of days just before) | year_ago (the same calendar dates last year) | 52_weeks (364 days back, weekdays aligned) | custom (give previous_start and previous_end). dimension: query, page, country, device or searchAppearance. Queries are matched across spellings.

queries_for_pageA

Which queries send traffic to one page. Spelling variants are merged unless group_variants=False.

Give the exact page URL. If nothing matches exactly, pages whose URL contains the text are used instead and listed, so a path such as /blog/ works too.

pages_for_queryB

Which pages rank for one query — in each of its spellings — and how the impressions split between them.

hourly_performanceA

Hourly data for the last 10 days — Search Console's 24-hour view, and the only way to get true LOCAL days.

hours=24 reproduces the Performance report's 24-hour view: the most recent 24 hourly points, including preliminary ones. Otherwise the last days (max 10) are returned. Search Console's daily numbers are Pacific-Time days; with timezone= (e.g. Asia/Tehran, Asia/Tokyo) the hours are re-cut into local days (by=day) or listed per local hour (by=hour).

data_freshnessC

Which recent days are final and which are still changing, for daily and hourly data.

list_sitemapsA

Sitemaps submitted for a property, with errors/warnings and URL counts. Pass sitemap_index to list its children.

get_sitemapB

Details of one sitemap: submission/download dates, errors, warnings, per-type URL counts.

submit_sitemapB

Submit (or resubmit) a sitemap URL (needs GSC_ALLOW_WRITE=1).

delete_sitemapA

Remove a sitemap from Search Console (needs GSC_ALLOW_WRITE=1). The file itself is untouched.

inspect_urlB

Full URL Inspection for one page: index verdict, crawl, canonical, robots, sitemaps, rich results, mobile.

inspect_urlsB

Inspect up to 50 URLs in parallel (comma- or newline-separated). Quota is checked first.

Columns: index is the indexing verdict, rich results the structured-data verdict — a page can PASS one and FAIL the other. URLs not reached within the time budget are marked and can be re-sent.

indexing_summaryA

Problems only: which of the given URLs are not indexed or have structured-data failures, and why. Up to 50 URLs.

inspection_quotaA

How many URL inspections this server has used today for a property (Google allows ~2,000/day).

query_variantsA

Keywords that Search Console splits across several spellings, with their real combined totals.

Groups queries by a per-script match key: Persian/Arabic letter forms (ی/ي, ک/ك, ه/ة, ا/أ/إ/آ), half-space, vowel marks, digit scripts, kana width, case, separator punctuation — also inside mixed queries such as «خريد iphone 13». level=loose additionally merges spacing, accents (café/cafe), hiragana/katakana, Simplified/Traditional Chinese (with the zh extra). Only groups with at least min_variants spellings are shown. source=history uses the local store.

language_breakdownC

Share of clicks and impressions by the script/language of the query (Persian vs Arabic vs Latin…).

keyboard_mistypesA

Queries typed with the keyboard on the wrong layout (e.g. "ovdn lhadk" = «خرید ماشین» on a Persian keyboard).

A hit is reported only when the remapped text is a query that really appears in the data, so the list is precise. include_unmatched=True also lists vowel-less Latin queries that map cleanly onto a layout (more findings, some false positives). layouts: any of fa, fa2 (the two Persian layouts in common use), ar, ru, he.

top_termsC

Most demanded words across all queries — works for Chinese/Japanese/Thai (no spaces) too.

Uses jieba / fugashi / pythainlp when installed (pip install gsc-mcp-full[zh] etc.), otherwise a script-aware fallback. Terms are merged across spellings.

find_cannibalizationA

Queries where two or more of your pages compete, ranked by impressions going to the non-best page.

Spelling variants of a query are merged first, so «خرید ماشین» on page A and «خريد ماشين» on page B is caught. min_share is the impression share a page needs to count as competing.

striking_distanceA

Queries ranking just off page one (default positions 8–20) with real demand — the quickest wins.

potential_clicks estimates extra clicks at position 5. Spelling variants are merged first.

low_ctr_opportunitiesB

Query/page pairs on page one whose CTR is far below what their position should earn — title/snippet work.

Expected CTR is the site's own median per position when there is enough data, otherwise a benchmark curve; ratio=0.5 flags rows under half the expected CTR.

content_moversB

Pages (or queries) that lost or gained ≥ threshold of their clicks vs an earlier period.

compare_to: previous | year_ago (same calendar dates) | 52_weeks (weekdays aligned). Decayed = dropped, rising = grew, lost = had clicks before and none now, new = the opposite.

brand_splitB

Brand vs non-brand traffic. Give the brand in every script it is searched in, comma-separated (e.g. "toyota, تویوتا, トヨタ"). Each term matches its spelling variants, as whole words; with level=loose a term of 4+ characters also matches when glued to its neighbours (toyotacamry).

sync_historyA

Copy Search Analytics rows into the local SQLite history, one day at a time (keeps data past 16 months).

Days already stored and final are skipped; recent or empty days are refreshed. dimensions defaults to query,page; add country,device for more detail (more rows). One call works for about 45 seconds and then reports how many days are left — call it again to continue, or run gsc-mcp-full sync SITE --days N in a terminal (no time limit; put it in cron to keep history growing).

history_statusC

What the local history contains: per property and search type, first/last day, rows, final days.

history_queryB

Query the local history for any date range, grouped by dimensions (queries merged across spellings).

dimensions: query, page, country, device, date. query_contains matches the multilingual match key, so «ماشين» finds «ماشین» and 空调 works without spaces.

history_trendB

Clicks/impressions/CTR/position per day, ISO week or month from the local history — any length of time.

history_compareB

Compare two stored periods (e.g. this quarter vs the same quarter two years ago) — beyond the API's 16 months.

dimension: query, page, country or device.

history_sqlB

Run a read-only SELECT on the history database. Table rows (site, search_type, date, query, qkey, page, country, device, clicks, impressions, position); sync_days. qkey is the multilingual match key.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 37 tools

Disambiguation4/5

Most tools target distinct Search Console resources or analytics views, with clear boundaries such as single vs. batch URL inspection and API vs. local history. A few boundaries blur around the general-purpose query_search_analytics tool versus specialized analytics tools like performance_overview, compare_periods, and history_query, but the descriptions help disambiguate.

Naming Consistency4/5

All tool names use snake_case consistently, with no camelCase or mixed styles. Many names are noun/report phrases rather than strict verb_noun patterns, but prefixes like history_, inspect_url(s), and sitemap_ are used predictably.

Tool Count2/5

37 tools is well above a practical scoped set and risks overwhelming an agent, even for a feature-rich domain like Search Console. Many specialized analytics and history tools could be consolidated or surfaced as optional modes rather than separate top-level tools.

Completeness5/5

The surface covers properties, sitemaps, URL inspection, search analytics, advanced query/page analytics, variant handling, local history sync/query, and operational checks like capabilities and quota. No obvious lifecycle or CRUD gaps exist for the stated Google Search Console purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues