Google Search Console MCP Server

Google Search Console MCP Server

Connects Google Search Console to AI assistants, enabling SEO data analysis through natural language conversations.

Category
Visit Server

README

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.

This repository is a local fork of AminForou/mcp-gsc. It stays close to upstream and currently adds:

  • Local docs and notes
  • CI and Dependabot for the mirror
  • Python runtime compatibility of 3.10+ (Python 3.9 is not supported by the current MCP SDK)

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.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
gsc_export_search_analytics_snapshot Read-only Search Analytics snapshot export with JSONL/CSV files and manifest Site URL, date range
gsc_build_traffic_drop_queue Read-only prioritized traffic-loss action queue for operator workflows Site URL, current and previous date ranges
gsc_build_content_action_queue Read-only prioritized content-opportunity action queue for operator workflows Site URL, date range
gsc_build_cannibalization_decision_queue Read-only sampled cannibalization decision queue for manual review Site URL, date range
gsc_run_weekly_seo_ops_report Read-only weekly SEO ops report aggregator with performance snapshot, prioritized queues, and manual checklist guidance Site URL, optional date ranges
gsc_get_manual_operator_checklist Read-only checklist of Search Console UI-only/manual review tasks and evidence to collect Optional site URL, focus
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
build_indexing_action_queue Read-only prioritized action queue from URL Inspection data Site URL, list of URLs
check_indexing_issues Check multiple URLs for indexing problems Site URL, list of URLs
gsc_audit_jobposting_schema Read-only JobPosting JSON-LD audit with Indexing API eligibility dry-run; never calls the Indexing API Site URL, job URLs
gsc_build_jobposting_lifecycle_queue Read-only JobPosting lifecycle action queue with dry-run Indexing API recommendations only Site URL, job URLs
gsc_run_adjacent_technical_diagnostics Auth-free sampled adjacent technical diagnostics with manual PageSpeed/Rich Results links; no PSI, CrUX, or GSC API calls Site URL, page URLs
get_sitemaps Lists all sitemaps for a site Site URL
list_sitemaps_enhanced Detailed sitemap info including errors and warnings Site URL
audit_sitemap_urls Safely fetches and parses a sitemap or sitemap index for read-only URL diagnostics Site URL, sitemap 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 registered tool catalog.


Search Analytics Data Behavior

Google Search Analytics API responses are best treated as official API data with clear coverage limits:

  • Search Analytics sorts rows by clicks by default, except when results are grouped by date.
  • Requested ranking such as sort_by is applied by this server after rows are returned, so client-side sorting only reorders the retrieved rows.
  • Returned rows are the top rows for the request, not a guaranteed complete export of everything visible in the Search Console UI.
  • gsc_export_search_analytics_snapshot writes a read-only API snapshot under GSC_EXPORT_DIR when set, otherwise under the GSC config directory's exports/ folder. Relative export directories are normalized to absolute paths. Each snapshot includes manifest.json with request fingerprint, row/page counts, totals, artifact checksums, and limitations.
  • gsc_build_traffic_drop_queue compares current and previous Search Analytics periods using two official query calls and returns stable JSON action items with heuristic likely causes, confidence, limitations, and manual-verification flags.
  • gsc_build_content_action_queue uses one official Search Analytics query call and returns stable JSON heuristic opportunities for high-impression/low-CTR rows, striking-distance rankings, and page/query refresh candidates. Items require manual verification before content changes.
  • gsc_build_cannibalization_decision_queue uses one official Search Analytics query call with query,page dimensions and returns a stable sampled diagnostic queue for likely competing pages. It is not proof of cannibalization and requires SERP, intent, canonical, internal-link, and business review before URL changes.
  • gsc_run_weekly_seo_ops_report composes a stable read-only JSON weekly operator report from two dimensionless Search Analytics performance calls, the traffic-drop/content/cannibalization queues, and the static manual checklist. It supports partial failures by returning section-level errors and warnings instead of collapsing the whole report when at least one section succeeds.
  • gsc_get_manual_operator_checklist is a static read-only checklist for UI-only/manual Search Console surfaces such as Manual actions, Security issues, Removals, Crawl stats, Core Web Vitals, HTTPS, Links, Enhancements, and Settings access. It does not call Google APIs, require credentials, click UI buttons, submit requests, remove URLs, request indexing, validate fixes, or change permissions.
  • gsc_audit_jobposting_schema is a read-only HTML fetch and JSON-LD parser for supplied property-scoped job URLs. It blocks off-property/private targets, does not follow redirects, does not call Search Console, does not call the Google Indexing API, does not publish URL_UPDATED or URL_DELETED, does not request indexing, and does not write files. Its indexing_api_dry_run recommendation is advisory only.
  • gsc_build_jobposting_lifecycle_queue composes the JobPosting audit with optional URL Inspection diagnostics when credentials are available. It is read-only, dry-run only, quota-conscious, supports partial per-URL failures, and never calls the Indexing API or mutates Search Console.
  • gsc_run_adjacent_technical_diagnostics is auth-free and read-only. It safely samples supplied property-scoped pages for basic adjacent technical signals such as robots meta noindex, canonical hints, JSON-LD type counts, robots.txt summary counts, and manual PageSpeed/Rich Results UI links. It is not Search Console parity and does not call PageSpeed Insights, CrUX, Rich Results, Search Console, or Indexing APIs.
  • Snapshot exports paginate with Search Analytics startRow and rowLimit, but the API remains bounded: exported rows may not equal a full UI export.
  • Search Analytics requests support data_state="all", data_state="final", and data_state="hourly_all" (per call where available, or globally through GSC_DATA_STATE). Use hourly_all only with dimensions="hour" or a dimension list that includes hour, for example dimensions="hour,query"; requests without hour are rejected before invalid API calls or snapshot file writes.
  • Official API surfaces: Search Analytics metrics, URL Inspection results for requested URLs, sitemap metadata, and property information.
  • Adjacent approximations: content opportunities, page prioritization, period comparisons, and other workflows that rank or filter the returned rows.
  • Sampled diagnostics: cannibalization checks and broad audits that look for patterns within available top rows.
  • Manual-only surfaces: full UI exports, UI-only reports, and any workflow that requires complete row coverage beyond the API response.

JobPosting Schema Audit & Indexing API Dry-Run

gsc_audit_jobposting_schema returns stable JSON with top-level schema_version: "jobposting_schema_audit.v1" plus summary counts, per-URL issues, summarized JobPosting objects, dry-run Indexing API recommendations, limitations, and source provenance.

gsc_build_jobposting_lifecycle_queue returns stable JSON with top-level schema_version: "jobposting_lifecycle_queue.v1" plus prioritized action items for active valid jobs, schema-blocked jobs, missing or stale validThrough, expired/noindex jobs, optional URL Inspection observations, and dry-run-only URL_UPDATED/URL_DELETED recommendations. Actual Indexing API publish/delete remains outside this MCP flow and should only happen later behind explicit approval, eligibility, and quota gates.

Encoded source constraints:

  • Google JobPosting docs: required properties checked include datePosted, description, hiringOrganization, jobLocation, and title; the remote-work exception requires jobLocationType plus applicantLocationRequirements; JobPosting should be on the most specific single job page, not listing pages; expired jobs should be removed or use past validThrough; content must match the page and users must be able to apply.
  • Google Indexing API usage docs: Indexing API is only for pages with JobPosting or BroadcastEvent embedded in VideoObject; URL_UPDATED and URL_DELETED are publish actions; getMetadata is read-only status metadata and not indexing proof.
  • Google Indexing API quota docs: default publish quota is 200 URLs/day/project, metadata quota is 180/min/project, and all endpoints share 380/min/project; production use requires approval and quota planning.

Limitations:

  • The audit parses only static JSON-LD in <script type="application/ld+json">; it does not evaluate Microdata, RDFa, rendered JavaScript, or external feeds.
  • The tool returns summaries only and does not echo full job descriptions.
  • The dry-run recommendation is not proof of rich result eligibility, indexing, crawl timing, quota approval, or API access.
  • Manual review is still required for apply-flow availability, page/content matching, whether the page is truly a single-job detail page, and business decisions about expired/noindex pages.

<div align="center"> <a href="https://www.advancedgsc.com/mcp?utm_source=github&utm_medium=readme&utm_campaign=mcp-gsc&utm_content=banner"> <img src="assets/mcp-banner.png" alt="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." width="800" style="margin: 20px 0; border-radius: 8px;"> </a> </div>


Getting Started

Quick Start Example

For a domain property, the most common format will be:

sc-domain:example.com

Recommended first workflow in your MCP client:

  1. Call get_capabilities
  2. Run get_search_analytics for sc-domain:example.com
  3. Run compare_search_periods for the last 28 days vs. previous 28 days
  4. Use batch_url_inspection or check_indexing_issues for priority URLs
  5. Review get_sitemaps or manage_sitemaps

For job pages, ask: "Run gsc_build_jobposting_lifecycle_queue for https://example.com/ on these vacancy URLs and prioritize lifecycle actions, including dry-run URL_UPDATED or URL_DELETED recommendations." The tool will not call the Indexing API; if you later want fast recrawl requests for eligible vacancy pages, use the Google Indexing API separately for valid JobPosting URLs only after approval/quota review.

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

<div align="center"> <a href="https://www.youtube.com/watch?v=vhIOoD7B8Ow"> <img src="assets/new-video-thumbnail.jpg" alt="GSC MCP Server Installation Guide 2026" width="600" style="margin: 20px 0; border-radius: 8px;"> </a> </div>

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:

<div align="center"> <a href="https://youtu.be/PCWsK5BgSd0"> <img src="https://i.ytimg.com/vi/PCWsK5BgSd0/maxresdefault.jpg" alt="Google Search Console API Setup Tutorial" width="600" style="margin: 20px 0; border-radius: 8px;"> </a> </div>

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.10+. Python 3.9 is not supported by the current MCP Python SDK, so this server will not start there. Check your version with python --version. If it's below 3.10, install Python 3.10 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 still the recommended path for most users.

Clone the repo:

git clone <your-fork-url>
cd google-search-console-mcp

If you want to compare changes with upstream or contribute a fix back, keep the original project as an upstream remote:

git remote add upstream https://github.com/AminForou/mcp-gsc.git

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/google-search-console-mcp/.venv/bin/python",
      "args": ["/full/path/to/google-search-console-mcp/gsc_server.py"],
      "env": {
        "GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
      }
    }
  }
}

Service Account:

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

Mac path examples:

  • Python: /Users/yourname/Documents/google-search-console-mcp/.venv/bin/python
  • Script: /Users/yourname/Documents/google-search-console-mcp/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). "hourly_all" enables hourly fresh data only for Search Analytics requests whose dimensions include hour; non-hour requests are rejected before calling the API.
GSC_EXPORT_DIR No <GSC config dir>/exports Directory for read-only Search Analytics snapshot exports. Relative values are expanded to absolute paths. Tool args cannot override this path.
GSC_ALLOW_DESTRUCTIVE No false Set to "true" to enable add/delete site and submit/delete sitemap external mutation tools
GSC_ALLOW_REMOTE_SSE No false Required to bind SSE/HTTP transport to a non-loopback host such as 0.0.0.0

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" Weekly ops report with performance snapshot, prioritized queues, and manual checklist guidance
cannibalization-check "Check for keyword cannibalization on example.com" Builds a sampled manual-review decision queue for likely competing pages
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 low-CTR/high-impression, striking-distance, and query/page refresh candidates for manual verification

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."
gsc_export_search_analytics_snapshot "Export a Search Analytics snapshot for June as both JSONL and CSV, then summarize the manifest totals and truncation warning."
gsc_run_weekly_seo_ops_report "Run the weekly SEO ops report for example.com for the last 28 days, include prioritized manual follow-up actions, and call out any section-level errors."
gsc_build_content_action_queue "Build a content action queue for the last 28 days and prioritize high-impression low-CTR, striking-distance (default positions 4-20), and query/page refresh opportunities for manual verification."
gsc_build_cannibalization_decision_queue "Build a cannibalization decision queue for the last 28 days, show likely competing pages by query, and explain which cases need manual SERP and intent review first."
gsc_get_manual_operator_checklist "Give me the weekly manual Search Console operator checklist for example.com, including UI paths and evidence I should collect without taking actions in the UI."

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, submit_sitemap, and delete_sitemap are disabled because they mutate external Google Search Console state. To enable these external mutations:

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

Remote SSE/HTTP mode has no built-in authentication. Treat it as a trusted-network-only mode and place it behind your own network controls, reverse proxy, or tunnel.

HTTP Transport

MCP_TRANSPORT=sse GSC_ALLOW_REMOTE_SSE=true 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
GSC_ALLOW_REMOTE_SSE false Explicit safety switch required for non-loopback SSE/HTTP binding

Docker

docker build -t mcp-gsc .

docker run \
  -e MCP_TRANSPORT=sse \
  -e GSC_ALLOW_REMOTE_SSE=true \
  -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.


License

MIT License. See the LICENSE file for details.


Changelog

[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

  • 20+ tools covering property management, search analytics, URL inspection, sitemap management, and operator queues
  • OAuth and service account authentication

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured