Search Console MCP
Search Console, Bing Webmaster Tools, GA4 and AdSense data and SEO analysis in one MCP server
Ready-made SEO analysis of your Google Search Console data, plus image-search audits and indexing requests
By Suganthan Mohanadasan (individual) TypeScript Local · stdio Data and analyticsCRM and sales
62 popularity score ★ 183 ↓ 2.4k/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs GSC_AUTH_MODE, GSC_OAUTH_SECRETS_FILE, GSC_SITE_URL. Replace each <NAME> with your value.
claude mcp add google-search-console -e GSC_AUTH_MODE=<GSC_AUTH_MODE> -e GSC_OAUTH_SECRETS_FILE=<GSC_OAUTH_SECRETS_FILE> -e GSC_SITE_URL=<GSC_SITE_URL> -- npx -y suganthan-gsc-mcp{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": [
"-y",
"suganthan-gsc-mcp"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": [
"-y",
"suganthan-gsc-mcp"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"suganthan-gsc-mcp"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}[mcp_servers.google-search-console]
command = "npx"
args = ["-y", "suganthan-gsc-mcp"]
[mcp_servers.google-search-console.env]
GSC_AUTH_MODE = "<GSC_AUTH_MODE>"
GSC_OAUTH_SECRETS_FILE = "<GSC_OAUTH_SECRETS_FILE>"
GSC_SITE_URL = "<GSC_SITE_URL>"gemini mcp add --scope user -e GSC_AUTH_MODE=<GSC_AUTH_MODE> -e GSC_OAUTH_SECRETS_FILE=<GSC_OAUTH_SECRETS_FILE> -e GSC_SITE_URL=<GSC_SITE_URL> google-search-console npx -- -y suganthan-gsc-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs GSC_AUTH_MODE, GSC_OAUTH_SECRETS_FILE, GSC_SITE_URL. Replace each <NAME> with your value.
git clone https://github.com/Suganthan-Mohanadasan/Suganthans-GSC-MCP.git
cd Suganthans-GSC-MCP
npm install
npm run buildclaude mcp add google-search-console -e GSC_AUTH_MODE=<GSC_AUTH_MODE> -e GSC_OAUTH_SECRETS_FILE=<GSC_OAUTH_SECRETS_FILE> -e GSC_SITE_URL=<GSC_SITE_URL> -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'{
"mcpServers": {
"google-search-console": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}{
"mcpServers": {
"google-search-console": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
],
"env": {
"GSC_AUTH_MODE": "<GSC_AUTH_MODE>",
"GSC_OAUTH_SECRETS_FILE": "<GSC_OAUTH_SECRETS_FILE>",
"GSC_SITE_URL": "<GSC_SITE_URL>"
}
}
}
}[mcp_servers.google-search-console]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"]
[mcp_servers.google-search-console.env]
GSC_AUTH_MODE = "<GSC_AUTH_MODE>"
GSC_OAUTH_SECRETS_FILE = "<GSC_OAUTH_SECRETS_FILE>"
GSC_SITE_URL = "<GSC_SITE_URL>"gemini mcp add --scope user -e GSC_AUTH_MODE=<GSC_AUTH_MODE> -e GSC_OAUTH_SECRETS_FILE=<GSC_OAUTH_SECRETS_FILE> -e GSC_SITE_URL=<GSC_SITE_URL> google-search-console node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'GSC_AUTH_MODE |
Required: Set to oauth for Google sign-in; if left unset the server uses service_account mode, which needs GSC_KEY_FILE. |
|---|---|
GSC_OAUTH_SECRETS_FILE |
Required: Path to your Desktop-app OAuth client JSON (or set GSC_OAUTH_CLIENT_ID and GSC_OAUTH_CLIENT_SECRET instead). |
GSC_SITE_URL |
Required: Default property, e.g. sc-domain:example.com or https://example.com/. |
GSC_SCOPES |
Optional: readonly or full (defaults to full); full is needed for the submit tools. |
GSC_KEY_FILE |
Optional: Path to a service-account JSON key; used instead of OAuth when GSC_AUTH_MODE is service_account. |
GSC_OAUTH_CLIENT_ID |
Optional: OAuth client ID, an alternative to the secrets file. |
GSC_OAUTH_CLIENT_SECRET |
Optional: OAuth client secret, paired with GSC_OAUTH_CLIENT_ID. |
GSC_SITE_URLS |
Optional: Comma-separated list of properties for multi_site_dashboard. |
This is a local stdio server built by SEO consultant Suganthan Mohanadasan. It connects to the Google Search Console API using your own Google credentials. Most of its tools run a finished analysis rather than handing back raw API rows. They find keywords sitting just below page one, pages whose click-through rate trails what their position would predict, pages losing traffic (with a guess at whether the cause is ranking, CTR or demand), cannibalising pages, slowly decaying content and topic gaps. Each answer comes with provenance metadata, and a verify_claim tool queries the data again to check a number before it is presented.
Version 2.3 added an image-search suite that queries the Search Analytics API with type=image. Version 2.4 added a classifier that picks out queries which look like follow-ups typed into Google's AI Mode. Version 2.5 added image_page_audit, which downloads pages from your own site and checks alt text, file names, image size and weight, lazy loading, schema and embedded EXIF/IPTC/XMP data. Indexing tools submit URLs to Google's Indexing API and manage sitemaps. generate_report writes a markdown report to disk.
The npm package description still says 28 tools, but the v2.5.1 source (src/index.ts) registers 29. Setup can be done by hand or with a `npx -y suganthan-gsc-mcp setup` wizard that writes the Claude Desktop and Claude Code configs. A .mcpb bundle for Claude Desktop is on the releases page.
| Runtime | Node.js 18+ |
|---|
Node.js 18 or newer (package engines) with npx. You need a Google Cloud project with the Search Console API enabled, plus either a Desktop-app OAuth client JSON or a service-account key that has been added as a user on the property. You also need a Search Console property you can access. The submit tools additionally need the Web Search Indexing API enabled, owner-level access on the property and the full scope.
It works only through the Search Console API, so it is subject to the API's row limits; for bulk-export data its author points to a separate BigQuery server. advanced_search_analytics returns 100 rows by default, up to 500. image_page_audit fetches up to 5 pages per call. submit_batch takes up to 200 URLs, which matches Google's default daily Indexing API quota. Google says the Indexing API is meant only for JobPosting and BroadcastEvent pages; the README says it handles other pages in practice. Credentials are checked when a tool is first called, not at launch, so a missing setting appears as a tool error. The .mcpb bundles released before v2.5.1 could not start.
A good fit for SEO practitioners and site owners who already use Search Console and want ready-made diagnoses (quick wins, decay, cannibalisation, image search) in Claude Desktop or Claude Code. Everything runs on your own machine and talks to Google directly. Not published by Google, so the Google Cloud setup is yours to do. Keep GSC_SCOPES=readonly if you only want analysis. Large sites that run into API row limits may prefer the author's BigQuery MCP Server, which reads the Search Console bulk export instead.
site_snapshotquick_winsctr_opportunitiestraffic_dropscontent_gapscannibalization_checkcontent_decaytopic_cluster_performancectr_vs_benchmarkinspect_urlverify_claimadvanced_search_analyticscheck_alertscontent_recommendationsgenerate_reportmulti_site_dashboardsubmit_urlsubmit_batchsubmit_sitemaplist_sitemapsimage_keyword_overviewimage_search_quick_winscompare_web_vs_imageimage_pages_overviewimage_keyword_trendsimage_impressions_no_clicksimage_content_decaygenai_conversation_queriesimage_page_audit