Google Search Console MCP Server
Ready-made SEO analysis of your Google Search Console data, plus image-search audits and indexing requests
Search Console, Bing Webmaster Tools, GA4 and AdSense data and SEO analysis in one MCP server
By Saurabh (individual) TypeScript Local · stdio Data and analytics
62 popularity score ★ 321 ↓ 1.4k/wk
Opens the app, which asks before it adds the server.
npx search-console-mcp setupclaude mcp add search-console -- npx search-console-mcp{
"mcpServers": {
"search-console": {
"command": "npx",
"args": [
"search-console-mcp"
]
}
}
}{
"mcpServers": {
"search-console": {
"command": "npx",
"args": [
"search-console-mcp"
]
}
}
}{
"servers": {
"search-console": {
"type": "stdio",
"command": "npx",
"args": [
"search-console-mcp"
]
}
}
}[mcp_servers.search-console]
command = "npx"
args = ["search-console-mcp"]gemini mcp add --scope user search-console npx -- search-console-mcpBING_API_KEY secret |
Optional: Bing Webmaster Tools API key, needed for the Bing tools. |
|---|---|
GOOGLE_APPLICATION_CREDENTIALS |
Optional: Path to a Google service-account JSON key, instead of the OAuth setup. |
| Set together: service account | |
GOOGLE_CLIENT_EMAIL |
Optional: Service-account email, used together with GOOGLE_PRIVATE_KEY instead of a key file. |
GOOGLE_PRIVATE_KEY secret |
Optional: Service-account private key, used together with GOOGLE_CLIENT_EMAIL. |
| Set together: sse | |
MCP_HTTP_TOKEN secret |
Optional: Bearer token clients must send in SSE mode. A random one is made per run and printed when unset. |
MCP_HTTP_HOST |
Optional: Interface the SSE server binds to. |
MCP_HTTP_ALLOWED_ORIGINS |
Optional: Comma-separated browser origins allowed through CORS. Only localhost on the SSE port by default. |
Search Console MCP is a local Node.js server that connects an assistant to four Google and Microsoft webmaster products: Google Search Console, Bing Webmaster Tools, Google Analytics 4 and Google AdSense. You can ask about a site's search traffic, rankings, indexing state and ad earnings in one conversation. You don't have to export reports from each dashboard first.
Much of the analysis happens on the server, not in the assistant. seo_audit groups queries into quick wins, striking-distance keywords, cannibalisation, lost queries and brand versus non-brand. analytics_compare and analytics_anomalies explain period-over-period changes and spikes or drops. compare_engines puts Google and Bing figures side by side. genai_query_insights flags queries that look like they came from AI search features. Its makers say this tool runs on their own heuristics, because neither Google nor Bing publishes that data, and that its numbers undercount.
It can also change things: add or delete properties, submit or delete sitemaps, and submit URLs for indexing through Google's Indexing API, Bing URL submission or IndexNow. It handles several accounts and works out which account owns each site. The same package works as a command-line tool: `search-console-mcp run <tool>` prints any tool's result as JSON, CSV or a table.
The v2.1.4 source (src/index.ts) registers 25 tools, four more than the README's tables list: get_started, analytics_advanced (GA4 e-commerce, realtime and behaviour), schema_validate and diagnostics. It also serves 14 prompts for guided workflows and five resources under seo://. Calls to about 96 tool names from before v2.0 still work. A fallback router maps them onto the current tools.
| Runtime | Node.js 18+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Google Search Console | FreeOAuth sign-in through setup, or a service-account key |
| Bing Webmaster Tools | FreeAPI key, only for the Bing tools |
| Google Analytics 4 | Freeservice account, only for the GA4 tools |
| Google AdSense | Freeseparate read-only OAuth grant, only for the AdSense tools |
Run `npx search-console-mcp setup` once in a browser to authorise Google. For Search Console you can use a service-account JSON key in GOOGLE_APPLICATION_CREDENTIALS instead. Bing needs a Webmaster Tools API key (BING_API_KEY). GA4 is added with `setup --engine=ga4` and AdSense with `setup --engine=adsense`. On Claude Desktop you can skip Node by installing the .mcpb bundle from its releases.
On a headless machine AdSense can't open a browser for sign-in. Authorise on a computer that has one, then move the grant across with `adsense-export` and `adsense-import`. Over SSH, setup prints the sign-in address and a port-forward command instead.
It suits site owners, SEO practitioners and publishers who want Google, Bing, GA4 and AdSense figures side by side in one assistant, especially across several sites or accounts. Its ready-made audits save writing the analysis prompts yourself. Some tools change live properties: adding or deleting sites, deleting sitemaps and submitting or removing URLs from the index. If you only want to read Search Console data, a single-product server with no write tools will give the assistant less reach. It is a third-party project, not published by Google or Microsoft.
20 only read, 4 change things, 1 can delete or overwrite. A ? marks an optional parameter.
get_startedsites_listengine?: enumsites_manage deletesaction: enumsiteUrl: stringengine?: enumaccounts_manage changesaction: enumaccountId?: stringsiteUrl?: stringemail?: stringsitemaps_listsiteUrl: stringfeedUrl?: stringengine?: enumsitemaps_submit changessiteUrl: stringfeedUrl: stringengine?: enumsitemaps_delete changessiteUrl: stringfeedUrl: stringengine?: enumanalytics_querysiteUrl: stringstartDate?: stringendDate?: stringdimensions?: arrayfilters?: arrayrowLimit?: numberengine?: enumanalytics_comparesiteUrl: stringmode?: enumstartDate?: stringendDate?: stringcompareStartDate?: stringcompareEndDate?: stringengine?: enumanalytics_anomaliessiteUrl: stringstartDate?: stringendDate?: stringthreshold?: numberengine?: enumanalytics_advancedpropertyId: stringmetricType: enumstartDate?: stringendDate?: stringgenai_query_insightssiteUrl: stringdays?: numberengine?: enumincludePages?: booleanminImpressions?: numberadsense_accountsaccountId?: stringmode?: enumadsense_reportaccountId?: stringdateRange?: enumstartDate?: stringendDate?: stringdimensions?: arraymetrics?: arrayrowLimit?: numberorderBy?: stringadsense_payments_alertsaccountId?: stringinspection_inspectsiteUrl: stringurls: arrayengine?: enumpagespeed_analyzeurl: stringstrategy?: enumcategory?: arraycwvOnly?: booleanindexing_submit changessiteUrl?: stringurls: arraymethod?: enumengine?: enumhost?: stringkey?: stringkeyLocation?: stringindexing_statussiteUrl: stringurl?: stringtype?: enumengine?: enumseo_auditsiteUrl: stringtype: enumbrandKeywords?: arrayminImpressions?: numberengine?: enumseo_keywords_researchsiteUrl?: stringkeywords: arraycountry?: stringlanguage?: stringtype?: enumengine?: enumschema_validateurl: stringsite_health_checksiteUrl?: stringlevel?: enumengine?: enumcompare_enginessiteUrl: stringstartDate?: stringendDate?: stringdimension?: enumlimit?: numberdiagnosticsseo://algorithm-updatesseo://connected-sitesseo://adsense/accountsseo://adsense/paymentsseo://backward-compatibilityinvestigate_traffic_dropfind_quick_winsfull_site_auditanalyze_pageplatform_comparisoncontent_opportunity_reportexecutive_summaryga4_traffic_auditadsense_earnings_reviewadsense_monetization_auditseo_traffic_detectiveseo_striking_distanceseo_cannibalization_auditseo_compare_google_bing