search-console-mcp
Provides read-only access to Google Search Console data, including search performance analytics (clicks, impressions, CTR, position), sitemap status and errors, and URL inspection (index coverage, canonical, mobile usability).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@search-console-mcp show me top queries by clicks for last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
search-console-mcp
A read-only Model Context Protocol server for Google Search Console. Point it at a Search Console property and query your search-performance data, sitemaps, and URL index status from any MCP client (Claude Code, Claude Desktop, Cursor, …).
It exists to read and analyze Search Console data — nothing else. It cannot add sites, submit sitemaps, request indexing, or change anything.
Read-only by design
Read-only is enforced at three independent layers, so there is no single point of failure:
OAuth scope. Credentials are always downscoped to
https://www.googleapis.com/auth/webmasters.readonly. Google's API rejects any write call made with this scope — regardless of the signed-in account's role. If you mint your credentials with this scope (the helper below does), even a leaked credential file cannot modify your account.Tool surface. The server only implements read methods. There is no code path that mutates Search Console.
Network surface. The only host contacted is
googleapis.com, via Google's official client libraries. No telemetry, no third-party endpoints.
Dependencies are limited to the official mcp, google-api-python-client, and
google-auth packages.
Related MCP server: google-search-console-mcp-python
Tools
Tool | What it returns |
| Properties the account can access, with permission level |
| Performance report: clicks, impressions, CTR, position, grouped by query / page / country / device / date / search appearance, with filters |
| Sitemaps submitted for a property |
| Index status and errors for one sitemap |
| URL Inspection: index coverage, last crawl, canonical, mobile usability (tight per-property quota) |
Setup
1. Enable the API
In a Google Cloud project, enable the Google Search Console API.
2. Mint read-only credentials
Create an OAuth Desktop app client in that project and download its JSON. Then:
pip install "search-console-mcp[auth]" # provides google-auth-oauthlib
python scripts/mint_token.py \
--client-secrets /path/to/oauth_client.json \
--output /path/to/gsc-readonly-credentials.jsonA browser opens — sign in as the account that has access to the Search Console properties you want to read. Viewer / Restricted access is enough. The output file is an authorized-user credential limited to the read-only scope.
A service-account key also works (no minting step) — just set
GOOGLE_APPLICATION_CREDENTIALSto it and add the service-account email as a user on each property. The OAuth path above is recommended for personal use.
3. Register the server
uvx runs it without an explicit install:
{
"mcpServers": {
"search-console": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "search-console-mcp", "search-console-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/gsc-readonly-credentials.json"
}
}
}
}See .mcp.json.example. Restart your MCP client, and the
five tools above become available.
Develop
uv sync
uv run search-console-mcp # starts the stdio serverLicense
MIT — see LICENSE.
Available Tools
5 toolsget_sitemapA
Returns details for a single sitemap, including index status and errors.
Args:
site_url: Property URL, e.g. sc-domain:example.com.
feedpath: Full URL of the sitemap, e.g.
https://example.com/sitemap.xml.
Inputs: site_url (required), feedpath (required).
inspect_urlA
Inspects a URL's index status via the URL Inspection API (read-only).
Reports Google's index coverage, last crawl, canonical, mobile usability, and rich-results state for a single URL. Subject to tight per-property daily quotas set by Google.
Args:
site_url: Property URL the inspected URL belongs to, e.g.
sc-domain:example.com.
inspection_url: The fully-qualified URL to inspect.
language_code: BCP-47 language code for the result, default en-US.
Inputs: site_url (required), inspection_url (required), language_code.
list_sitemapsA
Lists the sitemaps submitted for a property.
Args:
site_url: Property URL, e.g. sc-domain:example.com.
Inputs: site_url (required).
list_sitesA
Lists all Search Console properties the authenticated account can access.
Returns each site's URL (e.g. sc-domain:example.com or
https://example.com/) and the permission level on it.
Inputs: no named parameters.
search_analyticsA
Queries Search Console search-performance data (the Performance report).
Args:
site_url: Property to query, exactly as it appears in Search Console,
e.g. sc-domain:example.com or https://example.com/.
start_date: Inclusive start date, YYYY-MM-DD.
end_date: Inclusive end date, YYYY-MM-DD.
dimensions: Group-by dimensions. Any of: query, page, country, device,
date, searchAppearance. Omit for account totals.
search_type: One of web, image, video, news, discover, googleNews.
row_limit: Rows to return, 1-25000 (default 1000).
start_row: Zero-based offset for pagination (default 0).
dimension_filters: Optional list of filters, each a dict with keys
dimension, operator (equals, contains, notContains,
includingRegex, excludingRegex), and expression.
data_state: final (default, finalized data) or all (includes
fresh, not-yet-finalized data).
Returns:
The raw API response, including a rows list with keys, clicks,
impressions, ctr, and position.
Inputs: site_url (required), start_date (required), end_date (required), dimensions, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct aspect of Search Console: site listing, sitemap management, URL inspection, and analytics queries. No overlap in functionality.
All tool names follow a clear verb_noun pattern with lowercase and underscores: list_sites, list_sitemaps, get_sitemap, inspect_url, search_analytics. Perfectly consistent.
5 tools is appropriate for a focused Search Console integration. It covers the core read operations without being overly heavy, though a few more write tools could be added.
The toolset covers listing, inspection, and analytics but lacks write operations like adding sites or submitting sitemaps, leaving notable gaps for full property management.
Maintenance
Related MCP Connectors
Read-only Google Search Console MCP server for AI assistants.
Hosted, read-only Google Search Console MCP: performance, comparisons, URL inspection, sitemaps.
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
Google Search Console, GA4 and PageSpeed MCP server for Claude, ChatGPT and Cursor. Free, hosted.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for querying Google Search Console data — search analytics, URL inspection, sitemap monitoring, and more — read-only tools for any MCP-compatible AI client.733 PyPIApache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server for Google Search Console API that enables querying search analytics, managing sites, inspecting URLs, and supporting domain delegation via service accounts.22 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.16,878 npm3MIT
- AlicenseAqualityDmaintenanceMCP server for Google Search Console, enabling querying search performance, listing properties, and inspecting URL indexing status from MCP-compatible clients.418 npm1MIT