Google Search Console MCP
NPM · MCP-GOOGLE-SEARCH-CONSOLE
MCP server for the Google Search Console API: search analytics, sitemaps, URL inspection, sites.
Available components
Last scanned (4 hours ago)
Scores higher than 58% of npm servers
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security81
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 30 of 94 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability70
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3958 tokens (~219/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 1.3.1 → 1.3.2 functional
- 3 Nov 26 +1
- Stability: 0.97 → pass security
- 2 Nov 26 −1
- Stability: pass → 0.97 functional
- 1 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 31 Oct 26 −15
- Known CVEs: fail → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.86 → unverified ▼ functional
- Package version: 1.2.0 → 1.3.1 functional
- Package version: 1.2.0 → 1.3.0 functional
- 27 Oct 26 +1
- Stability: 0.97 → pass security
- 26 Oct 26 −1
- Stability: pass → 0.97 functional
- 24 Oct 26 −5
- CVE-2023-54404 affects this package: high ▼ security
- Known CVEs: pass → fail ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed npm/mcp-google-search-console@1.3.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-mrhx-c7xc-m3w5 | CVE-2023-54404 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 94 packages
| Packages resolved | 94 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_site Add a property ~185
Adds a property to the account's Search Console set. The property starts UNVERIFIED (permissionLevel siteUnverifiedUser) and most data calls will return 403 until it is verified — verification happens through the Search Console UI or the separate Site Verification API, not through this API. Success is an empty API response (surfaced as { ok: true, added }). Requires the full webmasters OAuth scope (the readonly scope cannot mutate).
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
auth_status Google connection status ~81
Shows whether this server is connected to Google: token presence and source (env variables or a stored in-chat login), expiry, the Google account email, granted vs missing OAuth scopes, where the credentials file lives and where the OAuth client comes from. Makes no network calls and never returns the token itself. Call it first when other tools report the server is not connected.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
delete_site Remove a property ~166
Removes (unlinks) a property from the account's Search Console set. No data is deleted and other owners keep their access — this only removes the property from THIS account's list; it can be re-added later. Success is an empty API response (surfaced as { ok: true, removed }). Requires the full webmasters OAuth scope.
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
delete_sitemap Delete a sitemap ~180
Removes a sitemap from Search Console. This does not delete the file from the site, and Google may still discover it via robots.txt — it only removes the submission. Success is an empty API response (surfaced as { ok: true, deleted }). Requires the full webmasters OAuth scope.
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
finish_login Finish the Google login ~123
Second step: waits up to 20 s for the browser consent to finish, saves the tokens to an owner-only file and verifies the login with a read-only identity call, returning the account email and the granted scopes. After success every tool works immediately — no client restart. If the user granted only part of the requested permissions, the login is still saved and missingScopes lists what will not work. Logging in under a different Google account replaces the previous login (its refresh token is revoked best-effort) and the response carries previousAccountEmail so the change never goes unnoticed.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_site Get one property ~143
Returns one property's entry: { siteUrl, permissionLevel }. A 404 means the value does not match any registered property — check the exact format (trailing slash, scheme, sc-domain: prefix) against list_sites output.
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
get_sitemap Get one sitemap ~173
Returns one submitted sitemap's details (the same WmxSitemap shape as list_sitemaps): errors/warnings counts, isPending, lastSubmitted/lastDownloaded, and per-content-type submitted counts. Useful to check processing status after submit_sitemap.
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
get_top_queries Top search queries ~351
Convenience wrapper over search_analytics for the most common ask: the top search queries for a property, sorted by clicks descending (the API's default order). Each row has keys[0] = the query string plus clicks, impressions, ctr (a FRACTION 0..1) and position. Dates are calendar dates in Pacific Time, end_date inclusive; final data lags ~2-3 days. Anonymized long-tail queries are never returned. Same endpoint and quota as search_analytics — use search_analytics directly for other dimensions, pagination, fresh data or regex filters.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Only count traffic from this country — ISO 3166-1 alpha-3 code, e.g. "usa". |
| device | string | – | Only count traffic from this device class. |
| end_date | string | yes | Last date of the range, YYYY-MM-DD, Pacific Time, inclusive. |
| limit | integer | – | How many top queries to return (1..25000; default 100). |
| page_filter | string | – | Only count traffic to pages whose URL CONTAINS this substring, e.g. "/blog/". |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
| start_date | string | yes | First date of the range, YYYY-MM-DD, Pacific Time. |
No output schema declared.
No examples provided.
inspect_url Inspect a URL's index status ~373
Inspects a URL's status in the Google index (URL Inspection API). Returns { inspectionResult } with: inspectionResultLink (the Search Console UI page for this inspection); indexStatusResult — verdict (PASS/PARTIAL/FAIL/NEUTRAL), human-readable coverageState (e.g. "Submitted and indexed"), robotsTxtState (ALLOWED/DISALLOWED), indexingState, lastCrawlTime, pageFetchState (SUCCESSFUL/SOFT_404/NOT_FOUND/SERVER_ERROR/...), googleCanonical vs userCanonical, sitemap[], referringUrls[], crawledAs (DESKTOP/MOBILE); plus ampResult and richResultsResult (with per-item issues and severities) when applicable. Only the status of the version already in the Google index is returned — this is NOT a live test. mobileUsabilityResult may still appear in responses but the product is retired — ignore it. QUOTA WARNING: only 2,000 inspections per property per DAY (and 600/minute) — throttle any batch inspection and expect 429/403 rateLimitExceeded beyond that.
| Name | Type | Req | Description |
|---|---|---|---|
| inspection_url | string | yes | The fully-qualified URL to inspect. It must belong to the property given in site_url. |
| language_code | string | – | IETF BCP-47 language for the human-readable issue messages, e.g. "en-US" (the default). |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
list_sitemaps List sitemaps ~235
Lists the sitemaps submitted for a property (or, with sitemap_index, the children of a sitemap index file). Returns { sitemap: [WmxSitemap] } with per-sitemap path, lastSubmitted, lastDownloaded, isPending, isSitemapsIndex, type (sitemap/rssFeed/atomFeed/patternSitemap/urlList/notSitemap), warnings and errors counts, and contents[] with per-content-type submitted counts. The contents[].indexed field is deprecated and returns nothing useful — never present it as indexed pages.
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
| sitemap_index | string | – | URL of a sitemap index file — lists its child sitemaps instead of the property's own list. |
No output schema declared.
No examples provided.
list_sites List Search Console properties ~122
Lists every Search Console property the authenticated account can access. Returns { siteEntry: [{ siteUrl, permissionLevel }] } where siteUrl is either a URL-prefix property ("https://example.com/") or a domain property ("sc-domain:example.com"), and permissionLevel is siteOwner, siteFullUser, siteRestrictedUser or siteUnverifiedUser. Call this FIRST: every other tool needs the siteUrl exactly as returned here — a near-match (missing trailing slash, wrong scheme, www vs non-www) is a different property and returns 403/404.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
logout Disconnect from Google ~62
Revokes the stored token at Google (oauth2.googleapis.com/revoke) and deletes the local credentials file. Tokens supplied via env variables are NOT touched — remove them from the MCP client config manually; envTokenStillSet in the response says whether any are still in effect.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
raw_request Raw Search Console API call ~223
Escape hatch to call any Google Search Console API path directly, for requests the typed tools don't cover. Two surfaces share the host: "webmasters/v3/..." (sites, sitemaps, searchAnalytics) and "v1/..." (urlInspection). siteUrl and feedpath are PATH SEGMENTS and must be URL-encoded (encodeURIComponent), e.g. "webmasters/v3/sites/sc-domain%3Aexample.com/sitemaps". The path may carry a query string. The Bearer token is added automatically; the method defaults to GET. Note: sites.add and sitemaps.submit are PUT with no body and return an empty response on success.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | JSON request body (POST only; PUT endpoints here take no body). |
| method | string | – | HTTP method (the Search Console API uses only these four). Defaults to GET. |
| path | string | yes | API path relative to https://searchconsole.googleapis.com, e.g. "webmasters/v3/sites" or "v1/urlInspection/index:inspect". |
No output schema declared.
No examples provided.
search_analytics Search Analytics (performance) query ~659
Runs a Search Analytics (performance) query for a property: clicks, impressions, CTR and average position from Google Search, grouped by the requested dimensions. Each returned row has keys[] (one value per requested dimension, in the same order) plus clicks, impressions, ctr (a FRACTION 0..1, not a percent) and position; rows are sorted by clicks descending. With no dimensions you get one totals row for the range. Dates are calendar dates in Pacific Time and end_date is INCLUSIVE; final data lags ~2-3 days behind (use data_state "all" for fresh, still-changing rows). Pagination: there is no page token — repeat with start_row increased by row_limit until a response comes back with no rows. When grouping by query/page some anonymized long-tail data is never returned, so summed rows will not match a dimensionless totals query. Quota: 1,200 queries/minute per site and per user.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregation_type | string | – | How metrics are aggregated: "auto" (default) lets the API decide, "byPage"/"byProperty" force it, "byNewsShowcasePanel" is for News Showcase. Affects how clicks/impressions are counted, not which row… |
| data_state | string | – | "final" (default) — only finalized data; "all" — include fresh data still subject to change; "hourly_all" — required when grouping by hour (recent data only). |
| dimensions | array | – | How to group rows; keys[] in each row follows this order. "country" values are ISO 3166-1 alpha-3 codes, "device" is DESKTOP/MOBILE/TABLET, "hour" requires data_state "hourly_all". Omit for one total… |
| end_date | string | yes | Last date of the range, YYYY-MM-DD, Pacific Time, inclusive. |
| filters | array | – | Row filters, ALL combined with AND — the API has no OR across filters (run separate queries instead). |
| row_limit | integer | – | Max rows to return (1..25000; API default 1000). |
| search_type | string | – | Which search surface to report: "web" (default), "image", "video", "news" (News tab of search), "discover" (Discover feed), "googleNews" (news.google.com and the app). discover/googleNews support a r… |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
| start_date | string | yes | First date of the range, YYYY-MM-DD, Pacific Time. |
| start_row | integer | – | 0-based row offset for pagination (default 0). A response with no rows means the end. |
No output schema declared.
No examples provided.
set_client Save the OAuth client ~111
Saves the OAuth client credentials from the JSON file downloaded from Google Cloud Console ('Download JSON' on a Desktop-app client). Pass the file PATH — the secret must never be pasted into the chat. The client is stored once in the shared ~/.config/mcp-google-auth/client.json (owner-only) and reused by every mcp-google-* server; tokens stay per-server. After this, call start_login.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Absolute path to the client_secret_*.json file downloaded from Google Cloud Console. |
No output schema declared.
No examples provided.
setup_instructions Setup instructions ~109
Step-by-step checklist for connecting this server to Google: creating a Google Cloud project and a Desktop-app OAuth client, publishing the consent screen (mandatory — Testing-mode refresh tokens die after 7 days), downloading the client JSON and handing its PATH to set_client. Works without any credentials; the checklist shortens to 'enable the API + log in' when an OAuth client is already configured (one client serves the whole mcp-google-* line). Never asks the user to paste secrets into the chat.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
start_login Start the Google login ~114
First step of connecting from the chat, without editing config files or restarting the client. Returns authorizeUrl — show it to the user as a clickable link and ask them to open it in the browser ON THIS MACHINE, pick the Google account and approve access. A one-shot listener on 127.0.0.1 catches Google's redirect; the code is exchanged locally and never passes through the chat. Does not open the browser itself. The attempt lives 10 minutes; when the browser shows the success page, call finish_login.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
submit_sitemap Submit a sitemap ~194
Submits (or resubmits) a sitemap for the property. The feedpath must be the sitemap's full URL on the property. Success is an EMPTY API response (surfaced as { ok: true, submitted }); processing is asynchronous — check errors/warnings later with get_sitemap. Requires the full webmasters OAuth scope (readonly is not enough).
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". |
| site_url | string | yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different proper… |
No output schema declared.
No examples provided.
How do I install the Google Search Console MCP server?
Google Search Console MCP runs locally as an npm package, launched with npx -y mcp-google-search-console. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · mcp-google-search-console
claude mcp add a1-x-tech-mcp-google-search-console -- npx -y mcp-google-search-console
What is the Google Search Console MCP server?
Google Search Console MCP is listed in the public MCP registry as io.github.A1-x-Tech/mcp-google-search-console. MCP server for the Google Search Console API: search analytics, sitemaps, URL inspection, sites. This page covers its npm package (mcp-google-search-console).
Is the Google Search Console MCP server safe to use?
Google Search Console MCP scores 78 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Google Search Console MCP server expose?
Google Search Console MCP exposes 18 tools: auth_status, setup_instructions, set_client, start_login, finish_login, and 13 more. Their descriptions and schemas cost roughly 3,604 tokens of context every time the server is loaded.
Is the Google Search Console MCP server still maintained?
Google Search Console MCP is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Google Search Console MCP server under?
Google Search Console MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.