Labsco
samalyxx logo

Google Search Console MCP

β˜… 6

from samalyxx

Google Search Console MCP server for SEO audits, keyword insights, URL inspection, sitemap management, and AI workflows in Cursor, Claude, and Gemini CLI.

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

GSC SEO MCP

Connect Google Search Console to Cursor, Claude, or Gemini. Ask questions in plain English and get real SEO data back.

Part 2 β€” Add to your AI app

Node.js 20+ is required. Download here if you don't have it.

Cursor

Create .cursor/mcp.json in your project folder (or use global MCP settings):

Copy & paste β€” that's it
{
 "mcpServers": {
 "gsc-seo": {
 "command": "npx",
 "args": ["-y", "gsc-seo-mcp"],
 "env": {
 "GSC_AUTH_MODE": "service_account",
 "GSC_KEY_FILE": "/absolute/path/to/service-account.json",
 "GSC_SITE_URL": "sc-domain:example.com",
 "GSC_BRAND_TERMS": "mybrand,mybrand.com"
 }
 }
 }
}

Claude Desktop

Edit claude_desktop_config.json:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Copy & paste β€” that's it
{
 "mcpServers": {
 "gsc-seo": {
 "command": "npx",
 "args": ["-y", "gsc-seo-mcp"],
 "env": {
 "GSC_AUTH_MODE": "service_account",
 "GSC_KEY_FILE": "/absolute/path/to/service-account.json",
 "GSC_SITE_URL": "sc-domain:example.com"
 }
 }
 }
}

Restart Claude Desktop after saving.

Claude Code

Create .mcp.json in your project:

Copy & paste β€” that's it
{
 "mcpServers": {
 "gsc-seo": {
 "command": "npx",
 "args": ["-y", "gsc-seo-mcp"],
 "env": {
 "GSC_AUTH_MODE": "service_account",
 "GSC_KEY_FILE": "/absolute/path/to/service-account.json",
 "GSC_SITE_URL": "sc-domain:example.com"
 }
 }
 }
}

Or via CLI:

Copy & paste β€” that's it
claude mcp add --transport stdio \
 --env GSC_AUTH_MODE=service_account \
 --env GSC_KEY_FILE=/absolute/path/to/service-account.json \
 --env GSC_SITE_URL=sc-domain:example.com \
 gsc-seo -- npx -y gsc-seo-mcp

Gemini CLI

Edit ~/.gemini/settings.json (or .gemini/settings.json in your project):

Copy & paste β€” that's it
{
 "mcpServers": {
 "gsc-seo": {
 "command": "npx",
 "args": ["-y", "gsc-seo-mcp"],
 "env": {
 "GSC_AUTH_MODE": "service_account",
 "GSC_KEY_FILE": "/absolute/path/to/service-account.json",
 "GSC_SITE_URL": "sc-domain:example.com"
 },
 "timeout": 120000,
 "trust": false
 }
 }
}

Property URL format

Use the exact format from Search Console:

Copy & paste β€” that's it
sc-domain:example.com ← domain property (recommended)
https://www.example.com/ ← URL-prefix property (include the trailing slash)

All config variables

Variable Required What it does GSC_SITE_URL Recommended Default property. Example: sc-domain:example.com GSC_SITE_URLS Optional Comma-separated properties for multi-site dashboards GSC_AUTH_MODE Optional service_account or oauth. Auto-detected when possible GSC_KEY_FILE Service account Path to service account JSON key GOOGLE_APPLICATION_CREDENTIALS Service account Alternative path variable GSC_OAUTH_SECRETS_FILE OAuth Path to OAuth client secret JSON GSC_OAUTH_CLIENT_ID OAuth alternative Client ID if not using a secrets file GSC_OAUTH_CLIENT_SECRET OAuth alternative Client secret if not using a secrets file GSC_TOKEN_FILE Optional Where OAuth token is saved after login GSC_BRAND_TERMS Optional Comma-separated brand terms for brand_nonbrand_split GSC_REPORT_DIR Optional Folder for Markdown reports. Defaults to ./reports GSC_DATA_STATE Optional all, final, or hourly_all. Defaults to all

Tools

Core

Tool What it does server_health Shows config status, auth mode, and tool count list_properties Lists all Search Console properties you have access to get_site Gets permission details for one property add_site Adds a site to your account delete_site Removes a site from your account

Search Analytics

Tool What it does search_analytics Full query with dimensions, filters, search type, and data state advanced_filter_query Pulls up to 50,000 rows for deeper audits top_queries Top queries, optionally filtered by page top_pages Top pages, optionally filtered by query performance_overview Site snapshot with period comparison, daily trend, devices compare_periods Current vs previous period by page, query, country, or device dimension_breakdown Performance by one dimension page_query_matrix Maps pages to the queries driving them

SEO Analysis

Tool What it answers quick_wins Which keywords are close enough to improve fast? ctr_opportunities Which snippets underperform for their ranking position? content_decay Which pages are declining across multiple periods? traffic_drop_diagnosis Was the drop rankings, CTR, demand, coverage, or mixed? cannibalization_check Which queries are split across competing pages? brand_nonbrand_split How much traffic is brand vs non-brand? search_intent_breakdown How do queries split across informational, commercial, transactional, navigational, local? device_country_opportunities Which device/country/page segments have weak CTR or ranking? long_tail_questions Which question queries deserve content expansion? page_refresh_priorities Which pages should be updated first? internal_link_opportunities Which strong pages can support weaker pages? query_page_fit What does one page rank for, and does the content match? title_meta_brief Which queries should inform title/meta refreshes? anomaly_alerts Which pages had abnormal losses recently?

Indexing, Sitemaps, URLs

Tool What it does inspect_url Checks one URL for index status, canonical, crawl, coverage batch_inspect_urls Inspects multiple URLs index_coverage_summary Summarizes inspection results across a URL list list_sitemaps Lists submitted sitemaps with errors and indexed counts get_sitemap Details for one sitemap submit_sitemap Submits or refreshes a sitemap delete_sitemap Deletes a submitted sitemap indexing_publish_url Sends an Indexing API notification for an eligible URL indexing_batch_publish Sends multiple Indexing API notifications indexing_get_metadata Checks latest Indexing API notification status for a URL

Reporting

Tool What it does multi_site_dashboard Compares multiple properties in one view generate_markdown_report Saves a Markdown SEO report to disk verify_claim Re-queries GSC to check a number before you report it to a client

Data notes

  • Search Analytics rows are sorted by clicks. The API has internal row limits, so not every possible row is included.

  • GSC_DATA_STATE=all includes fresh data. Use final for finalized reporting numbers.

  • URL Inspection shows Google's index state, not a live crawl.

  • The Indexing API is for JobPosting and BroadcastEvent pages only β€” it's not a general indexing shortcut.

Security

  • Never commit service account keys, OAuth secrets, or token files to Git.

  • Use read-only Search Console permissions if you don't need write tools.

  • Review delete_site, delete_sitemap, submit_sitemap, and indexing_publish_url calls before approving them.

Official docs

License

MIT. If this saves you time, star the repo.