add_site
Add a site to the authenticated account. Requires write scope and verification still happens in Search Console.
Query a Search Console property for the analyses people normally rebuild by hand — queries stuck at positions 4-15, pages decaying across several periods, two URLs splitting one query — and check a number before it goes into a client deck.
LABSCO SUMMARY
Most Search Console clients hand back rows and leave the interpretation to you; here traffic_drop_diagnosis attributes a loss to ranking, CTR or demand, ctr_opportunities compares against an expected-CTR curve, and search_intent_breakdown sorts queries into informational, commercial, transactional, navigational and local buckets. verify_claim is the unusual one: it re-queries the property to test a number you are about to present, against a tolerance percent you set. delete_site and delete_sitemap are both marked destructive in their own descriptions, and the URL Inspection and Indexing calls run sequentially, so batches are quota-bound by design.
A Search Console front end with 40 tools, covering the Search Analytics, URL Inspection, Sitemaps and Indexing APIs for the properties one authenticated account or service account can reach.
A Search Console property and an account or service account with access to it, plus GSC_AUTH_MODE, GSC_KEY_FILE and GSC_SITE_URL in the environment. add_site, submit_sitemap and delete_sitemap need write scope, and generate_markdown_report writes into GSC_REPORT_DIR.
One command plus credentials — npx -y gsc-seo-mcp, then supply credentials
USE CASES
Separate a ranking loss from a CTR loss or falling demand, then confirm whether the decline is a trend across periods or one noisy comparison.
Start from queries already close to the first page and pages losing clicks, then turn the chosen page into a title and meta brief backed by its own query data.
Identify the queries where several URLs split impressions, see which page each query really belongs to, and get the internal links that would settle it.
Inspect the URLs for indexed status and canonical, summarise coverage across the batch, and push the sitemap or an Indexing API notification for the ones that qualify.
Re-query the property for the exact claim and tolerance before it is presented, pull the underlying rows if it fails, and hand over a report rather than a screenshot.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
add_siteAdd a site to the authenticated account. Requires write scope and verification still happens in Search Console.
advanced_filter_queryPull up to 50,000 Search Analytics rows with advanced filters for deeper audits.
anomaly_alertsDetect recent page/query anomalies using the latest period versus the immediately previous period.
batch_inspect_urlsInspect multiple URLs sequentially. Keep batches small to respect URL Inspection API quotas.
brand_nonbrand_splitSplit performance into brand and non-brand search demand using configured or supplied brand terms.
cannibalization_checkFind queries where multiple pages compete and split impressions or clicks.
compare_periodsCompare current vs previous period by page, query, country, device, or search appearance.
content_decayDetect pages declining across multiple equal periods, not just one noisy comparison.
ctr_opportunitiesFind queries and pages where CTR is below an expected CTR curve for the current average position.
delete_siteRemove a site from the authenticated account. Destructive: use only when explicitly requested.
delete_sitemapDelete a submitted sitemap from Search Console. Destructive: use only when explicitly requested.
device_country_opportunitiesFind device and country segments with high impressions but weak CTR or ranking.
dimension_breakdownBreak performance down by a single dimension such as country, device, date, or search appearance.
generate_markdown_reportGenerate a Markdown SEO performance report and save it to GSC_REPORT_DIR.
get_siteGet permission details for a specific Search Console property.
get_sitemapGet details for one sitemap URL.
index_coverage_summarySummarize indexed/not-indexed/canonical coverage for a supplied list of URLs.
indexing_batch_publishPublish multiple Indexing API URL notifications sequentially. Use only for eligible pages and respect quota.
indexing_get_metadataCheck the latest Indexing API update/remove notification metadata for a URL.
indexing_publish_urlNotify Google that an eligible URL was updated or removed through the Indexing API.
inspect_urlInspect a URL's indexed status, canonical, crawl, robots, and coverage signals.
internal_link_opportunitiesSuggest internal linking opportunities from stronger pages to weaker pages sharing valuable queries.
list_propertiesList Search Console properties available to the authenticated user or service account.
list_sitemapsList submitted sitemaps with status, errors, warnings, and indexed URL counts.
long_tail_questionsSurface question and long-tail queries that can become FAQ sections, support docs, or content expansions.
multi_site_dashboardCompare configured Search Console properties in one health dashboard.
page_query_matrixMap pages to the queries that drive them. Great for content briefs and cannibalization review.
page_refresh_prioritiesPrioritize pages to update using lost clicks, declining impressions, CTR gaps, and position changes.
performance_overviewReturn a site-level snapshot with previous-period comparison, daily trend, devices, and search appearances.
query_page_fitAnalyze one URL's query mix, intent fit, and content angles based on the queries it already ranks for.
quick_winsFind keywords ranking around positions 4-15 where better content, internal links, or snippets can win traffic.
search_analyticsRun a flexible Search Analytics query. Use this for exact data pulls with custom dimensions and filters.
search_intent_breakdownClassify queries into informational, commercial, transactional, navigational, and local intent buckets.
server_healthShow server configuration, enabled defaults, and tool count without exposing secrets.
submit_sitemapSubmit or refresh a sitemap in Search Console. Requires write scope.
title_meta_briefCreate a data-backed title/meta refresh brief from high-impression, low-CTR queries for one page.
top_pagesFind top pages with optional query filtering, useful for landing page and folder audits.
top_queriesFind top queries with optional page filtering, useful for keyword and content research.
traffic_drop_diagnosisExplain page or query traffic losses as ranking loss, CTR loss, demand decline, or mixed signal.
verify_claimRe-query GSC to verify a numeric SEO claim before presenting it to a client or stakeholder.
BEFORE YOU INSTALL
40 tools when we connected. The three indexing_ tools need the Indexing API enabled and only work for JobPosting and BroadcastEvent pages; brand_nonbrand_split needs GSC_BRAND_TERMS and multi_site_dashboard needs GSC_SITE_URLS.
All 5 documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 40 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y gsc-seo-mcp{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": [
"-y",
"gsc-seo-mcp"
],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "<YOUR_GSC_KEY_FILE>",
"GSC_SITE_URL": "sc-domain:<YOUR_DOMAIN>",
"GSC_BRAND_TERMS": "mybrand,mybrand.com"
}
}
}
}.cursor/mcp.json
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": [
"-y",
"gsc-seo-mcp"
],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "<YOUR_GSC_KEY_FILE>",
"GSC_SITE_URL": "sc-domain:<YOUR_DOMAIN>"
}
}
}
}{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": [
"-y",
"gsc-seo-mcp"
],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "<YOUR_GSC_KEY_FILE>",
"GSC_SITE_URL": "sc-domain:<YOUR_DOMAIN>"
}
}
}
}.mcp.json
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": [
"-y",
"gsc-seo-mcp"
],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "<YOUR_GSC_KEY_FILE>",
"GSC_SITE_URL": "sc-domain:<YOUR_DOMAIN>"
},
"timeout": 120000,
"trust": false
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": [
"-y",
"gsc-seo-mcp"
],
"env": {
"GSC_AUTH_MODE": "oauth",
"GSC_OAUTH_SECRETS_FILE": "<YOUR_GSC_OAUTH_SECRETS_FILE>",
"GSC_TOKEN_FILE": "<YOUR_GSC_TOKEN_FILE>",
"GSC_SITE_URL": "sc-domain:<YOUR_DOMAIN>"
}
}
}
}