Search Console MCP

io.github.saurabhsharma2uPublished by GitHub account saurabhsharma2uv2.1.4Updated Oct 29, 2026

Google Search Console + Bing + GA4 + AdSense — unified SEO intelligence for AI agents.

Overview

AI-generated overview

Unifies Google Search Console, Bing Webmaster Tools, GA4 and AdSense so an assistant can query SEO traffic, indexing and ad revenue in one place.

What you can do
  • List and manage verified properties and accounts across Google Search Console, Bing and GA4
  • List, submit and delete XML sitemaps
  • Query search performance by query, page, country, device and search appearance, with period comparisons, trend and drop attribution, anomaly detection and GA4 e-commerce and funnel metrics
  • Inspect indexing, canonical and crawl status for single or batch URLs, submit URLs for indexing, and check submission quota
  • Run SEO audits, keyword research, structured-data validation, PageSpeed and Core Web Vitals checks, site health checks and Google-vs-Bing comparisons
  • Report AdSense earnings, payments and account alerts, and flag likely generative-AI style queries using…
When to use it
Useful when you want an assistant to answer SEO and site-monetization questions from live search and analytics data instead of exported CSVs, for example diagnosing a traffic drop, finding quick-win keywords, checking indexing problems or correlating ad revenue with traffic.
Requirements
Runs locally over stdio, typically via npx with Node.js. Google access needs OAuth through the setup command or a service account key referenced by GOOGLE_APPLICATION_CREDENTIALS; Bing needs BING_API_KEY; PageSpeed quota can be raised with PAGESPEED_API_KEY. AdSense requires a separate read-only OAuth grant. Network access to Google and Bing APIs.
Before you install
Stores OAuth refresh tokens on the machine (OS keychain or encrypted file) and reads a Google service account key via GOOGLE_APPLICATION_CREDENTIALS. Write tools such as sitemaps_submit, sitemaps_delete, sites_manage and indexing_submit change live search-engine data; write scope is opt-in but should be granted deliberately. AdSense data is financial. The genai_query_insights tool is heuristic, not official citation data.

Installation

In SourceWeft

  1. Open Search Console MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

🔍 Search Console MCP

Google Search Console + Bing Webmaster Tools + GA4 + AdSense — in one context window.

Stop exporting CSVs. Start asking your AI agent questions about your site's traffic, rankings, and revenue.

[License: MIT] [Tests] [Stars]


[Download MCPB Bundle]

📚 Docs · Quick Start · Tools · Backward Compatibility · Security


⚡ What's New in v2.1.4

  • 🎯 Correct-property resolution (#110): Accounts with multiple verified properties sharing one hostname (locale subfolders like /en-gb/ + /de-de/, the root property, and the sc-domain: property) could get analytics data silently returned for the wrong property — whichever colliding property the resolver happened to touch first. Resolution is now exact by property type and path; bare-domain queries rank deterministically (sc-domain: › root), and truly ambiguous requests fail with the list of matching properties instead of guessing. With thanks to Alcip for the outstanding root-cause analysis in #110.
  • 🔐 Explicit write authorization for GSC mutation tools (#113): sitemaps_submit, sitemaps_delete and site-management calls now require an explicit webmasters write scope, offered as an inline re-authorization flow in the CLI when a tool first needs it. The server stays read-only by default at setup; you opt into write capabilities explicitly. Credit to chase-weiser88 for surfacing the missing write scope in #84.
  • 🛡️ SSE transport secured & deprecated (#114): SSE mode now binds to 127.0.0.1 by default (--host=/MCP_HTTP_HOST to override), requires a bearer token (--token=/MCP_HTTP_TOKEN, auto-generated if unset), never sends wildcard CORS, and rejects forged non-loopback Host headers (DNS-rebinding guard). SSE mode is deprecated and will be removed in the next release — prefer the default stdio transport.
  • 🪲 find_quick_wins prompt typing (#112): min_impressions was declared as a number, but MCP clients must send prompt arguments as strings — so every use errored with expected number, received string. It is now string-typed and coerced internally (1000 default preserved).
What's New in v2.1.2
  • 🤖 GenAI Query Insights (genai_query_insights): Surfaces likely generative-AI / AI-Mode / conversational "fanout" queries across Google and Bing. This is custom heuristic logic — no official API is provided by Google or Bing for GenAI citation data, so it flags prompt verbs, follow-ups, acknowledgements, and conversational phrasing on the regular query data both engines already return. See docs →
  • 🪲 analytics_query fix: rowLimit is now honored instead of being silently ignored (previously always returned up to 1000 rows); limit remains as a backward-compatible alias.
What's New in v2.1.0
  • 💰 Google AdSense Integration: Earnings reports, payments and account alerts via setup --engine=adsense. Enabling AdSense requires you to approve a separate adsense.readonly OAuth scope; your existing GSC, Bing, and GA4 configuration remains unchanged until you opt in.
  • 🔐 OAuth-only AdSense auth: The AdSense Management API supports user OAuth only — setup now validates access live and rejects unsupported service-account configs with actionable guidance. Multi-account users get explicit publisher-account selection with full pagination (>100 accounts).
  • 📊 adsense_report upgrades: Custom startDate/endDate now override preset dateRanges, plus a new orderBy parameter (-ESTIMATED_EARNINGS) for sorted revenue reports.
  • 🧪 End-to-end MCP test suite: The built server binary is now tested over stdio and SSE exactly like an MCP host would drive it — handshake, tool schemas, error envelopes, and multi-account resource behavior (11 e2e tests wired into CI).
What's New in v2.0.x
  • 💰 Google AdSense Integration: Earnings reports, payments and account alerts via setup --engine=adsense. Enabling AdSense requires you to approve a separate adsense.readonly OAuth scope; your existing GSC, Bing, and GA4 configuration remains unchanged until you opt in.
  • 🔐 OAuth-only AdSense auth: The AdSense Management API supports user OAuth only — setup now validates access live and rejects unsupported service-account configs with actionable guidance. Multi-account users get explicit publisher-account selection with full pagination (>100 accounts).
  • 📊 adsense_report upgrades: Custom startDate/endDate now override preset dateRanges, plus a new orderBy parameter (-ESTIMATED_EARNINGS) for sorted revenue reports.
  • 🧪 End-to-end MCP test suite: The built server binary is now tested over stdio and SSE exactly like an MCP host would drive it — handshake, tool schemas, error envelopes, and multi-account resource behavior (11 e2e tests wired into CI).
What's New in v2.0.x
  • 📦 MCPB One-Click Bundle Support (.mcpb): Drag and drop bundle installation for Claude Desktop.
  • ⚡ Parallel Fetch Engine (engine: "all"): Multi-engine queries fetch Google, Bing, and GA4 concurrently with 50%+ lower latency.
  • 🔄 100% Backward Compatibility: All ~96 legacy tool names continue to work seamlessly via our fallback router. Read Backward Compatibility Guide →

Why this exists

Site data lives in four different silos. Answering one question — "did my ad revenue drop because of a traffic dip or a lower RPM?" — usually means logging into four dashboards, exporting four CSVs, and doing VLOOKUPs by hand.

Search Console MCP puts GSC, Bing, GA4, and AdSense behind one set of tools your AI agent can call directly, and does the analysis (cannibalization, anomaly detection, revenue attribution) before the data ever reaches your context window.

BeforeAfter
Data4 dashboards, manual exports1 unified context
AnalysisManual VLOOKUPs & pivot tablesDeterministic SEO + revenue math, server-side
AccountsConstant re-login20+ accounts, auto-resolved per site
InsightRaw rows, agent guessesCurated signals (opportunity scores, anomalies)

⚡ Quick Start

bash
npx search-console-mcp setup

This opens your browser, authorizes your Google account, and stores your credentials securely (see Security). Then add it to your MCP client config (Claude Desktop, Cursor, Antigravity, etc.):

json
{  "mcpServers": {    "search-console": {      "command": "npx",      "args": ["search-console-mcp"]    }  }}

Restart your client — and try one of the prompts below.


💬 Try it

Paste these straight into your agent:

"My traffic dropped this week vs. last. Find exactly when it started and which pages are responsible."

"Find keywords for example.com ranking positions 8–15 with 1,000+ impressions — my best quick wins."

"Check for keyword cannibalization — are two of my pages competing for the same query?"

"Run seo_audit on my top pages: which have high search visibility but poor CTR?"

More example prompts
  • "Run a full SEO health check (site_health_check), segmented by Brand vs Non-Brand."
  • "Fetch my top 5 pages by impressions and run pagespeed_analyze — any correlation with declining rankings?"
  • "Compare Google vs Bing performance for the last 30 days (compare_engines) — where is Bing winning?"
  • "Submit my latest URLs to Google and IndexNow using indexing_submit with method: "index_now"."

🔌 Connect your accounts

PlatformMethodSetup
Google Search ConsoleOAuth (recommended)npx search-console-mcp setup
Google Search ConsoleService AccountSet GOOGLE_APPLICATION_CREDENTIALS — details
Bing Webmaster ToolsAPI Keyexport BING_API_KEY="..." — get a key
Google Analytics 4Service Accountnpx search-console-mcp setup --engine=ga4
Google AdSenseOAuth (read-only)npx search-console-mcp setup --engine=adsense — headless servers

Manage everything from the CLI:

bash
npx search-console-mcp accounts listnpx search-console-mcp accounts add-site [email protected] --site=example.comnpx search-console-mcp accounts remove [email protected]

When your agent queries a site, the server auto-resolves which account owns it — no manual switching. Multi-account docs →

Headless servers (Docker, CI, VPS)

AdSense cannot use service accounts, and config files are machine-encrypted — so authorize once on any machine with a browser and transfer the grant:

bash
# 1. On your laptop (after setup --engine=adsense):npx search-console-mcp adsense-export
# 2. On the server (prints a ready-to-run command on step 1):npx search-console-mcp adsense-import --token='...' --publisher-id='accounts/pub-...'

The token is stored encrypted on the server and auto-refreshes — no browser needed again. Setup over SSH also works directly: when no browser is detected, setup prints the authorization URL plus ssh -L 3000:localhost:3000 port-forward instructions instead of failing.


🖥️ Run tools from the CLI

Search Console MCP also exposes registered MCP tools as direct CLI commands. Use the run subcommand to list tools, inspect tool-specific arguments, and print results as JSON, CSV, or an ASCII table:

bash
# List registered toolsnpx search-console-mcp run --help
# Show options for one toolnpx search-console-mcp run analytics_query --help
# Run an SEO audit with JSON outputnpx search-console-mcp run seo_audit --siteUrl=https://example.com --type=quick_wins
# Print array results as CSV or a tablenpx search-console-mcp run analytics_query --siteUrl=https://example.com --startDate=2026-06-01 --endDate=2026-06-30 --dimensions=date,query --format=csvnpx search-console-mcp run sites_list --engine=all --format=table
Service Account setup (for servers/automation)
  1. Create a service account in the Google Cloud Console
  2. Generate a JSON key
  3. Add the service account email as a user in Search Console with "Full" or "Restricted" access
  4. export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"

🛠 Tools (Fluent Domain Architecture)

Search Console MCP v2.0 features 7 Fluent Domain Tools that handle all SEO, Analytics, Inspection, and Indexing operations cleanly:

Fluent ToolParameters / ActionsDescription
sites_listengine: "all" | "google" | "bing"Lists verified sites across search engines in parallel
sites_manageaction: "add" | "delete", siteUrl, engineAdds or removes site properties
accounts_manageaction: "list" | "add_site" | "remove"Configures multi-account profiles
sitemaps_listsiteUrl, feedUrl, engineFetches sitemap status and indexing state
sitemaps_submitsiteUrl, feedUrl, engineSubmits sitemaps to GSC & Bing
sitemaps_deletesiteUrl, feedUrl, engineRemoves sitemaps
analytics_querysiteUrl, engine, dimensions, metricsMulti-engine search & GA4 analytics query
analytics_comparemode: "period_over_period" | "trends" | "drop_attribution"Analyzes period deltas, trend shifts, and drop causes
analytics_anomaliessiteUrl, thresholdStatistical detection of traffic spikes/drops
inspection_inspectsiteUrl, urls, engineGoogle URL inspection & Bing URL info
pagespeed_analyzeurl, strategy, cwvOnlyCore Web Vitals and PageSpeed Insights audits
indexing_submiturls, method: "standard" | "index_now" | "remove"Instantly indexes URLs via IndexNow or Google/Bing API
indexing_statussiteUrl, type: "quota" | "status"Checks remaining indexing quota & URL status
seo_audittype: "quick_wins" | "striking_distance" | "cannibalization" | "low_hanging_fruit" | "lost_queries" | "recommendations" | "brand_vs_nonbrand"Comprehensive automated SEO audits
seo_keywords_researchkeywords, type: "stats" | "related" | "traffic"Keyword volumes and related keyword stats
site_health_checksiteUrl, level: "summary" | "full" | "crawl_issues"One-shot site performance & technical audit
compare_enginessiteUrlSide-by-side Google vs Bing performance breakdown
genai_query_insightssiteUrl, days, engine: "google" | "bing" | "all", includePages, minImpressionsFlags likely generative-AI / conversational queries (custom heuristic, no official API)

Google AdSense Tools

ToolParametersDescription
adsense_accountsmode: "configured" | "discover", accountIdLists configured or discoverable AdSense publisher accounts
adsense_reportdateRange, startDate, endDate, dimensions, metrics, orderBy, rowLimit, accountIdEarnings, impressions, clicks, CTR & RPM with dimension breakdowns. Custom dates override dateRange.
adsense_payments_alertsaccountIdOutstanding payments and account alerts (policy issues, payment holds)

Note: accountId refers to the configured profile ID (e.g. adsense_2, as shown by accounts_manage), not a publisher resource name like accounts/pub-123.

Backward Compatibility Notice (96+ Legacy Tools)

All legacy tool names (bing_sites_list, seo_quick_wins, sitemaps_get, bing_index_now, indexing_submit_url, opportunity_matrix, etc.) continue to work transparently via our fallback router.

Read our complete Backward Compatibility & Migration Guide →


🔒 Security

  • OS keychain first — tokens stored in macOS Keychain, Windows Credential Manager, or Linux Secret Service
  • AES-256-GCM fallback — encrypted with a key derived from your machine's hardware ID; a stolen file is useless on another device
  • Minimal storage — only refresh_token and expiry_date are persisted, at mode 600
  • Silent refresh — tokens renew automatically in the background

License

MIT · Contributing guide · Backward Compatibility Guide

If this saves you a spreadsheet, consider ⭐ starring the repo.

Source: README.md at commit 7de2215

Tools

25

get_started

Start here. Returns a complete map of this server's capabilities, active platforms, and recommended workflows. Call this once at the beginning of any session.

Takes no parameters.

sites_list

List verified web properties across Google Search Console, Bing Webmaster Tools, or GA4.

Parametersengine

sites_manage

Add or delete a web property from Google Search Console or Bing Webmaster Tools.

ParametersactionrequiredenginesiteUrlrequired

accounts_manage

Manage Google Search Console service accounts and site permissions.

ParametersemailactionrequiredsiteUrlaccountId

sitemaps_list

List submitted XML sitemaps and status for a site.

ParametersenginefeedUrlsiteUrlrequired

sitemaps_submit

Submit a new XML sitemap to Google Search Console and/or Bing Webmaster Tools.

ParametersenginefeedUrlrequiredsiteUrlrequired

sitemaps_delete

Delete a sitemap from Google Search Console or Bing Webmaster Tools.

ParametersenginefeedUrlrequiredsiteUrlrequired

analytics_query

Unified search performance query replacing single-dimension tools. Supports queries, pages, countries, devices, and search appearances.

ParametersengineendDatefilterssiteUrlrequiredrowLimitstartDatedimensions

analytics_compare

Period-over-period search performance comparisons, trends, and traffic drop attributions.

ParametersmodeengineendDatesiteUrlrequiredstartDatecompareEndDatecompareStartDate

analytics_anomalies

Detect search traffic anomalies across Google and Bing.

ParametersengineendDatesiteUrlrequiredstartDatethreshold

analytics_advanced

Google Analytics 4 (GA4) e-commerce, realtime metrics, user behavior, and conversion funnels.

ParametersendDatestartDatemetricTyperequiredpropertyIdrequired

genai_query_insights

Detect likely generative-AI / AI-Mode / conversational fanout queries across Google and Bing. Because neither search engine exposes generative-AI citation data via its public API yet, this matches heuristic patterns (prompt verbs, follow-ups, conversational phrasing) on regular query-level performance data; it is an undercount, not an official report.

ParametersdaysenginesiteUrlrequiredincludePagesminImpressions

adsense_accounts

List configured AdSense publisher accounts, or discover all publisher accounts the authorized user has access to.

ParametersmodeaccountId

adsense_report

Google AdSense earnings & performance report: estimated earnings, impressions, clicks, CTR and RPM with dimension breakdowns.

ParametersendDatemetricsorderByrowLimitaccountIddateRangestartDatedimensions

adsense_payments_alerts

Outstanding AdSense payments and account alerts (policy issues, payment holds).

ParametersaccountId

inspection_inspect

Inspect indexing, canonical, and crawl status for single or batch URLs on Google or Bing.

ParametersurlsrequiredenginesiteUrlrequired

pagespeed_analyze

Run PageSpeed Insights & Core Web Vitals performance analysis for a page.

ParametersurlrequiredcwvOnlycategorystrategy

indexing_submit

Submit URL(s) for indexing via Google Indexing API, Bing URL submission, or IndexNow protocol.

ParameterskeyhosturlsrequiredenginemethodsiteUrlkeyLocation

indexing_status

Check notification status for Google Indexing API or remaining daily Bing submission quota.

ParametersurltypeenginesiteUrlrequired

seo_audit

Specialized SEO intelligence analysis (recommendations, quick wins, cannibalization, striking distance, lost queries, low CTR, brand vs nonbrand).

ParameterstyperequiredenginesiteUrlrequiredbrandKeywordsminImpressions

seo_keywords_research

Keyword performance stats, related query expansion, and search volume estimates.

ParameterstypeenginecountrysiteUrlkeywordsrequiredlanguage

schema_validate

Validate structured data (JSON-LD, Microdata, RDFa) for a given webpage URL.

Parametersurlrequired

site_health_check

Comprehensive health audit across Google Search Console and Bing Webmaster Tools.

ParameterslevelenginesiteUrl

compare_engines

Cross-engine performance matrix comparing Google Search Console vs Bing Webmaster Tools.

ParameterslimitendDatesiteUrlrequireddimensionstartDate

diagnostics

Run connectivity diagnostics for all connected accounts. Use this to troubleshoot '0 results' or authentication issues.

Takes no parameters.

Version history

2
  1. v2.1.4LatestOct 21, 2026
  2. v2.1.3Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts