Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Google Search Console

PYPI · GSC-MCP-FULL · SCANNED OCT 8

Google Search Console: 37 tools, every API endpoint, hourly data, history beyond 16 months.

Available components

68 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 2 of 42 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 5 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4295 tokens (~116/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the Google Search Console MCP server?

Google Search Console runs locally as a PyPI package, launched with uvx gsc-mcp-full. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · gsc-mcp-full

# add to Claude Code
claude mcp add mamrrez-gsc-mcp-full -- uvx gsc-mcp-full
// .cursor/mcp.json
{
  "mcpServers": {
    "mamrrez-gsc-mcp-full": {
      "command": "uvx",
      "args": [
        "gsc-mcp-full"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mamrrez-gsc-mcp-full": {
      "command": "uvx",
      "args": [
        "gsc-mcp-full"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add mamrrez-gsc-mcp-full -- uvx gsc-mcp-full
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mamrrez-gsc-mcp-full": {
      "type": "local",
      "command": [
        "uvx",
        "gsc-mcp-full"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mamrrez-gsc-mcp-full --command uvx --arg gsc-mcp-full
# ~/.hermes/config.yaml
mcp_servers:
  mamrrez-gsc-mcp-full:
    command: "uvx"
    args: ["gsc-mcp-full"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mamrrez-gsc-mcp-full": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "gsc-mcp-full"
      ]
    }
  }
}
# add to Vellum
assistant mcp add mamrrez-gsc-mcp-full -t stdio -c uvx -a gsc-mcp-full
// mcp.json
{
  "mcpServers": {
    "mamrrez-gsc-mcp-full": {
      "command": "uvx",
      "args": [
        "gsc-mcp-full"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Oct 26 53

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 8 Oct 2026 · Analysed pypi/gsc-mcp-full@0.2.2

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 42 packages
Packages resolved 42
Stale 1
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 37 exposed · ~4,030 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_property ~38

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

NameTypeReqDescription
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

brand_split ~146

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).

NameTypeReqDescription
brand_termsstringyes–
daysinteger––
end_date–––
levelstring––
max_rowsinteger––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

build_query_regex ~160

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.

NameTypeReqDescription
looseboolean––
termstringyes–
whole_wordboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

compare_periods ~178

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.

NameTypeReqDescription
compare_tostring––
daysinteger––
dimensionstring––
end_date–––
levelstring––
limitinteger––
page_filter–––
previous_end–––
previous_start–––
query_filter–––
search_typestring––
site_urlstringyes–
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

content_movers ~163

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.

NameTypeReqDescription
compare_tostring––
daysinteger––
dimensionstring––
end_date–––
limitinteger––
max_rowsinteger––
min_previous_clicksinteger––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
thresholdnumber––
NameTypeReqDescription
resultstringyes–

No examples provided.

data_freshness ~43

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

NameTypeReqDescription
search_typestring––
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_sitemap ~46

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

NameTypeReqDescription
site_urlstringyes–
sitemap_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

find_cannibalization ~168

Queries where two or more of your pages compete as separate results, 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.

NameTypeReqDescription
daysinteger––
end_date–––
levelstring––
limitinteger––
max_rowsinteger––
min_impressionsinteger––
min_sharenumber––
query_filter–––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_capabilities ~31

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

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

get_property ~35

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

NameTypeReqDescription
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_sitemap ~43

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

NameTypeReqDescription
site_urlstringyes–
sitemap_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

history_compare ~107

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.

NameTypeReqDescription
dimensionstring––
end_datestringyes–
limitinteger––
previous_endstringyes–
previous_startstringyes–
search_typestring––
site_urlstringyes–
start_datestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

history_query ~132

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.

NameTypeReqDescription
country–––
device–––
dimensionsstring––
end_datestringyes–
limitinteger––
page_contains–––
query_contains–––
search_typestring––
site_urlstringyes–
start_datestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

history_sql ~73

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.

NameTypeReqDescription
limitinteger––
sqlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

history_status ~36

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

NameTypeReqDescription
site_url–––
NameTypeReqDescription
resultstringyes–

No examples provided.

history_trend ~86

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

NameTypeReqDescription
end_datestringyes–
granularitystring––
page_contains–––
query_contains–––
search_typestring––
site_urlstringyes–
start_datestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

hourly_performance ~181

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).

NameTypeReqDescription
bystring––
daysinteger––
hours–––
page_filter–––
query_filter–––
search_typestring––
site_urlstringyes–
timezone–––
NameTypeReqDescription
resultstringyes–

No examples provided.

indexing_summary ~63

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

NameTypeReqDescription
concurrencyinteger––
languagestring––
site_urlstringyes–
urlsstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

inspect_url ~56

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

NameTypeReqDescription
languagestring––
page_urlstringyes–
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

inspect_urls ~104

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.

NameTypeReqDescription
concurrencyinteger––
languagestring––
site_urlstringyes–
urlsstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

inspection_quota ~38

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

NameTypeReqDescription
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

keyboard_mistypes ~184

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.

NameTypeReqDescription
daysinteger––
end_date–––
include_unmatchedboolean––
layoutsstring––
max_rowsinteger––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

language_breakdown ~81

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

NameTypeReqDescription
daysinteger––
end_date–––
max_rowsinteger––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

list_properties ~23

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

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

list_sitemaps ~48

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

NameTypeReqDescription
site_urlstringyes–
sitemap_index–––
NameTypeReqDescription
resultstringyes–

No examples provided.

low_ctr_opportunities ~153

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.

NameTypeReqDescription
daysinteger––
end_date–––
limitinteger––
max_positionnumber––
max_rowsinteger––
min_impressionsinteger––
query_filter–––
rationumber––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

pages_for_query ~87

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

NameTypeReqDescription
daysinteger––
end_date–––
levelstring––
limitinteger––
querystringyes–
search_typestring––
site_urlstringyes–
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

performance_overview ~135

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.

NameTypeReqDescription
daysinteger––
end_date–––
granularitystring––
search_typestring––
site_urlstringyes–
start_date–––
topinteger––
NameTypeReqDescription
resultstringyes–

No examples provided.

queries_for_page ~129

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.

NameTypeReqDescription
daysinteger––
end_date–––
group_variantsboolean––
levelstring––
limitinteger––
page_urlstringyes–
search_typestring––
site_urlstringyes–
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

query_search_analytics ~487

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.

NameTypeReqDescription
country–––
data_state–––
daysinteger––
device–––
dimensionsstring––
end_date–––
group_variantsboolean––
levelstring––
limitinteger––
max_rowsinteger––
page_exact–––
page_filter–––
page_filter_exclude–––
page_regex–––
query_filter–––
query_regex–––
query_regex_exclude–––
search_appearance–––
search_typestring––
site_urlstringyes–
sort_bystring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

query_variants ~224

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.

NameTypeReqDescription
daysinteger––
end_date–––
levelstring––
limitinteger––
max_rowsinteger––
min_variantsinteger––
query_filter–––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

reauthenticate ~23

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

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

remove_property ~38

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

NameTypeReqDescription
site_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

striking_distance ~144

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.

NameTypeReqDescription
daysinteger––
end_date–––
limitinteger––
max_positionnumber––
max_rowsinteger––
min_impressionsinteger––
min_positionnumber––
query_filter–––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
with_pagesboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

submit_sitemap ~43

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

NameTypeReqDescription
site_urlstringyes–
sitemap_urlstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

sync_history ~172

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).

NameTypeReqDescription
daysinteger––
dimensionsstring––
end_date–––
refresh_provisionalboolean––
search_typestring––
site_urlstringyes–
start_date–––
NameTypeReqDescription
resultstringyes–

No examples provided.

top_terms ~132

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.

NameTypeReqDescription
daysinteger––
end_date–––
max_rowsinteger––
query_filter–––
search_typestring––
site_urlstringyes–
sourcestring––
start_date–––
topinteger––
NameTypeReqDescription
resultstringyes–

No examples provided.

Common questions

What is the Google Search Console MCP server?

Google Search Console is an MCP server listed in the public MCP registry as io.github.mamrrez/gsc-mcp-full. Google Search Console: 37 tools, every API endpoint, hourly data, history beyond 16 months. This page covers its PyPI package (gsc-mcp-full).

Is the Google Search Console MCP server safe to use?

Google Search Console scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 8 October 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Google Search Console MCP server expose?

Google Search Console exposes 37 tools: get_capabilities, reauthenticate, build_query_regex, list_properties, get_property, and 32 more. Their descriptions and schemas cost roughly 4,030 tokens of context every time the server is loaded.

Is the Google Search Console MCP server still maintained?

Google Search Console is still listed as active in the MCP registry. We last reached this channel on 8 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Google Search Console MCP server under?

Google Search Console declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.