
Google Search Console MCP Server
from nrvmodi
A Model Context Protocol (MCP) server providing access to Google Search Console & Google analytics
Google Search Console MCP Server β The Complete Guide (2026)
Summarize with AI: ChatGPT Β· Perplexity Β· Claude Β· Grok
Quick answer: A Google Search Console MCP server is a Model Context Protocol connector that exposes live GSC data (and optionally GA4) as tools your AI assistant can call. Ask Claude, Cursor, or Codex questions like "What queries dropped this week?" and get real Search Console answers β no CSV exports, no tab switching.
Fastest path (recommended): GenieSeo β hosted, free during beta, 60-second setup, GSC + GA4, no credit card.
Full control: self-host with
uvx mcp-search-console(see self-hosted setup).
<div align="center"> <a href="https://seo.geniedial.in/signup"> <img src="assets/mcp-banner-new.jpg" alt="GenieSeo MCP - connect Google Search Console and GA4 to Claude, Cursor, and Codex" width="800" style="max-width: 100%; border-radius: 12px; margin: 16px 0;"> </a> </div> <div align="center"> <a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link"> <img src="assets/genieseo-readme-poster.jpg" alt="Watch setup video - connect Google Search Console and GA4 to Claude in 60 seconds" width="800" style="max-width: 100%; border-radius: 12px;"> </a> <p><strong><a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link">βΆ Watch the 60-second setup video</a></strong> β sign up, connect Google, paste MCP URL into Claude</p> </div>GenieSeo beta β free right now: All 28 tools (21 Search Console + 7 GA4), one personal MCP URL, works in Claude on the web, Cursor, Codex, and Antigravity. Start free β
Last updated: June 11, 2026 Β· Reading time: ~18 minutes Β· Skill level: Beginner-friendly
This guide covers everything you need to connect Google Search Console (and optionally GA4) to Claude, Cursor, or Codex using the Model Context Protocol (MCP) β including a free hosted option, self-hosted install, 28 tool references, copy-paste prompts, and a video walkthrough.
Table of contents
- Video walkthrough β 60-second setup
- What is a Google Search Console MCP server?
- What does it cost? (free options)
- Why SEOs and developers use MCP for Search Console
- Google Analytics 4 on the same MCP URL
- All 28 MCP tools (reference)
- Hosted vs self-hosted: which should you choose?
- 60-second setup β GenieSeo (hosted)
- Self-hosted setup β open source
- Connect to Claude, Cursor, Codex & Antigravity
- Sample prompts and SEO workflows
- Use cases by role
- Security, privacy, and permissions
- Pricing
- Comparisons
- Architecture
- FAQ
- Resources and links
What is a Google Search Console MCP server?
You open Google Search Console, add a filter, change the date range, export a CSV, build a pivot β and thirty minutes later you have answered one question that should have taken ten seconds.
What if you could just ask?
"Which pages lost traffic this month?" Β· "What keywords am I close to ranking on page one?" Β· "Are any URLs cannibalising each other?"
Model Context Protocol (MCP) is an open standard that lets AI clients connect to external data and tools over a single URL or local process β think of it as USB for AI. A Google Search Console MCP server implements that protocol for GSC: it translates natural-language requests from your AI into Google Search Console API calls and returns structured JSON your model can reason over.
You set it up once. After that, you ask questions in plain English and get answers from your real Search Console data β not generic training-data guesses.
flowchart LR
A[You in Claude / Cursor / Codex] --> B[MCP client]
B --> C[Google Search Console MCP Server]
C --> D[Google Search Console API]
C --> E[Google Analytics 4 API]
D --> F[Queries, clicks, indexing, sitemaps]
E --> G[Sessions, conversions, funnels]
F --> C
G --> C
C --> B
B --> AWhat you get:
| Without MCP | With a GSC MCP server |
|---|---|
| Export CSV from GSC, paste into chat | Ask "Top 20 queries last 28 days with CTR under 2%" |
| Manual URL Inspection one URL at a time | Batch-inspect 10 URLs in one tool call |
| Switch between GSC and GA4 tabs | Cross-reference clicks (GSC) with conversions (GA4) in one conversation |
| Static screenshots for stakeholders | AI generates tables, summaries, and recommendations from live data |
What you can do
Connect GenieSeo to Claude, Cursor, or Codex and work from live Search Console and GA4 data β track rankings, fix indexing, spot content opportunities, cross-reference traffic with conversions, and run SEO workflows in plain English.
This is not a chatbot product. GenieSeo and self-hosted GSC MCP servers are connectors. The conversation stays inside Claude, Cursor, Codex, or Antigravity β your AI gains superpowers, not a new UI to learn.
What does it cost? (free options)
Everything you need to get started is free.
| Item | Cost |
|---|---|
| Google Search Console API | Free |
| Google Analytics 4 API | Free |
| GenieSeo (hosted MCP, beta) | Free β no credit card |
Self-hosted (uvx mcp-search-console) | Free (MIT license) |
| Claude / Cursor (many plans) | Free tier works for testing |
The only real βcostβ is setup time: ~60 seconds on GenieSeo, or 15β45 minutes if you self-host with Google Cloud OAuth.
Why SEOs and developers use MCP for Search Console
Problems MCP solves
- Context switching β GSC UI is built for humans clicking filters, not for agents running repeatable audits across dozens of properties.
- Export friction β Search Analytics caps exports; URL Inspection is one URL per click.
- Analysis gap β Raw data in a spreadsheet still needs an analyst. MCP puts the analyst (your LLM) on the same pipe as the data.
- Cross-channel blind spots β Search Console shows who clicked; GA4 shows what happened next. A combined MCP URL closes that loop.
Who benefits
| Role | Typical workflow |
|---|---|
| SEO specialist | Weekly rank reviews, cannibalization checks, content opportunity mining |
| Agency account manager | Multi-client audits, client-ready summaries, indexing triage |
| Developer | Indexing errors, canonical issues, and fixes β in the same IDE as the code |
| Content marketer | Query-to-page mapping, CTR optimization, briefs from real search demand |
| Startup founder | Organic growth snapshots without hiring an SEO tool stack |
<div align="center"> <a href="https://seo.geniedial.in/signup"> <img src="assets/genieseo-mark-1024-filled.png" alt="GenieSeo - free beta: Google Search Console + GA4 MCP for Claude, Cursor, and Codex" width="200" style="border-radius: 12px;"> </a> <p><strong><a href="https://seo.geniedial.in/signup">GenieSeo is free during beta</a></strong> β 28 tools, one MCP URL, no Python required. <a href="https://seo.geniedial.in/signup">Start free β</a></p> </div>
Google Analytics 4 on the same MCP URL
Most open-source GSC MCP servers are Search Console only. The stack documented here adds 7 GA4 tools on the same MCP endpoint and same Google OAuth consent (webmasters.readonly + analytics.readonly).
Why pair GSC + GA4?
| Data source | Answers |
|---|---|
| Google Search Console | Which queries and pages earn impressions and clicks; indexing status; sitemap health |
| Google Analytics 4 | Sessions, engaged users, conversions, revenue, realtime traffic, funnels |
Example cross-reference prompt:
"For my top 10 organic landing pages by clicks (last 28 days), pull GA4 engaged sessions and conversion rate. Flag pages with high clicks but conversion rate below site average."
That single question uses GSC search analytics and GA4 run_ga4_report β impossible in one step without a combined connector.
Disable GA4 (self-hosted only): set GSC_DISABLE_GA4=true to expose GSC tools only.
All 28 MCP tools (reference)
Call get_capabilities first in any session β it returns auth status and the full tool list.
Authentication (1 tool)
| Tool | Description |
|---|---|
reauthenticate | Re-run OAuth browser login; use when tokens expire or you need to switch Google accounts |
Google Search Console β Properties (3 tools)
| Tool | Parameters | Description |
|---|---|---|
list_properties | β | List all GSC properties (start here for site_url) |
get_site_details | site_url | Verification and ownership details |
get_creator_info | β | Server metadata and attribution |
Google Search Console β Analytics & reporting (5 tools)
| Tool | Example question | Description |
|---|---|---|
get_search_analytics | "Top 20 queries last 28 days with CTR under 2%" | Top queries/pages with clicks, impressions, CTR, position |
get_performance_overview | "How is my site doing this month?" | High-level KPI snapshot |
compare_search_periods | "Which queries improved vs last month?" | Period-over-period deltas |
get_search_by_page_query | "What keywords drive traffic to /pricing?" | Queries driving traffic to one page |
get_advanced_search_analytics | "Top US mobile queries in the last 90 days" | Multi-dimension analytics (country, device, query, page) |
Google Search Console β URL inspection & indexing (3 tools)
| Tool | Example question | Description |
|---|---|---|
inspect_url_enhanced | "Is this URL indexed and what is the canonical?" | Full crawl/index/canonical/mobile/structured-data status |
batch_url_inspection | "Inspect my top 10 pages by clicks" | Bulk inspection in one call (up to 10 URLs) |
check_indexing_issues | "Which of these URLs have indexing problems?" | Prioritized indexing problem summary |
Google Search Console β Sitemaps (5 tools)
| Tool | Key parameters | Description |
|---|---|---|
get_sitemaps | site_url | List sitemaps |
list_sitemaps_enhanced | site_url | Detailed sitemap status, errors, warnings |
get_sitemap_details | site_url, sitemap_url | Single sitemap deep dive |
submit_sitemap | site_url, sitemap_url | Submit a sitemap |
manage_sitemaps | site_url, action | Submit or delete sitemaps |
Google Search Console β Destructive (disabled by default, 2 tools)
Requires GSC_ALLOW_DESTRUCTIVE=true:
| Tool | Description |
|---|---|
add_site | Add a property to GSC |
delete_site | Remove a property from GSC |
Google Analytics 4 (7 tools)
| Tool | Key parameters | Description |
|---|---|---|
list_ga4_properties | β | All GA4 properties on the connected account (start here) |
get_ga4_property_details | property_id | Time zone, currency, industry, parent account |
get_ga4_custom_dimensions_and_metrics | property_id | Custom definitions on the property |
list_ga4_ads_links | property_id | Linked Google Ads accounts |
list_ga4_property_annotations | property_id | Date markers for data-affecting events |
run_ga4_report | property_id, dimensions, metrics, dates | Flexible reporting (sessions, users, revenue, etc.) |
run_ga4_realtime_report | property_id | Last ~30 minutes of live activity |
run_ga4_funnel_report | property_id, funnel steps | Step-by-step conversion funnel |
Meta (1 tool)
| Tool | Description |
|---|---|
get_capabilities | Full tool catalog + live auth status β call this first |
Hosted vs self-hosted: which should you choose?
| Factor | GenieSeo (hosted, free beta) | Self-hosted (uvx mcp-search-console) |
|---|---|---|
| Setup time | ~60 seconds | 15β45 minutes (Google Cloud + client config) |
| Python / terminal | Not required | Required (uvx or clone) |
| GA4 tools | Included (7 tools) | Included in this stack |
| Claude on the web (claude.ai) | Yes β HTTPS MCP URL | No by default (stdio = Desktop only) |
| Claude Desktop | Yes | Yes |
| Cursor | Yes | Yes (with local config) |
| OAuth | One-click Google sign-in | Manual client_secrets.json |
| Token storage | Managed securely by GenieSeo | Local token.json on your machine |
| Cost | Free during beta (no credit card) | Free (MIT license) |
| Best for | SEOs, agencies, fast onboarding | Developers, air-gapped, custom deployments |
Recommendation:
- Choose GenieSeo if you want to query in under a minute, need GA4 + GSC together, use Claude on the web, or share access with non-technical teammates β currently free in beta.
- Choose self-hosted if you need full control over credentials, custom Docker deployments, or zero dependency on a hosted service.
Connect to Claude, Cursor, Codex & Antigravity
Claude (web β claude.ai)
Requires Streamable HTTP URL (GenieSeo hosted). Local stdio servers do not work in the browser.
- Claude β Settings β Connectors β Add custom MCP
- Name:
GenieSeo - URL:
https://seo.geniedial.in/mcp/u/YOUR_TOKEN - Save β start a new chat β ask about Search Console data
Full guide: Connect Search Console to Claude
Claude Desktop
- Hosted: same URL as above in MCP settings
- Self-hosted:
claude_desktop_config.jsonwithuvx+ env vars (see self-hosted)
Cursor
- Settings β MCP β Add MCP server
- Name:
GenieSeo - URL: your GenieSeo MCP URL (or local streamable-http endpoint)
- Use in Chat or Composer (Agent mode) β agents call MCP tools directly
Full guide: Connect Search Console to Cursor
Codex CLI
~/.codex/config.toml:
[mcp_servers.genieseo]
url = "https://seo.geniedial.in/mcp/u/YOUR_TOKEN"
enabled = trueSelf-hosted 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" }Antigravity
Add the same GenieSeo MCP URL in Antigravity MCP settings. One URL works across all Streamable HTTP clients.
Sample prompts and SEO workflows
Search performance
Show me the top 20 search queries for [site] in the last 30 days.
Highlight any with CTR below 2% and suggest title tag improvements.Compare my site's Search Console performance between last month and the month before.
Which queries improved position the most? Which pages lost clicks?Find queries with high impressions but average position below 10,
filtered to mobile traffic in the United States only.Indexing and technical SEO
Check these URLs for indexing issues:
https://example.com/product
https://example.com/services
https://example.com/about
Group results by issue type and prioritize fixes by estimated traffic impact.Inspect my top 20 pages by clicks (last 28 days) for indexing status.
Return a table: URL, index status, canonical, last crawl, recommended action.Sitemaps
List all sitemaps for [site], flag any with errors or warnings,
and recommend which sitemap entries to investigate first.GA4 analytics
List my GA4 properties, then for property [ID] run a report:
sessions and conversions by landing page for the last 28 days, organic traffic only.Show realtime active users on [property] broken down by country.GSC + GA4 cross-reference
Pull my top 15 organic landing pages by GSC clicks (last 28 days).
For each, get GA4 engaged sessions and conversion rate.
Flag high-click / low-conversion pages and suggest hypotheses.Agency weekly review
For client site [site_url]:
1. Top 50 queries this week vs last week
2. Flag positions that dropped more than 3 places
3. List affected URLs
4. Draft a 3-bullet client email summaryUse cases by role
SEO agency
- Weekly rank reviews across many client properties without CSV exports
- Technical audits β batch URL inspection + GA4 traffic triage
- Client reports β structured markdown or JSON your AI formats for decks
Guide: AI-powered SEO workflows for agencies
Freelance SEO
- Cannibalization detection, content gap analysis, indexing triage on a laptop between calls
Developer
- Diagnose indexing, canonical, and structured-data issues inside Cursor while editing the fix
Guide: Developers + Search Console in Cursor
Content marketer
- Query-to-page mapping, CTR optimization from real Search Console demand data
Startup
- Organic growth snapshots and content prioritization without a full SEO tool subscription
Security, privacy, and permissions
OAuth scopes (read-only by default)
| Scope | Access |
|---|---|
webmasters.readonly | Search Console data (analytics, inspection, sitemaps) |
analytics.readonly | GA4 reports and property metadata |
Write operations (submit sitemap, add/delete site) require explicit server configuration (GSC_ALLOW_DESTRUCTIVE=true) on self-hosted deployments.
GenieSeo hosted
- OAuth tokens encrypted at rest
- Per-user MCP URL β tokens not shared between accounts
- Revoke access anytime via Google Account permissions or the GenieSeo dashboard
- No selling of Google data; connector-only architecture
Self-hosted
- Tokens stored locally (
token.jsonin platform user config directory) - You control network exposure (default: stdio, no open ports)
- Docker/HTTP deployments: secure credentials volume and TLS termination at your edge
Pricing
| Plan | Price | Includes |
|---|---|---|
| GenieSeo Beta | Free (no credit card) | 28 tools, GSC + GA4, hosted MCP URL, all verified properties on connected Google account β free during beta |
| GenieSeo Pro (roadmap) | TBD | Team workspaces, higher limits, priority support |
| Self-hosted | Free (MIT) | Full codebase, unlimited properties, your infrastructure costs only |
Details: seo.geniedial.in/pricing
Claude and Cursor are billed separately by Anthropic and Cursor. GenieSeo is only the data connector β free during beta.
Comparisons
GenieSeo vs self-hosted GSC-only MCP servers
| GenieSeo (hosted, free beta) | Typical self-hosted GSC MCP | |
|---|---|---|
| GA4 | Yes (7 tools) | Usually no |
| Claude web | Yes | No (stdio default) |
| Setup | ~60s | ~30 min |
| Package | Hosted URL | uvx mcp-search-console or local clone |
Full comparison: GenieSeo vs other GSC MCP servers
GenieSeo vs Advanced GSC Visualizer (Chrome extension)
| GenieSeo MCP | Advanced GSC Visualizer | |
|---|---|---|
| Where it runs | Claude, Cursor, Codex | Inside GSC browser tab |
| AI workflows | Yes | No |
| GA4 | Yes | No |
Full comparison: GenieSeo vs Advanced GSC
Best Google Search Console MCP servers (2026 roundup)
See the curated comparison: Best GSC MCP servers 2026
Architecture
Single-file MCP server (self-hosted core)
The server is built with FastMCP β no custom framework. Core modules:
| File | Role |
|---|---|
gsc_server.py | GSC tools, OAuth/service-account auth, MCP transport |
ga4_tools.py | GA4 tools registered on the same FastMCP instance |
Auth order:
- OAuth
token.json(hosted or local) - Service account JSON (
GSC_CREDENTIALS_PATH) whenGSC_SKIP_OAUTH=trueor OAuth unavailable
Response format: All data tools return json.dumps(structured_data) β optimized for LLM reasoning, not prose.
GenieSeo hosted stack (high level)
GenieSeo is a managed cloud connector. You keep using Claude, Cursor, or Codex as usual β GenieSeo handles Google OAuth, secure token storage, and the MCP endpoint that talks to Google Search Console and GA4 on your behalf.
flowchart LR
A[You in Claude / Cursor / Codex] --> B[Your personal GenieSeo MCP URL]
B --> C[GenieSeo managed service]
C --> D[Google Search Console API]
C --> E[Google Analytics 4 API]
D --> C
E --> C
C --> B
B --> AWhat you control: which Google account to connect, when to revoke access, and every question you ask in your AI client.
What GenieSeo handles: OAuth, encrypted credential storage, uptime, and keeping the MCP tools in sync with Google APIs β so you never manage client_secrets.json or local tokens.
Resources and links
Product
| Resource | URL |
|---|---|
| GenieSeo β Get started (free beta) | https://seo.geniedial.in/signup |
| GenieSeo homepage | https://seo.geniedial.in |
| Pricing | https://seo.geniedial.in/pricing |
| Recipe library (copy-paste prompts) | https://seo.geniedial.in/recipes |
| Setup video | Watch setup video |
Self-hosted (open source)
| Resource | URL |
|---|---|
| PyPI package (recommended) | uvx mcp-search-console |
| License | MIT |
| Clone for development | See clone and run locally |
Setup guides
Blog and SEO content
| Topic | URL |
|---|---|
| GSC MCP overview | https://seo.geniedial.in/blog/google-search-console-mcp-server |
| Connect GSC to Claude | https://seo.geniedial.in/blog/connect-google-search-console-to-claude-ai |
| GA4 MCP server | https://seo.geniedial.in/blog/ga4-mcp-server-claude-cursor |
| Best GSC MCP servers 2026 | https://seo.geniedial.in/blog/best-google-search-console-mcp-servers-2026 |
Support
- Email: support@geniedial.in
- Founder: Nirav Modi on LinkedIn
Changelog (server)
| Version | Highlights |
|---|---|
| Next | Streamable HTTP transport; sse removed |
| 0.3.2 | OAuth fix for uvx; get_capabilities tool; better auth errors |
| 0.3.0 | Cursor Marketplace plugin; 4 SEO skills; structured JSON output |
| 0.2.x | Safety mode for destructive ops; Docker; HTTP transport |
| 0.1.0 | Initial 19 GSC tools; OAuth + service account |
Built by Peakenza Software Services. GenieSeo is free during beta. Self-hosted stack is MIT-licensed. Questions: support@geniedial.in
Video walkthrough β 60-second setup
Prefer to watch instead of read? Click the poster below to watch the GenieSeo setup video β sign up, connect Google OAuth, copy your MCP URL, paste into Claude. Free during beta, no credit card.
<div align="center"> <a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link"> <img src="assets/genieseo-readme-poster.jpg" alt="Play setup video - GenieSeo connects Google Search Console MCP to Claude, Cursor, or Codex" width="800" style="max-width: 100%; border-radius: 12px;"> </a> <p><strong><a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link">βΆ Watch setup video</a></strong> Β· <a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link">Open full screen</a></p> </div>Covers: Google sign-in β MCP URL generation β Claude Settings β Connectors β your first Search Console query.
Self-hosted users: The setup video shows the hosted flow end-to-end. For
uvxor clone installs, jump to self-hosted setup β credential setup takes 15β45 minutes.
60-second setup β GenieSeo (hosted)
GenieSeo is the hosted Google Search Console MCP server with GA4 β one personal MCP URL, Streamable HTTP transport, no client_secrets.json. Free during beta (no credit card).
Watch first (recommended)
Click the image to follow along β under two minutes from sign-up to your first Claude query.
<div align="center"> <a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link"> <img src="assets/genieseo-readme-poster.jpg" alt="Watch: paste your GenieSeo MCP URL into Claude - step-by-step setup video" width="720" style="max-width: 100%; border-radius: 10px;"> </a> <p><strong><a href="https://www.canva.com/design/DAHKHC_Qoc8/KHo05lC_MV9ODlrpQZfX8Q/watch?utm_content=DAHKHC_Qoc8&utm_campaign=designshare&utm_medium=embeds&utm_source=link">βΆ Play setup video</a></strong></p> </div>Steps
- Sign up at seo.geniedial.in/signup β free beta, no credit card
- Connect Google β single OAuth screen for Search Console + Analytics read access
- Copy your MCP URL from the GenieSeo dashboard (format:
https://seo.geniedial.in/mcp/u/YOUR_TOKEN) - Paste into your AI client (see client guides below)
- Ask your first question: "List my Search Console properties" or "Call get_capabilities"
MCP config snippet (any Streamable HTTP client)
{
"mcpServers": {
"genieseo": {
"url": "https://seo.geniedial.in/mcp/u/YOUR_TOKEN"
}
}
}Replace YOUR_TOKEN with the token from your GenieSeo dashboard.
Transport: Streamable HTTP (MCP spec 2025-03-26) β single /mcp endpoint for POST (JSON-RPC), GET (streaming), DELETE (session end).
Self-hosted setup β open source
The open-source Google Search Console MCP server runs locally via uvx or from a cloned repo. GA4 tools load automatically unless GSC_DISABLE_GA4=true.
Prerequisites
- Python 3.11+
- uv (recommended) or virtualenv
- Google Cloud project with Search Console API enabled
- For GA4: Google Analytics Data API and Google Analytics Admin API enabled on the same project
Option A β OAuth (recommended for individuals)
- Google Cloud Console β Create/select project
- Enable Search Console API
- Enable Analytics Data API and Analytics Admin API (for GA4 tools)
- Credentials β Create β OAuth client ID β Desktop app
- Download JSON β save as e.g.
~/Documents/client_secrets.json - On first run, browser opens for Google login; token saved to platform config dir
Option B β Service account (automation / teams)
- Create service account + download JSON key
- Add service account email to each GSC property (Settings β Users β Full access)
- For GA4: grant Viewer (or higher) in GA4 Admin for each property
- Set
GSC_CREDENTIALS_PATHandGSC_SKIP_OAUTH=true
Install with uvx (fastest self-hosted)
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
# Verify
uv --version
which uvxClaude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"gscServer": {
"command": "/FULL/PATH/TO/uvx",
"args": ["mcp-search-console"],
"env": {
"GSC_OAUTH_CLIENT_SECRETS_FILE": "/full/path/to/client_secrets.json"
}
}
}
}Use the full path from which uvx β GUI apps do not read your shell PATH.
Service account variant:
{
"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"
}
}
}
}Clone and run locally
Prefer uvx mcp-search-console when you only need to run the server β no clone required (see Option A above).
To modify source code locally:
git clone https://github.com/AminForou/mcp-gsc.git
cd mcp-gsc
uv venv .venv
uv pip install -r requirements.txt
uv run python gsc_server.pyEnvironment variables
| Variable | Default | Description |
|---|---|---|
GSC_OAUTH_CLIENT_SECRETS_FILE | β | Path to OAuth client secrets JSON |
GSC_CREDENTIALS_PATH | β | Path to service account JSON |
GSC_SKIP_OAUTH | false | Force service account mode |
GSC_DATA_STATE | all | all = GSC dashboard parity; final = confirmed data only (2β3 day lag) |
GSC_ALLOW_DESTRUCTIVE | false | Enable add_site, delete_site, sitemap delete |
GSC_DISABLE_GA4 | false | Skip GA4 tool registration |
MCP_TRANSPORT | stdio | Set streamable-http for remote/Docker |
MCP_HOST | 127.0.0.1 | Bind host for HTTP transport |
MCP_PORT | 3001 | Bind port for HTTP transport |
Docker (remote / container)
docker build -t mcp-gsc .
docker run \
-e MCP_TRANSPORT=streamable-http \
-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-gscEndpoint: http://<host>:3001/mcp
Note: Deprecated
ssetransport is removed. Usestreamable-httponly.
Cursor Marketplace skills (self-hosted in Cursor)
Search mcp-search-console in the Cursor Marketplace for bundled skills:
| Skill | Invoke with | Purpose |
|---|---|---|
seo-weekly-report | "Run the SEO weekly report for example.com" | 28-day performance + period comparison |
cannibalization-check | "Check keyword cannibalization on example.com" | Competing pages per query |
indexing-audit | "Audit indexing for my top pages" | Batch inspect top URLs |
content-opportunities | "Find content opportunities for example.com" | Position 11β20 + high impressions |
Verify installation
Ask your AI: "List my GSC properties" or "Call get_capabilities".
FAQ
What is a Google Search Console MCP server?
A server that implements the Model Context Protocol to expose Google Search Console (and optionally GA4) as callable tools inside AI assistants like Claude and Cursor.
What is the best Google Search Console MCP server in 2026?
For fastest setup and GA4: GenieSeo (hosted, free beta, 28 tools, Claude web compatible). For full local control: self-host with uvx mcp-search-console (see self-hosted setup).
How do I connect Google Search Console to Claude?
Sign up at GenieSeo, connect Google OAuth, copy your MCP URL, paste into Claude Settings β Connectors β Add custom MCP. Under 60 seconds. Step-by-step guide Β· Setup video.
Does this work with Claude on the web (claude.ai)?
Yes with GenieSeo (HTTPS Streamable HTTP URL). Self-hosted stdio servers only work in Claude Desktop, not the browser.
Does this work with Cursor?
Yes. Add your MCP URL in Cursor Settings β MCP. Composer agent mode can call all GSC and GA4 tools. Cursor guide.
How many tools are included?
28 total: 21 Google Search Console + 7 Google Analytics 4 on one MCP URL.
Is Google Analytics included?
Yes in this stack (GenieSeo hosted and the mcp-search-console / uvx package). Most other GSC-only MCP servers do not include GA4.
Is my Google data safe?
OAuth tokens are read-only scopes. Hosted tokens are encrypted at rest. Revoke anytime via Google Account or your dashboard. Self-hosted tokens stay on your machine.
Is there a free option?
Yes β GenieSeo is free during beta (no credit card); self-hosted is MIT-licensed and free forever.
Do I need Python?
Not for GenieSeo hosted. Yes for self-hosted (uvx or clone).
What is MCP?
Model Context Protocol β an open standard for AI clients to connect to external tools and data sources.
Can I use multiple Google accounts?
GenieSeo: one Google account per user today; multi-account workspaces on roadmap. Self-hosted: reauthenticate or use separate configs.
What is get_capabilities?
A meta-tool that returns all available tools, grouped by category, plus live authentication status. Call it first when debugging or onboarding.
Why am I getting spawn uvx ENOENT?
Your AI client cannot find uvx in PATH. Use the full path from which uvx in your MCP config.
Can I disable destructive GSC operations?
Yes β they are off by default. Set GSC_ALLOW_DESTRUCTIVE=true only if you need add/delete site or delete sitemap.
What transport should I use for remote deployment?
MCP_TRANSPORT=streamable-http. The deprecated sse transport is no longer supported.
Where is the open-source code?
Install with uvx mcp-search-console (PyPI). To hack on source, clone a local copy β see clone and run locally. The MIT-licensed server powers both self-hosted and GenieSeo hosted deployments.
How is this different from exporting GSC CSV?
MCP returns structured JSON directly to your AI β no manual export, no row limits in chat, and the model can chain multiple tool calls (inspect β analyze β recommend) in one conversation.
Can agencies use this for clients?
Yes. Connect a Google account with access to client properties; each team member can have their own MCP URL. Switch properties mid-conversation by naming the site_url.