The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Search Console MCP listing page.
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.
📚 Docs · Quick Start · Tools · Backward Compatibility · Security
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.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.adsense_report upgrades: Custom startDate/endDate now override preset dateRanges, plus a new orderBy parameter (-ESTIMATED_EARNINGS) for sorted revenue reports.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.adsense_report upgrades: Custom startDate/endDate now override preset dateRanges, plus a new orderBy parameter (-ESTIMATED_EARNINGS) for sorted revenue reports..mcpb): Drag and drop bundle installation for Claude Desktop.engine: "all"): Multi-engine queries fetch Google, Bing, and GA4 concurrently with 50%+ lower latency.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.
| Before | After | |
|---|---|---|
| Data | 4 dashboards, manual exports | 1 unified context |
| Analysis | Manual VLOOKUPs & pivot tables | Deterministic SEO + revenue math, server-side |
| Accounts | Constant re-login | 20+ accounts, auto-resolved per site |
| Insight | Raw rows, agent guesses | Curated signals (opportunity scores, anomalies) |
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.):
Restart your client — and try one of the prompts below.
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_auditon my top pages: which have high search visibility but poor CTR?"
site_health_check), segmented by Brand vs Non-Brand."pagespeed_analyze — any correlation with declining rankings?"compare_engines) — where is Bing winning?"indexing_submit with method: "index_now"."| Platform | Method | Setup |
|---|---|---|
| Google Search Console | OAuth (recommended) | npx search-console-mcp setup |
| Google Search Console | Service Account | Set GOOGLE_APPLICATION_CREDENTIALS — details |
| Bing Webmaster Tools | API Key | export BING_API_KEY="..." — get a key |
| Google Analytics 4 | Service Account | npx search-console-mcp setup --engine=ga4 |
| Google AdSense | OAuth (read-only) | npx search-console-mcp setup --engine=adsense — headless servers |
Manage everything from the CLI:
When your agent queries a site, the server auto-resolves which account owns it — no manual switching. Multi-account docs →
AdSense cannot use service accounts, and config files are machine-encrypted — so authorize once on any machine with a browser and transfer the grant:
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.
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:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"Search Console MCP v2.0 features 7 Fluent Domain Tools that handle all SEO, Analytics, Inspection, and Indexing operations cleanly:
| Fluent Tool | Parameters / Actions | Description |
|---|---|---|
sites_list | engine: "all" | "google" | "bing" | Lists verified sites across search engines in parallel |
sites_manage | action: "add" | "delete", siteUrl, engine | Adds or removes site properties |
accounts_manage | action: "list" | "add_site" | "remove" | Configures multi-account profiles |
sitemaps_list | siteUrl, feedUrl, engine | Fetches sitemap status and indexing state |
sitemaps_submit | siteUrl, feedUrl, engine | Submits sitemaps to GSC & Bing |
sitemaps_delete | siteUrl, feedUrl, engine | Removes sitemaps |
analytics_query | siteUrl, engine, dimensions, metrics | Multi-engine search & GA4 analytics query |
analytics_compare | mode: "period_over_period" | "trends" | "drop_attribution" | Analyzes period deltas, trend shifts, and drop causes |
analytics_anomalies | siteUrl, threshold | Statistical detection of traffic spikes/drops |
inspection_inspect | siteUrl, urls, engine | Google URL inspection & Bing URL info |
pagespeed_analyze | url, strategy, cwvOnly | Core Web Vitals and PageSpeed Insights audits |
indexing_submit | urls, method: "standard" | "index_now" | "remove" | Instantly indexes URLs via IndexNow or Google/Bing API |
indexing_status | siteUrl, type: "quota" | "status" | Checks remaining indexing quota & URL status |
seo_audit | type: "quick_wins" | "striking_distance" | "cannibalization" | "low_hanging_fruit" | "lost_queries" | "recommendations" | "brand_vs_nonbrand" | Comprehensive automated SEO audits |
seo_keywords_research | keywords, type: "stats" | "related" | "traffic" | Keyword volumes and related keyword stats |
site_health_check | siteUrl, level: "summary" | "full" | "crawl_issues" | One-shot site performance & technical audit |
compare_engines | siteUrl | Side-by-side Google vs Bing performance breakdown |
genai_query_insights | siteUrl, days, engine: "google" | "bing" | "all", includePages, minImpressions | Flags likely generative-AI / conversational queries (custom heuristic, no official API) |
| Tool | Parameters | Description |
|---|---|---|
adsense_accounts | mode: "configured" | "discover", accountId | Lists configured or discoverable AdSense publisher accounts |
adsense_report | dateRange, startDate, endDate, dimensions, metrics, orderBy, rowLimit, accountId | Earnings, impressions, clicks, CTR & RPM with dimension breakdowns. Custom dates override dateRange. |
adsense_payments_alerts | accountId | Outstanding payments and account alerts (policy issues, payment holds) |
Note:
accountIdrefers to the configured profile ID (e.g.adsense_2, as shown byaccounts_manage), not a publisher resource name likeaccounts/pub-123.
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 →
refresh_token and expiry_date are persisted, at mode 600MIT · Contributing guide · Backward Compatibility Guide
If this saves you a spreadsheet, consider ⭐ starring the repo.