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 · OPEN-GSC-MCP

Search Console analytics, hourly data, URL inspection and sitemaps, with guards for API quirks.

Available components

+18 this week 91 Trust /100

Last scanned (3 hours ago)

Scores higher than 94% of PyPI servers

Category Marketing and SEO

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 uv_build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 2 of 43 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to onlymoein/google-search-console-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 20 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 5137 tokens (~233/item across 22 items; 22 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 Management70
  • Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
  • 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 23 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
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.

  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 31 Oct 26 +16
    • Malware scan: unverified → pass ▲ security
  • 29 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
  • 27 Oct 26 +1
    • Security disclosure: unverified → pass ▲ functional
  • 26 Oct 26 0
    • Security disclosure: pass → unverified ▼ functional
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 5 Nov 2026 · Analysed pypi/open-gsc-mcp@1.4.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo onlymoein/google-search-console-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/onlymoein/google-search-console-mcp/.github/workflows/release.yml@refs/tags/v1.4.0
Rekor log index 3262574193
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:cd9898a3fd63052ffc6238ad01df9c3d43b2b7648b780918d4fbcf3d841810c1

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted uv_build

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

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

Background: SBOMs and build attestations, explained →

MCP tools · 22 exposed · ~4,758 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_site ~68

Add a property to this account. It starts unverified: ownership must be verified in the Search Console web interface before any data is available.

NameTypeReqDescription
site_urlstringyesNew property: 'sc-domain:example.com' or a URL prefix such as 'https://www.example.com/'.
NameTypeReqDescription
actionstringyes–
donebooleanyes–
notesarray––
site_urlstringyes–
targetstringyes–

No examples provided.

audit_indexing ~390

Full indexing audit of a property, rebuilt from its sitemaps because Google's API does not expose the Page indexing report's URL lists. Each call inspects the next URLs (new ones first, then any checked more than 14 days ago) and reports every URL inspected so far: grouped by Google's index status with likely fixes, plus canonical conflicts, indexed pages with no search impressions in 90 days, and pages shown in search but missing from the sitemaps. Progress is saved locally, so call again to continue, today or on later days; Google allows 2,000 inspections per property per day.

NameTypeReqDescription
examplesinteger–Example URLs shown per issue.
fetch_pagesboolean–Also fetch inspected pages directly (only URLs inside the property), as many as inspect or 50 if it is 0, to compare their status code, redirects, noindex and canonical tag now with what Google last…
inspectinteger–URLs to inspect in this call. Each takes a few seconds and they run 10 at a time, so 50 is about 30 seconds. 0 only reports.
issue––List every URL with this issue key (from issues[].key), 100 at a time. Nothing new is inspected.
restartboolean–Forget this property's saved audit and start over.
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
sitemap_url––Audit this sitemap (or sitemap index) instead of every sitemap submitted for the property.
startinteger–Offset into the issue's URLs.
NameTypeReqDescription
coveragearrayyes–
inspectedintegeryes–
inspected_nowintegeryes–
issue––The issue listed in urls, if any.
issuesarrayyes–
live_checkedintegeryes–
next_start––Pass as start to list the next page of the issue's URLs.
not_yet_inspectedintegeryes–
notesarray––
quota_exhausted_todaybooleanyes–
quota_used_todayintegeryesInspections this server used for the property today (Pacific Time). Other tools and clients share Google's 2,000 a day.
site_urlstringyes–
sitemapsarrayyes–
urlsarray––
urls_in_sitemapsintegeryes–

No examples provided.

batch_inspect_urls ~161

Inspect up to 50 URLs concurrently and summarize their index verdicts. Failures are reported per URL; if the daily quota runs out, the remaining URLs are skipped and listed so you can retry them later.

NameTypeReqDescription
language_codestring–BCP-47 language for issue messages, e.g. 'en-US' or 'de-DE'.
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
urlsarrayyes1-50 page URLs.
NameTypeReqDescription
itemsarrayyes–
notesarray––
site_urlstringyes–
verdict_countsobjectyes–

No examples provided.

compare_periods ~331

Compare search performance between two periods of equal length: totals plus a per-key breakdown with absolute and percent changes. Position change is negative when ranking improved.

NameTypeReqDescription
current_end––Last day of the period to analyze. Defaults to 3 days ago, the last day that is usually final.
current_start––First day of the period to analyze, YYYY-MM-DD (Pacific Time).
data_statestring–Defaults to 'final': fresh, still-changing data in the current period would read as a decline against a complete baseline.
dimensions––Compare per value of these. Omit for ['query']; [] for totals only.
fetch_limitinteger–Top rows fetched per period before joining.
filters––Filters, combined with AND.
previous_end––Last day of the baseline; same length as current.
previous_start––First day of the baseline. Defaults to the period just before.
row_limitinteger–Rows to return.
search_typestring––
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
sort_bystring–clicks_change (default) and impressions_change rank the biggest gains and losses first; ties fall back to the other metric's change, then current impressions. clicks and impressions rank by the curre…
NameTypeReqDescription
current_periodarrayyes–
data_statestringyes–
dimensionsarrayyes–
notesarray––
previous_periodarrayyes–
rowsarrayyes–
search_typestringyes–
site_urlstringyes–
totals–yes–

No examples provided.

delete_site ~60

Remove a property from this account. This removes access for this account only; it does not delete the site or other users' access. Confirm with the user first.

NameTypeReqDescription
site_urlstringyesThe property's exact site_url, as listed by list_sites.
NameTypeReqDescription
actionstringyes–
donebooleanyes–
notesarray––
site_urlstringyes–
targetstringyes–

No examples provided.

delete_sitemap ~85

Remove a sitemap from Search Console. Google may still know the URLs in it, and the file itself is not touched. Confirm with the user first.

NameTypeReqDescription
site_urlstringyesThe property's exact site_url, as listed by list_sites.
sitemap_urlstringyesFull URL of the sitemap, e.g. 'https://www.example.com/sitemap.xml'.
NameTypeReqDescription
actionstringyes–
donebooleanyes–
notesarray––
site_urlstringyes–
targetstringyes–

No examples provided.

explain_change ~374

Answer "why did traffic go up or down?" between two periods of equal length. Splits the change by page, query, country, device and search appearance and says which slices account for most of it; separates clicks lost to fewer impressions from clicks lost to a lower CTR; and lists Google updates that ran in or near the periods. Defaults compare the last 28 days of final data with the 28 before.

NameTypeReqDescription
breakdowns––Dimensions to split the change by. Omit for every one the search type has: page, query, country, device and searchAppearance.
current_end––Last day of the period to analyze. Defaults to 3 days ago, the last day that is usually final.
current_start––First day of the period to analyze, YYYY-MM-DD (Pacific Time).
data_statestring–Defaults to 'final': fresh, still-changing data in the current period would read as a decline against a complete baseline.
fetch_limitinteger–Top rows fetched per period and breakdown.
filters––Explain the change within this slice only; combined with AND.
metricstring–The metric whose change to explain.
previous_end––Last day of the baseline; same length as current.
previous_start––First day of the baseline. Defaults to the period just before.
search_typestring––
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
topinteger–Movers to list per breakdown and direction.
NameTypeReqDescription
breakdownsarrayyes–
current_periodarrayyes–
data_statestringyes–
effects–––
google_updatesarrayyesGoogle updates and incidents in or near the periods. Timing alone does not show that one caused the change.
metricstringyes–
notesarray––
previous_periodarrayyes–
requestsarrayyesThe exact request bodies sent to Google.
search_typestringyes–
site_urlstringyes–
summaryarrayyesThe findings in plain sentences.
totals–yes–

No examples provided.

get_site ~89

Get one property's exact site_url, type and this account's permission level.

NameTypeReqDescription
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
NameTypeReqDescription
permission_levelstringyes–
property_typestringyes–
site_urlstringyes–

No examples provided.

get_sitemap ~107

Status of one submitted sitemap.

NameTypeReqDescription
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
sitemap_urlstringyesFull URL of the sitemap, e.g. 'https://www.example.com/sitemap.xml'.
NameTypeReqDescription
contentsarray––
errorsinteger––
is_indexboolean––
is_pendingboolean––
last_downloaded–––
last_submitted–––
pathstringyes–
type–––
warningsinteger––

No examples provided.

inspect_url ~171

Google's index status for one URL: whether it is indexed and why not, last crawl, canonical chosen by Google versus declared, robots.txt and fetch state, sitemaps and rich results. This is Google's indexed view, not a live test of the page.

NameTypeReqDescription
language_codestring–BCP-47 language for issue messages, e.g. 'en-US' or 'de-DE'.
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
urlstringyesFull URL of the page, inside the property.
NameTypeReqDescription
amp_verdict–––
canonical_mismatch–––
coverage_state–––
crawled_as–––
google_canonical–––
indexing_state–––
inspection_link–––
last_crawl_time–––
page_fetch_state–––
referring_urlsarray––
rich_resultsarray––
rich_results_verdict–––
robots_txt_state–––
site_urlstringyes–
sitemapsarray––
urlstringyes–
user_canonical–––
verdict––PASS, PARTIAL, FAIL or NEUTRAL.

No examples provided.

list_search_appearances ~216

Step one: list the search appearances (rich results and other result features, such as VIDEO or REVIEW_SNIPPET) the property had, with clicks and impressions. Then call query_search_appearance with one of the names to break it down.

NameTypeReqDescription
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
search_typestring––
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

list_sitemaps ~123

List submitted sitemaps with their status: last submitted and downloaded, errors, warnings, whether processing is pending, and URL counts by content type.

NameTypeReqDescription
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
sitemap_index––Only list the sitemaps inside this sitemap index URL.
NameTypeReqDescription
site_urlstringyes–
sitemapsarrayyes–

No examples provided.

list_sites ~40

List every Search Console property this account can access, with its exact site_url and permission level. Call this first: every other tool needs a site_url.

Input schema present but exposes no named parameters.

NameTypeReqDescription
notesarray––
sitesarrayyes–

No examples provided.

query_discover_analytics ~326

Google Discover performance: clicks, impressions and CTR by page, country or date. Discover reports no queries, no average position and no device breakdown, and has data only for sites that appear in Discover feeds.

NameTypeReqDescription
aggregation_typestring–'auto' aggregates by page. byNewsShowcasePanel counts News Showcase panels instead: it needs the filter searchAppearance equals NEWS_SHOWCASE and cannot group or filter by page, so dimensions default…
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these. Omit for ['page'] (['date'] with byNewsShowcasePanel); [] for totals.
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_google_news_analytics ~339

Google News performance (news.google.com and the Google News app): clicks, impressions and CTR by page, country, device or date. Google News reports no queries and no average position. For the News tab in Google Search, use query_news_tab_analytics.

NameTypeReqDescription
aggregation_typestring–'auto' aggregates by page. byNewsShowcasePanel counts News Showcase panels instead: it needs the filter searchAppearance equals NEWS_SHOWCASE and cannot group or filter by page, so dimensions default…
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these. Omit for ['page'] (['date'] with byNewsShowcasePanel); [] for totals.
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_hourly_analytics ~243

Search performance broken down by hour (Pacific Time) for the last ~10 days. Use it to spot same-day spikes or compare today with the same day last week. The most recent hours are incomplete; first_incomplete_hour says where that starts.

NameTypeReqDescription
dimensions––Extra grouping besides the hour. Omit for hourly totals.
end_date––Last day, YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
search_typestring––
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time, within the last 10 days. Defaults to 2 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_image_analytics ~288

Performance in Google Images and the Images tab of Search: clicks, impressions, CTR and average position within image results, by query, page, country, device or date.

NameTypeReqDescription
aggregation_typestring–'auto' is right almost always. byProperty cannot be used with page grouping or filters.
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these. Omit for ['query']; [] for totals. searchAppearance must be the only dimension.
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_news_tab_analytics ~302

Performance in the News tab of Google Search: clicks, impressions, CTR and average position, by query, page, country, device or date. For news.google.com and the Google News app, use query_google_news_analytics.

NameTypeReqDescription
aggregation_typestring–'auto' is right almost always. byProperty cannot be used with page grouping or filters.
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these. Omit for ['query']; [] for totals. searchAppearance must be the only dimension.
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_search_analytics ~375

Clicks, impressions, CTR and average position from the Performance report, grouped by dimensions and filtered. Rows are sorted by clicks. Invalid combinations are rejected with an explanation before Google is called. For Discover, Images, video, Google News or the News tab, the matching query_*_analytics tool offers only what that surface supports.

NameTypeReqDescription
aggregation_typestring–'auto' is right almost always. byProperty cannot be used with page grouping or filters, nor with Discover or Google News.
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these, in order. Omit for ['query']; pass [] for property totals. searchAppearance must be the only dimension (see list_search_appearances). Discover and Google News have no query dimen…
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
search_typestring–web, image, video, news (the News tab), discover or googleNews.
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_search_appearance ~297

Step two: performance of one search appearance, broken down by query, page, country, device or date. Get the appearance name from list_search_appearances.

NameTypeReqDescription
appearancestringyesExact appearance name from list_search_appearances, such as VIDEO or REVIEW_SNIPPET.
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Break the appearance down by these. Omit for ['query'] (['page'] for Discover and Google News).
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Extra filters, combined with AND with the appearance.
row_limitinteger–Rows to return (1-25,000).
search_typestring––
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

query_video_analytics ~301

Performance in the Videos tab of Google Search: clicks, impressions, CTR and average position, by query, page, country, device or date. Video results shown on the main web results are counted under web search, not here.

NameTypeReqDescription
aggregation_typestring–'auto' is right almost always. byProperty cannot be used with page grouping or filters.
data_statestring–'all' includes fresh data that may still change and matches the Search Console UI; 'final' is finalized data only (lags 2-3 days).
dimensions––Group rows by these. Omit for ['query']; [] for totals. searchAppearance must be the only dimension.
end_date––Last day (inclusive), YYYY-MM-DD in Pacific Time. Defaults to today.
filters––Filters, combined with AND.
row_limitinteger–Rows to return (1-25,000).
site_urlstringyesThe property, as listed by list_sites: 'sc-domain:example.com' for a domain property or 'https://www.example.com/' for a URL-prefix property. A bare domain such as 'example.com', or any URL on the si…
start_date––First day, YYYY-MM-DD in Pacific Time. Defaults to 28 days ago.
start_rowinteger–Zero-based row offset, for paging.
NameTypeReqDescription
aggregation_type–––
data_statestringyes–
dimensionsarrayyes–
end_datestringyes–
first_incomplete_date–––
first_incomplete_hour–––
next_start_row––Pass as start_row to fetch the next page, if there is one.
notesarray––
requestobjectyesThe exact request body sent to Google.
row_countintegeryes–
rowsarrayyesOne object per row: dimension values by name, then clicks, impressions, ctr (0-1) and position (absent for Discover and Google News).
search_typestringyes–
site_urlstringyes–
start_datestringyes–

No examples provided.

submit_sitemap ~72

Submit (or resubmit) a sitemap so Google fetches it. Safe to repeat.

NameTypeReqDescription
site_urlstringyesThe property's exact site_url, as listed by list_sites.
sitemap_urlstringyesFull URL of the sitemap, e.g. 'https://www.example.com/sitemap.xml'.
NameTypeReqDescription
actionstringyes–
donebooleanyes–
notesarray––
site_urlstringyes–
targetstringyes–

No examples provided.

Install

How do I install the Google Search Console MCP server?

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

pypi · open-gsc-mcp

# add to Claude Code
claude mcp add onlymoein-google-search-console-mcp -- uvx open-gsc-mcp
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.onlymoein/google-search-console-mcp. Search Console analytics, hourly data, URL inspection and sitemaps, with guards for API quirks. This page covers its PyPI package (open-gsc-mcp).

Is the Google Search Console MCP server safe to use?

Google Search Console scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. 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 22 tools: list_sites, get_site, add_site, delete_site, query_search_analytics, and 17 more. Their descriptions and schemas cost roughly 4,758 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 5 November 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.