Skip to content
MCP Shelf

Google Search Console MCP

View on GitHub

Ask an assistant about your clicks, queries, indexing and sitemaps in Search Console.

  • Started in our test
  • ★ 2K GitHub stars
  • 8.7K downloads a week
  • Last commit 15 Sept 2026

What is Google Search Console MCP?

The Google Search Console MCP server (mcp-gsc) is an open source MCP server that lets AI assistants query Search Console performance data, inspect URLs and manage sitemaps for your sites.

Amin Foroutan's server connects an assistant to the Google Search Console API, so you can ask questions about your sites in plain language instead of building reports by hand. It pulls clicks, impressions, click-through rate and position by query, page, country or device, compares two date ranges, and inspects URLs to see whether Google has indexed them and why not.

You sign in with your own Google account through an OAuth client you create, or give it a service account for automated use. The tools that add or remove sites and delete sitemaps refuse to run until you turn them on, so out of the box it can read everything but only change things by submitting a sitemap.

Made by
Amin Foroutan (AminForou/mcp-gsc)
Licence
MIT
Latest version
0.4.1 (15 Sept 2026)
PyPI package
mcp-search-console
GitHub stars
2K
Downloads
8.7K a week
Last commit
15 Sept 2026
Tools
21
Runs on
Your computer
Setup checked
27 Oct 2026
Page updated
27 Oct 2026

Our check: We ran this exact config on 27 Oct 2026: it started and answered with 21 tools.

MCP Shelf take

We started Google Search Console on our own test machine on 27 Oct 2026 and it answered with 21 tools. 13 of the 21 only read; the other 8 can change things. Every tool comes with a useful description, none says whether they change things, and the tool list costs about 3,400 tokens of context before you ask a thing. It sits 10th of 16 in its category on our shelf by GitHub stars (2K, with 8.7K downloads a week).
MCP Shelf tests: numbers from our own runs, not the README · tested on 27 Oct 2026

What can Google Search Console MCP read and change?

It can read

  • Search performance data for the properties your account can see
  • URL inspection results and indexing status
  • Submitted sitemaps and their status

It can change

  • Submitted sitemaps (submit at any time; delete only when allowed)
  • The list of properties in your account, only when GSC_ALLOW_DESTRUCTIVE is on

Safer setup: Leave GSC_ALLOW_DESTRUCTIVE unset, which is the default. A service account added to a property with restricted access can only read.

What's in the pod

What tools does Google Search Console MCP have?

We found 21 tools when we started it on 27 Oct 2026. 13 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.

Changes things8 tools · Can create, edit, send or delete.

ToolWhat it is for
add_siteAdds a property to your account. Refuses unless GSC_ALLOW_DESTRUCTIVE is on.
batch_url_inspectionInspects a list of URLs at once, within the API's limits.
compare_search_periodsCompares two date ranges and shows what rose or fell.
delete_siteRemoves a property from your account. Refuses unless GSC_ALLOW_DESTRUCTIVE is on.
delete_sitemapRemoves a sitemap from Search Console. Refuses unless GSC_ALLOW_DESTRUCTIVE is on.
manage_sitemapsOne tool to list, inspect, submit or delete sitemaps.
reauthenticateDeletes the saved sign-in and opens the browser to sign in again, for example as another account.
submit_sitemapSubmits a new sitemap, or resubmits one, to Google.

Only reads13 tools · Looks things up and changes nothing.

ToolWhat it is for
check_indexing_issuesLooks across several URLs and groups the indexing problems it finds.
get_advanced_search_analyticsRuns a search analytics query with filters, sorting and paging for bigger reports.
get_capabilitiesDescribes the available tools and whether you are signed in. A good first call.
get_creator_infoReturns information about the author. It does nothing with your data.
get_performance_overviewGives the headline totals for a property over a period.
get_search_analyticsReturns clicks, impressions, CTR and position for a property, grouped by query, page, country or device.
get_search_by_page_queryLists the queries that bring visitors to one page.
get_site_detailsShows a property's permission level and verification details.
get_sitemap_detailsShows the details of one sitemap.
get_sitemapsLists the sitemaps submitted for a property.
inspect_url_enhancedChecks one URL's index status, canonical, crawl details and rich results.
list_propertiesLists every Search Console property your account can see, domain and URL-prefix alike.
list_sitemaps_enhancedLists sitemaps with their errors, warnings and last-read dates.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

How clearly it describes its tools to your assistant

Tools with a description
21 of 21
Say if they change things
0 of 21
Context it takes, at least
~3,400 tokens

No tool says whether it only reads or can change things, so your client treats them all alike: keep approvals on.

From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.

How do I install Google Search Console MCP?

Install steps from the Google Search Console MCP README

The project's own instructions, copied from its README on GitHub on 27 Oct 2026 under its MIT licence. They are the source of truth; the ready-made configs further down are built from them. The rest of the README is in the README tab.

Getting Started
Step 1 — Set Up Google API Credentials

You need credentials before configuring any client. Pick one method:

Option A — OAuth (Recommended — uses your own Google account)
  1. Go to Google Cloud Console and create or select a project
  2. Enable the Search Console API
  3. Go to Credentials → Create Credentials → OAuth client ID
  4. Configure the OAuth consent screen, select Desktop app, click Create
  5. Download the JSON file — save it somewhere permanent (e.g. ~/Documents/client_secrets.json)

On first use, a browser window will open asking you to sign in to your Google account. After that, the token is saved and no browser interaction is needed again.

Option B — Service Account (For automation or team use)
  1. Go to Google Cloud Console and create or select a project
  2. Enable the Search Console API
  3. Go to Credentials → Create Credentials → Service Account
  4. Go to the Keys tab → Add Key → Create new key → JSON → Download
  5. Save the file somewhere permanent (e.g. ~/Documents/service_account.json)
  6. Add the service account email to your GSC property: Search Console → Settings → Users and permissions → Add user → Full access
🎥 Watch the step-by-step setup tutorial for this section

Updated 2026 — covers the full installation process using the new uvx method, from setting up your Google credentials to your first successful query.


Step 2 — Installation
Option A — uvx (Recommended)

No cloning, no Python installation, no virtual environments. uvx downloads and runs the server automatically and keeps it up to date.

Install uv — open Terminal and run all three commands in order:

# 1. Download and install
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. Activate in the current Terminal session
source $HOME/.local/bin/env

# 3. Make it permanent for all future sessions
echo 'source $HOME/.local/bin/env' >> ~/.zshrc

Verify:

uv --version

Why all three commands? The installer puts uv in ~/.local/bin, but your already-open Terminal session doesn't know about that folder yet. Step 2 activates it immediately. Step 3 ensures every future Terminal window has it automatically.

Now configure your AI client:


Claude Desktop

Config file: ~/Library/Application Support/Claude/claude_desktop_config.json

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Service Account:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_CREDENTIALS_PATH": "/full/path/to/service_account.json",
        "GSC_SKIP_OAUTH": "true"
      }
    }
  }
}

Cursor

Config file: ~/.cursor/mcp.json

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Codex CLI

Config file: ~/.codex/config.toml

OAuth:

[mcp_servers.gscServer]
command = "/FULL/PATH/TO/uvx"
args = ["mcp-search-console"]
enabled = true
env = { GSC_OAUTH_CLIENT_SECRETS_FILE = "/full/path/to/client_secrets.json" }

Service Account:

[mcp_servers.gscServer]
command = "/FULL/PATH/TO/uvx"
args = ["mcp-search-console"]
enabled = true
env = { GSC_CREDENTIALS_PATH = "/full/path/to/service_account.json", GSC_SKIP_OAUTH = "true" }

Finding your uvx path: On macOS/Linux run which uvx in Terminal after installing uv (typically /Users/YOUR_NAME/.local/bin/uvx). On Windows, run Get-Command uvx | Select-Object -ExpandProperty Source in PowerShell (or where uvx in cmd) — it's usually C:\Users\YOUR_NAME\.local\bin\uvx.exe. Replace /FULL/PATH/TO/uvx in the configs above with that path.

Why the full path? GUI apps like Claude Desktop and Cursor launch without reading your shell config (~/.zshrc), so they don't know about ~/.local/bin. Using the full path guarantees it works regardless of how the app is launched. If you see a spawn uvx ENOENT error, this is the fix.

After saving the config, fully quit the app (Cmd+Q) and reopen it.

For OAuth: on first use, a browser window will open automatically for login. After that, the token is cached and you won't be asked again.


Option B — Clone (Advanced)

Prefer a video walkthrough for this method? The tutorial below covers the clone install path step by step — virtual environment setup, dependencies, and config:

Google Search Console API Setup Tutorial

Use this if you want to modify the code or run a specific local version. This method uses the video tutorial above for the credential setup steps.

Requires Python 3.11+. This server will not start on Python 3.10 or older — and when it's launched by a GUI client like Claude Desktop, it fails silently (no tools appear and no log file is written). Check your version with python --version. If it's below 3.11, install Python 3.11 or newer and recreate your virtual environment. The uvx method (Option A) avoids this entirely by managing the Python version for you, so it's the recommended path on Windows.

Clone the repo:

git clone https://github.com/AminForou/mcp-gsc.git
cd mcp-gsc

Or download the ZIP from the green Code button at the top of this page and unzip it.

Set up the environment:

uv venv .venv
uv pip install -r requirements.txt

Configure your AI client (Claude Desktop example):

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/full/path/to/mcp-gsc/.venv/bin/python",
      "args": ["/full/path/to/mcp-gsc/gsc_server.py"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Service Account:

{
  "mcpServers": {
    "gscServer": {
      "command": "/full/path/to/mcp-gsc/.venv/bin/python",
      "args": ["/full/path/to/mcp-gsc/gsc_server.py"],
      "env": {
        "GSC_CREDENTIALS_PATH": "/full/path/to/service_account.json",
        "GSC_SKIP_OAUTH": "true"
      }
    }
  }
}

Mac path examples:

  • Python: /Users/yourname/Documents/mcp-gsc/.venv/bin/python
  • Script: /Users/yourname/Documents/mcp-gsc/gsc_server.py

Step 3 — Test

Ask your AI assistant: "List my GSC properties"

If you see your properties — it's working. If not, ask: "Call get_capabilities" to see auth status and diagnose the issue.


What you need first

  • A Google account with access to at least one Search Console property
  • An OAuth Desktop client JSON from Google Cloud with the Search Console API switched on, or a service account key
  • uv, for uvx

Add Google Search Console MCP to your app

Pick your app for a ready-to-paste snippet and where it goes, built from the steps above.

Where it goes: Your terminal, in the project folder

Claude Code
claude mcp add search-console -e GSC_OAUTH_CLIENT_SECRETS_FILE=/full/path/to/client_secrets.json -- uvx mcp-search-console

Desktop clients often cannot find uvx, so put its full path (from "which uvx") in "command". A browser window opens for sign-in the first time. For a service account, set GSC_CREDENTIALS_PATH to its key and GSC_SKIP_OAUTH to "true" instead.

Checked against the project's own install docs on 27 Oct 2026: AminForou/mcp-gsc README.

New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.

Google Search Console MCP not working? Common fixes

spawn uvx ENOENT, or no tools appear
Desktop apps do not read your shell profile. Put the full path to uvx in "command"; "which uvx" prints it.
The credentials file is not found
Use absolute paths in GSC_OAUTH_CLIENT_SECRETS_FILE or GSC_CREDENTIALS_PATH, not ~ or a relative path.
The config changed but nothing happens
Quit the client fully, not just its window, and open it again.
It signs in as the wrong Google account
Ask it to run reauthenticate, which clears the saved token and opens a fresh sign-in.

How do I configure Google Search Console MCP?

Names are exactly as the project spells them. Required ones are marked.

SettingWhat it does
GSC_OAUTH_CLIENT_SECRETS_FILEEnvironment variable · requiredAbsolute path to the OAuth Desktop client JSON you downloaded from Google Cloud. Needed for the OAuth sign-in./Users/you/keys/client_secrets.json
GSC_CREDENTIALS_PATHEnvironment variableAbsolute path to a service account key, if you use one instead of OAuth. Add the service account's email as a user on each property.
GSC_SKIP_OAUTHEnvironment variableSet to true to use the service account and skip the OAuth sign-in.true
GSC_DATA_STATEEnvironment variableall (the default) matches the numbers in the Search Console dashboard; final returns only confirmed data, two or three days behind.final
GSC_ALLOW_DESTRUCTIVEEnvironment variableSet to true to let add_site, delete_site and delete_sitemap run. Off by default.true

Google Search Console MCP FAQ

How do I add the Google Search Console MCP server to Claude Code?

Create a Desktop app OAuth client in Google Cloud with the Search Console API enabled, then run claude mcp add gsc -e GSC_OAUTH_CLIENT_SECRETS_FILE=/full/path/to/client_secrets.json -- uvx mcp-search-console.

How do I set up Google credentials for mcp-gsc?

In Google Cloud Console, enable the Search Console API, create an OAuth client ID of type Desktop app and download its JSON. Point GSC_OAUTH_CLIENT_SECRETS_FILE at it; you sign in once in the browser.

Is the Search Console MCP server made by Google?

No. It is an open source community project by Amin Foroutan that uses Google's official Search Console API.

Is the Search Console MCP server free?

Yes. It is MIT licensed and the Search Console API is free within Google's quotas. The author also sells a separate hosted version with extra GA4 tools.

Can the Search Console MCP server request indexing?

No. Google's API offers URL inspection but not the Request Indexing button, so no MCP server can do it. It can submit sitemaps and inspect URLs in bulk.

Is the Search Console MCP server safe?

Removing sites and sitemaps is off unless you set GSC_ALLOW_DESTRUCTIVE. For read-only use, add a service account to a property with restricted access and use GSC_CREDENTIALS_PATH.

Why do Search Console MCP numbers differ from the dashboard?

Check GSC_DATA_STATE. The default, all, includes fresh data like the dashboard; final leaves out the last few days that Google has not confirmed yet.

Why does the Search Console MCP server sign in as the wrong Google account?

It saved a token from an earlier sign-in. Ask the assistant to run reauthenticate, then sign in with the account that owns the properties.

Google Search Console MCP README

This is the project's own README from AminForou/mcp-gsc, written by Amin Foroutan (AminForou/mcp-gsc), and shared under its MIT licence. We copied it on 27 Oct 2026, so the version on GitHub may be newer.

Google Search Console MCP Server for SEOs

A Model Context Protocol (MCP) server that connects Google Search Console (GSC) to AI assistants, allowing you to analyze your SEO data through natural language conversations. Works with Claude Desktop, Cursor, Codex CLI, Gemini CLI, Antigravity, and any other MCP-compatible client.

Skip setup, get more. A more advanced hosted version — one-click sign-in, added GA4 tools. Works with Claude Desktop, Claude Code, Claude.ai, Codex, Cursor, and any MCP client. Only 100 seats. → Advanced GSC MCP (hosted)


What's New

[0.4.1] — September 2026
  • check_indexing_issues runs concurrently — same fix as #31, so it no longer times out on 10-URL batches against sc-domain:* properties. Thanks @kuldiph. (#55)
  • Removed a leftover dead orderBy in get_search_by_page_query (the Search Analytics API ignores it). Thanks @kuldiph. (#55)
[0.4.0] — September 2026
  • Rich-result issues now surface — inspect_url_enhanced and batch_url_inspection read rich-result issues from the correct API path, so markup problems are reported instead of silently dropped. Thanks @patrickweh. (#46, #48)
  • batch_url_inspection runs concurrently — 10-URL batches no longer time out on sc-domain:* properties. Thanks @remotesensei. (#31)
  • compare_search_periods deltas fixed — Period 1 is now the analyzed period and Period 2 the baseline, so growth reads as growth (not decline). Thanks @JKdreaming. (#42)
  • get_advanced_search_analytics sorting works — sort_by/sort_direction are now applied instead of silently ignored. Thanks @kuldiph. (#54)
  • Hardened error handling — replaced bare except: clauses so fatal signals aren't swallowed. Thanks @kuldiph. (#53)
  • Note: batch_url_inspection renames the per-URL verdict field to index_verdict to distinguish it from the rich-result verdict.
[0.3.3] — July 2026
  • Fixed fresh installs broken by mcp 2.0 — pinned mcp[cli]<2.0.0. The mcp SDK 2.0.0 (released 2026-07-28) removed the mcp.server.fastmcp module, so every fresh uvx mcp-search-console install crashed on startup with ModuleNotFoundError: No module named 'mcp.server.fastmcp'. New installs now resolve a working 1.x SDK again — no --with "mcp<2" workaround needed.
[0.3.2] — April 2026
  • OAuth browser flow fixed for uvx — removed the isatty block that prevented the browser login window from opening when running as an MCP subprocess on macOS. OAuth now works out of the box with uvx, no manual terminal run needed.
  • get_capabilities tool added — call this to get a full list of available tools and current auth status in one shot. Useful when your AI assistant isn't sure what tools are available.
  • Better auth error messages — all tools now tell you exactly what to do when credentials are missing or expired.

What Can This Do?

Property Management

  • See all your GSC properties in one place
  • Get verification details and ownership information
  • Add or remove properties from your account

Search Analytics & Reporting

  • Discover which queries bring visitors to your site
  • Track impressions, clicks, and click-through rates
  • Analyze performance trends and compare time periods
  • Visualize data with charts created by your AI assistant

URL Inspection & Indexing

  • Check if specific pages have indexing problems
  • See when Google last crawled your pages
  • Inspect multiple URLs at once to identify patterns

Sitemap Management

  • View all sitemaps and their status
  • Submit new sitemaps
  • Check for errors or warnings

Available Tools

Tool What It Does What You Need to Provide
get_capabilities Lists all tools and shows auth status — call this first if unsure Nothing
list_properties Shows all your GSC properties Nothing
get_site_details Details about a specific site Site URL
get_search_analytics Top queries and pages with clicks, impressions, CTR, position Site URL, time period
get_performance_overview Summary of site performance Site URL, time period
compare_search_periods Compare performance between two time periods Site URL, two date ranges
get_search_by_page_query Search terms driving traffic to a specific page Site URL, page URL
get_advanced_search_analytics Analytics with filters by country, device, query, page Site URL
inspect_url_enhanced Detailed crawl/index status for a URL Site URL, page URL
batch_url_inspection Inspect up to 10 URLs at once Site URL, list of URLs
check_indexing_issues Check multiple URLs for indexing problems Site URL, list of URLs
get_sitemaps Lists all sitemaps for a site Site URL
list_sitemaps_enhanced Detailed sitemap info including errors and warnings Site URL
manage_sitemaps Submit or delete sitemaps Site URL, action
reauthenticate Re-run the OAuth browser login (switch accounts) Nothing

Ask your AI assistant to "call get_capabilities" for the full list of all 20 tools.


Skip setup — try the hosted MCP server with one-click Google sign-in. Works in ChatGPT and Claude web. Includes GA4 and advanced SEO tools.

Getting Started

Step 1 — Set Up Google API Credentials

You need credentials before configuring any client. Pick one method:

Option A — OAuth (Recommended — uses your own Google account)
  1. Go to Google Cloud Console and create or select a project
  2. Enable the Search Console API
  3. Go to Credentials → Create Credentials → OAuth client ID
  4. Configure the OAuth consent screen, select Desktop app, click Create
  5. Download the JSON file — save it somewhere permanent (e.g. ~/Documents/client_secrets.json)

On first use, a browser window will open asking you to sign in to your Google account. After that, the token is saved and no browser interaction is needed again.

Option B — Service Account (For automation or team use)
  1. Go to Google Cloud Console and create or select a project
  2. Enable the Search Console API
  3. Go to Credentials → Create Credentials → Service Account
  4. Go to the Keys tab → Add Key → Create new key → JSON → Download
  5. Save the file somewhere permanent (e.g. ~/Documents/service_account.json)
  6. Add the service account email to your GSC property: Search Console → Settings → Users and permissions → Add user → Full access
🎥 Watch the step-by-step setup tutorial for this section

Updated 2026 — covers the full installation process using the new uvx method, from setting up your Google credentials to your first successful query.


Step 2 — Installation
Option A — uvx (Recommended)

No cloning, no Python installation, no virtual environments. uvx downloads and runs the server automatically and keeps it up to date.

Install uv — open Terminal and run all three commands in order:

# 1. Download and install
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. Activate in the current Terminal session
source $HOME/.local/bin/env

# 3. Make it permanent for all future sessions
echo 'source $HOME/.local/bin/env' >> ~/.zshrc

Verify:

uv --version

Why all three commands? The installer puts uv in ~/.local/bin, but your already-open Terminal session doesn't know about that folder yet. Step 2 activates it immediately. Step 3 ensures every future Terminal window has it automatically.

Now configure your AI client:


Claude Desktop

Config file: ~/Library/Application Support/Claude/claude_desktop_config.json

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Service Account:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_CREDENTIALS_PATH": "/full/path/to/service_account.json",
        "GSC_SKIP_OAUTH": "true"
      }
    }
  }
}

Cursor

Config file: ~/.cursor/mcp.json

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/FULL/PATH/TO/uvx",
      "args": ["mcp-search-console"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Codex CLI

Config file: ~/.codex/config.toml

OAuth:

[mcp_servers.gscServer]
command = "/FULL/PATH/TO/uvx"
args = ["mcp-search-console"]
enabled = true
env = { GSC_OAUTH_CLIENT_SECRETS_FILE = "/full/path/to/client_secrets.json" }

Service Account:

[mcp_servers.gscServer]
command = "/FULL/PATH/TO/uvx"
args = ["mcp-search-console"]
enabled = true
env = { GSC_CREDENTIALS_PATH = "/full/path/to/service_account.json", GSC_SKIP_OAUTH = "true" }

Finding your uvx path: On macOS/Linux run which uvx in Terminal after installing uv (typically /Users/YOUR_NAME/.local/bin/uvx). On Windows, run Get-Command uvx | Select-Object -ExpandProperty Source in PowerShell (or where uvx in cmd) — it's usually C:\Users\YOUR_NAME\.local\bin\uvx.exe. Replace /FULL/PATH/TO/uvx in the configs above with that path.

Why the full path? GUI apps like Claude Desktop and Cursor launch without reading your shell config (~/.zshrc), so they don't know about ~/.local/bin. Using the full path guarantees it works regardless of how the app is launched. If you see a spawn uvx ENOENT error, this is the fix.

After saving the config, fully quit the app (Cmd+Q) and reopen it.

For OAuth: on first use, a browser window will open automatically for login. After that, the token is cached and you won't be asked again.


Option B — Clone (Advanced)

Prefer a video walkthrough for this method? The tutorial below covers the clone install path step by step — virtual environment setup, dependencies, and config:

Google Search Console API Setup Tutorial

Use this if you want to modify the code or run a specific local version. This method uses the video tutorial above for the credential setup steps.

Requires Python 3.11+. This server will not start on Python 3.10 or older — and when it's launched by a GUI client like Claude Desktop, it fails silently (no tools appear and no log file is written). Check your version with python --version. If it's below 3.11, install Python 3.11 or newer and recreate your virtual environment. The uvx method (Option A) avoids this entirely by managing the Python version for you, so it's the recommended path on Windows.

Clone the repo:

git clone https://github.com/AminForou/mcp-gsc.git
cd mcp-gsc

Or download the ZIP from the green Code button at the top of this page and unzip it.

Set up the environment:

uv venv .venv
uv pip install -r requirements.txt

Configure your AI client (Claude Desktop example):

OAuth:

{
  "mcpServers": {
    "gscServer": {
      "command": "/full/path/to/mcp-gsc/.venv/bin/python",
      "args": ["/full/path/to/mcp-gsc/gsc_server.py"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Service Account:

{
  "mcpServers": {
    "gscServer": {
      "command": "/full/path/to/mcp-gsc/.venv/bin/python",
      "args": ["/full/path/to/mcp-gsc/gsc_server.py"],
      "env": {
        "GSC_CREDENTIALS_PATH": "/full/path/to/service_account.json",
        "GSC_SKIP_OAUTH": "true"
      }
    }
  }
}

Mac path examples:

  • Python: /Users/yourname/Documents/mcp-gsc/.venv/bin/python
  • Script: /Users/yourname/Documents/mcp-gsc/gsc_server.py

Step 3 — Test

Ask your AI assistant: "List my GSC properties"

If you see your properties — it's working. If not, ask: "Call get_capabilities" to see auth status and diagnose the issue.


Environment Variables Reference

Variable Required Default Description
GSC_OAUTH_CLIENT_SECRETS_FILE OAuth only — Absolute path to your OAuth client secrets JSON. Always required when using uvx.
GSC_CREDENTIALS_PATH Service account only — Absolute path to your service account JSON key. Always required when using uvx.
GSC_SKIP_OAUTH No false Set to "true" to force service account auth and skip OAuth entirely
GSC_DATA_STATE No "all" "all" matches the GSC dashboard. "final" returns only confirmed data (2–3 day lag).
GSC_ALLOW_DESTRUCTIVE No false Set to "true" to enable add/delete site and delete sitemap tools

Cursor Marketplace

One-click install available — search for mcp-search-console in the Cursor Marketplace.

After installing, configure your credentials (see Step 1 above) then use the bundled skills directly in Cursor Agent chat:

Skill How to invoke What it does
seo-weekly-report "Run the SEO weekly report for example.com" Full 28-day performance summary with period-over-period comparison and top queries
cannibalization-check "Check for keyword cannibalization on example.com" Finds queries where multiple pages compete; recommends which to keep
indexing-audit "Audit indexing for my top pages" Batch-inspects top 20 pages and returns a prioritized fix list
content-opportunities "Find content opportunities for example.com" Surfaces position-11-20 queries with high impressions and low CTR

Sample Prompts

Tool Sample Prompt
list_properties "List all my GSC properties and tell me which ones have the most pages indexed."
get_search_analytics "Show me the top 20 search queries for mywebsite.com in the last 30 days, highlight any with CTR below 2%, and suggest title improvements."
get_performance_overview "Create a visual performance overview of mywebsite.com for the last 28 days, identify any unusual drops or spikes, and explain possible causes."
check_indexing_issues "Check these pages for indexing issues: mywebsite.com/product, mywebsite.com/services, mywebsite.com/about"
inspect_url_enhanced "Do a comprehensive inspection of mywebsite.com/landing-page and give me actionable recommendations."
compare_search_periods "Compare my site's performance between January and February. What queries improved the most?"
get_advanced_search_analytics "Analyze queries with high impressions but positions below 10, filtered to mobile traffic in the US only."

Troubleshooting

spawn uvx ENOENT or command not found: uvx

Your AI client can't find uvx. Use the full path instead of just uvx:

# Find your full path (macOS/Linux):
which uvx
# Typically: /Users/YOUR_NAME/.local/bin/uvx
# Find your full path (Windows PowerShell):
Get-Command uvx | Select-Object -ExpandProperty Source
# Typically: C:\Users\YOUR_NAME\.local\bin\uvx.exe

Replace "command": "uvx" with the full path (e.g. "command": "/Users/YOUR_NAME/.local/bin/uvx") in your config.

uv --version gives "command not found" right after installing

The installer updates ~/.local/bin but your current Terminal session doesn't see it yet. Run:

source $HOME/.local/bin/env

Then add it permanently:

echo 'source $HOME/.local/bin/env' >> ~/.zshrc
Authentication failed / credentials file not found

Make sure you are using the absolute path to your credentials file — not a relative path, not ~/. Example:

/Users/yourname/Documents/client_secrets.json   ✅
~/Documents/client_secrets.json                 ✅
client_secrets.json                              ❌
MCP only works in Claude Desktop app, not the website

The MCP server runs locally on your machine. It only works in the Claude Desktop app (downloaded from claude.ai/download), not in the claude.ai browser interface.

AI Client Configuration Issues
  1. Make sure all file paths in your config are correct absolute paths
  2. Fully quit (Cmd+Q) and reopen the app after any config change — just closing the window is not enough
  3. Ask your AI assistant to "call get_capabilities" — it will report the exact auth status and error

Safety: Destructive Operations

By default, add_site, delete_site, and delete_sitemap are disabled. To enable them:

"GSC_ALLOW_DESTRUCTIVE": "true"

Remote Deployment & Docker (Advanced)

The standard setup runs the server locally. This section is only for users who want to run it on a remote server or in a container.

HTTP Transport
MCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=3001 python gsc_server.py
Variable Default Description
MCP_TRANSPORT stdio Set to sse for network/remote use
MCP_HOST 127.0.0.1 Host to bind
MCP_PORT 3001 Port to bind
Docker
docker build -t mcp-gsc .

docker run \
  -e MCP_TRANSPORT=sse \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_PORT=3001 \
  -e GSC_CREDENTIALS_PATH=/app/credentials.json \
  -v /path/to/credentials.json:/app/credentials.json \
  -p 3001:3001 \
  mcp-gsc

Related Tools

Advanced GSC Visualizer — A Chrome extension (14,000+ users) with interactive charts, one-click export of up to 25,000 rows, keyword cannibalization detection, and an AI assistant — all directly inside Google Search Console. Built by the same author. Install from the Chrome Web Store →


Contributing

Found a bug or have an idea for improvement? Open an issue or submit a pull request on GitHub.

Thanks to everyone who has reported issues and contributed fixes, including @patrickweh, @remotesensei, @JKdreaming, and @kuldiph.


License

MIT License. See the LICENSE file for details.


Changelog

[0.4.1] — September 2026
  • check_indexing_issues now inspects URLs concurrently (same fix as #31), avoiding timeouts on full 10-URL batches against sc-domain:* properties. (Fixes #55; thanks @kuldiph)
  • Removed a leftover orderBy from get_search_by_page_query — a dead field the Search Analytics API ignores, matching the #54 cleanup. (Fixes #55; thanks @kuldiph)
[0.4.0] — September 2026
  • Fixed rich-result issue reporting in inspect_url_enhanced and batch_url_inspection — issues are read from detectedItems[].items[].issues[] (issueMessage), the key the API actually returns, so problems are no longer silently dropped. (Fixes #46, #48; thanks @patrickweh)
  • batch_url_inspection now inspects URLs concurrently, so full 10-URL batches complete within the client timeout even on slower sc-domain:* properties. (Fixes #31; thanks @remotesensei)
  • compare_search_periods now computes deltas as Period 1 relative to Period 2 (Period 2 as the percentage baseline, positive = Period 1 better), with the direction documented. (Fixes #42; thanks @JKdreaming)
  • get_advanced_search_analytics applies sort_by/sort_direction client-side instead of sending an orderBy the Search Analytics API ignores. (Fixes #54; thanks @kuldiph)
  • Replaced three bare except: clauses with except Exception: so KeyboardInterrupt/SystemExit are no longer swallowed. (Fixes #53; thanks @kuldiph)
  • Breaking: batch_url_inspection renames the per-URL verdict field to index_verdict.
[0.3.3] — July 2026
  • Pinned mcp[cli]>=1.3.0,<2.0.0. The mcp SDK 2.0.0 removed mcp.server.fastmcp, breaking all fresh uvx installs with ModuleNotFoundError. Capping below 2.0 restores working installs. (Fixes #41)
[0.3.2] — April 2026
  • OAuth browser flow fixed for uvx — removed isatty block that prevented the OAuth browser window from opening when running as an MCP subprocess on macOS. OAuth + uvx now works out of the box.
  • get_capabilities tool — returns all available tools grouped by category plus live auth status in one call.
  • Better auth error messages — all tools now explicitly tell you to call reauthenticate when credentials are missing or expired.
  • Improved list_properties description — better semantic tool discovery in clients that use lazy tool loading.
[0.3.1] — April 2026
  • Fixed list_properties masking real auth errors; fail-fast on missing credentials.
[0.3.0] — April 2026
  • Cursor Marketplace plugin with 4 bundled SEO skills
  • Stable token storage in platform user config dir (survives uvx upgrades)
  • Structured JSON output for all data tools
  • 39 unit tests
[0.2.2] — April 2026
  • Safety mode for destructive tools (disabled by default)
  • HTTP/SSE transport for remote deployments
  • Dockerfile
[0.2.1] — March 2026
  • reauthenticate tool for switching Google accounts
  • Fixed sitemap TypeError crash
  • Fixed domain property 404 errors
[0.2.0] — March 2026
  • dataState: "all" by default (matches GSC dashboard)
  • Flexible row_limit parameter (up to 500)
  • Multi-dimension filtering for advanced analytics
[0.1.0] — Initial release
  • 19 tools covering property management, search analytics, URL inspection, and sitemap management
  • OAuth and service account authentication

Two peas, one chat

Chat with AI about Google Search Console

Opens a chat primed with Google Search Console’s README and setup docs from this page, or add it in Cursor to use its tools.

The Cursor button opens Cursor and asks before it adds the server. Fill in any keys it needs in Cursor’s MCP settings.

Peas in a pod

What are the alternatives to Google Search Console MCP?

How Google Search Console MCP lines up against its neighbours on the shelf. See every knowledge and work apps server.

  • Google Search Console MCPThis pea

    Ask an assistant about your clicks, queries, indexing and sitemaps in Search Console.

    Tools
    21
    Runs on
    Your computer
    Licence
    MIT
    Stars
    2K
  • Telegram MCP

    Your own Telegram account, as an assistant can use it: chats, search, sending and groups.

    Tools
    147
    Runs on
    Your computer
    Licence
    Apache-2.0
    Stars
    1.9K
  • Slack MCP Server

    Read and search your Slack channels, threads and DMs, with posting off by default.

    Tools
    22
    Runs on
    Your computer
    Licence
    MIT
    Stars
    1.9K
  • iMCP

    A Mac menu bar app that shares Calendar, Messages, Notes, Reminders and more with your assistant.

    Tools
    56
    Runs on
    Your computer
    Licence
    MIT
    Stars
    1.8K
  • OpenLore

    One folder of Markdown that every agent on a team can read, with access rules.

    Tools
    2
    Runs on
    Hosted
    Licence
    Apache-2.0
    Stars
    1.7K
  • Minutes

    Records and transcribes meetings on your device, then lets an assistant search them.

    Tools
    34
    Runs on
    Your computer
    Licence
    MIT
    Stars
    1.6K
Full docs on GitHubAminForou/mcp-gsc

Something wrong on this page? Tell us.