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.
$ npx -y skills add AminForou/mcp-gsc --agent claude-code
Repo: AminForou/mcp-gsc
What's inside
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)
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)orderBy in get_search_by_page_query (the Search Analytics API ignores it). Thanks @kuldiph. (#55)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)except: clauses so fatal signals aren't swallowed. Thanks @kuldiph. (#53)batch_url_inspection renames the per-URL verdict field to index_verdict to distinguish it from the rich-result verdict.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.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.Property Management
Search Analytics & Reporting
URL Inspection & Indexing
Sitemap Management
| 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.
You need credentials before configuring any client. Pick one method:
~/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.
~/Documents/service_account.json)Updated 2026 — covers the full installation process using the new uvx method, from setting up your Google credentials to your first successful query.
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
uvin~/.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 uvxin Terminal after installing uv (typically/Users/YOUR_NAME/.local/bin/uvx). On Windows, runGet-Command uvx | Select-Object -ExpandProperty Sourcein PowerShell (orwhere uvxin cmd) — it's usuallyC:\Users\YOUR_NAME\.local\bin\uvx.exe. Replace/FULL/PATH/TO/uvxin 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 aspawn uvx ENOENTerror, 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.
Prefer a video walkthrough for this method? The tutorial below covers the clone install path step by step — virtual environment setup, dependencies, and config:
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.
FAQ
mcp-search-console is a Claude Code plugin with 4 hand-picked skills for marketing work, indexed on Flowy. Install it with the command on its page. It includes cannibalization-check, content-opportunities, indexing-audit. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it