# Google Search Console MCP (pypi · scalably-gsc-mcp)

Read-only Google Search Console MCP: Search Analytics, sitemaps, URL inspection. 5 tools.

- Trust score: 57/100 (low)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- mcpb · `gsc-mcp.mcpb`: 17/100, [markdown](https://verifymcp.io/servers/io-scalably-gsc-mcp/https-github-com-scalably-io-gsc-mcp-releases-download-v1-0-1-gsc-mcp-mcpb.md), [page](https://verifymcp.io/servers/io-scalably-gsc-mcp/https-github-com-scalably-io-gsc-mcp-releases-download-v1-0-1-gsc-mcp-mcpb)
- pypi · `scalably-gsc-mcp`: 57/100 (this document), [markdown](https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp.md), [page](https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp)

## Channel facts

- Registry: `pypi`
- Package: `scalably-gsc-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it.
  - 0 of 38 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 11 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1389 tokens (~277/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 40/100
  - Stability observed for 12 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Google Search Console MCP server?

Google Search Console MCP runs locally as a PyPI package, launched with uvx scalably-gsc-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add io-scalably-gsc-mcp -- uvx scalably-gsc-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "io-scalably-gsc-mcp": {
      "command": "uvx",
      "args": [
        "scalably-gsc-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-scalably-gsc-mcp": {
      "command": "uvx",
      "args": [
        "scalably-gsc-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add io-scalably-gsc-mcp -- uvx scalably-gsc-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-scalably-gsc-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "scalably-gsc-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-scalably-gsc-mcp --command uvx --arg scalably-gsc-mcp
```

### Hermes

```yaml
mcp_servers:
  io-scalably-gsc-mcp:
    command: "uvx"
    args: ["scalably-gsc-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "io-scalably-gsc-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "scalably-gsc-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-scalably-gsc-mcp -t stdio -c uvx -a scalably-gsc-mcp
```

### Other

```json
{
  "mcpServers": {
    "io-scalably-gsc-mcp": {
      "command": "uvx",
      "args": [
        "scalably-gsc-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 56, −14)

- [security regression] Malware scan: pass → unverified

### 2026-09-16 (score 70, +19)

- [security improvement] Malware scan: unverified → pass
- [functional improvement] Stability: unverified → 0.27

### 2026-09-13 (score 51, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-12 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-08 (score 51)

First indexed and scored.

## MCP tools (5)

### `gsc_list_sites` (~79 tokens)

List every verified Search Console property accessible to this service account.

Returns: {"sites": [{siteUrl, permissionLevel}, ...], "count": N}.
permissionLevel: siteOwner | siteFullUser | siteRestrictedUser | siteUnverifiedUser.

Call this first. URL Inspection requires siteFullUser or siteOwner;
restricted users cannot inspect.

Output parameters:

- `result` (string)

### `gsc_query_search_analytics` (~596 tokens)

Query Search Console traffic data - clicks, impressions, CTR, position.

THE workhorse tool. Supports all six dimensions (incl. HOUR, April 2025),
all six search types, full filter compose, pagination, and auto-pagination.

Args:
  site_url: "https://example.com/" (URL-prefix) or "sc-domain:example.com" (domain).
  start_date / end_date: YYYY-MM-DD (Pacific Time). 16-month retention hard cap.
  dimensions: list of {date, query, page, country, device, searchAppearance, HOUR}.
    HOUR requires data_state='hourly_all'. searchAppearance cannot be combined with
    other dimensions in one query - query it alone and join client-side.
  search_type: web (default) | image | video | news | discover | googleNews.
  filters: flat list [{dimension, operator, expression}]. Operators:
    equals, contains, notEquals, notContains, includingRegex, excludingRegex.
  filter_groups: advanced - pass raw dimensionFilterGroups if you need OR logic.
    Mutually exclusive with `filters`.
  aggregation_type: auto (default) | byPage | byProperty | byNewsShowcasePanel.
  data_state: final (default, ~2-3d lag) | all (fresh, includes unfinalized) |
    hourly_all (~10d history with HOUR dimension).
  row_limit: per-call cap, 1–25000 (API hard cap).
  start_row: 0-based offset for single-page paging.
  max_rows: if set (up to 1M), auto-paginate until exhausted or max_rows hit.

Response: {rows, row_count, response_aggregation_type, first_incomplete_date?,
first_incomplete_hour?, metadata}. Use first_incomplete_date to distinguish
'data still cooking' from 'data is final' when data_state != 'final'.

Gotchas:
  \- 16-month retention. start_date older than 16 months returns empty.
  \- Anonymized queries (fewer than ~a dozen users over 2-3 months) drop from
    the 'query' dimension but count in totals - page-level data is more complete.
  \- Aggregation shift: with a page filter, totals aggregate byPage (inflates
    clicks vs property-level). Set aggregation_type explicitly when comparing.
  \- s…

Input parameters:

- `aggregation_type`
- `data_state`
- `dimensions`
- `end_date` (string, required)
- `filter_groups`
- `filters`
- `max_rows`
- `row_limit` (integer)
- `search_type`
- `site_url` (string, required)
- `start_date` (string, required)
- `start_row` (integer)

Output parameters:

- `result` (string)

### `gsc_list_sitemaps` (~182 tokens)

List sitemaps on a site - or fetch one sitemap by feedpath.

Args:
  site_url: the Search Console property.
  sitemap_index: optional - if set, list only the children of a sitemap-index
    URL (e.g. "https://example.com/sitemap_index.xml").
  feedpath: optional - if set, returns the single sitemap entry at that URL
    instead of the list (absorbs the prior get_sitemap tool).

Returns: {"sitemaps": [...], "count": N} or {"sitemap": {...}} if feedpath given.
Each entry: {path, lastSubmitted, lastDownloaded, isPending, isSitemapsIndex,
type, warnings, errors, contents}.

Input parameters:

- `feedpath`
- `site_url` (string, required)
- `sitemap_index`

Output parameters:

- `result` (string)

### `gsc_inspect_url` (~218 tokens)

Inspect a URL in the Google index. Flattened response.

Checks index status, coverage state, canonical URLs, crawl info, AMP status,
and rich results. Does NOT trigger a live crawl - checks Google's current
index snapshot only.

Args:
  inspection_url: fully-qualified URL to inspect (must be under the property).
  site_url: the Search Console property - "https://example.com/" or
    "sc-domain:example.com".
  language_code: IETF BCP-47, default "en-US".

Quota: 2,000 requests/day/site + 600 requests/minute/site. Requires the SA
to be a Full user on the property (Restricted users get 403 here).

Returns a flat dict with top-level verdict, coverage_state, canonical info,
plus optional `amp` and `rich_results` sub-objects. `_raw` has the full
untouched payload.

Input parameters:

- `inspection_url` (string, required)
- `language_code` (string)
- `site_url` (string, required)

Output parameters:

- `result` (string)

### `gsc_batch_inspect_urls` (~314 tokens)

Inspect many URLs under a single Search Console property. Rate-limited.

Respects Google's 600 QPM / 2,000 QPD per-site limits. Default pace of
8 QPS stays well under 600/minute with headroom. For large jobs (>2000
URLs), split across days or across multiple verified properties (e.g.
per-subdomain).

Args:
  urls: list of fully-qualified URLs under site_url. No dedup.
  site_url: the Search Console property.
  language_code: BCP-47, default "en-US".
  requests_per_second: pace. Max ~10 (600 QPM). Caller can lower on
    429 pressure.
  continue_on_error: if True, collect per-URL errors instead of aborting.

Returns: {
  "results": [{"url": str, "inspection": {...flattened...}} | {"url": str, "error": str}],
  "count": total, "errors": N, "skipped": 0
}

Quota warning: This does NOT replace the Search Analytics API for bulk query
analysis. If the intent is "which pages have most traffic", use
gsc_query_search_analytics instead - 40,000 QPM per project vs 600/site here.

Input parameters:

- `continue_on_error` (boolean)
- `language_code` (string)
- `requests_per_second` (number)
- `site_url` (string, required)
- `urls` (array, required)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp#diagnostics

## Score history

- 2026-09-20: 57
- 2026-09-19: 57
- 2026-09-18: 56
- 2026-09-17: 56
- 2026-09-16: 70
- 2026-09-15: 51
- 2026-09-14: 51
- 2026-09-13: 51
- 2026-09-12: 66
- 2026-09-11: 51
- 2026-09-10: 51
- 2026-09-09: 51
- 2026-09-08: 51

## Common questions

### What is the Google Search Console MCP server?

Google Search Console MCP is listed in the public MCP registry as io.scalably/gsc-mcp. Read-only Google Search Console MCP: Search Analytics, sitemaps, URL inspection. 5 tools. This page covers its PyPI package (scalably-gsc-mcp).

### Is the Google Search Console MCP server safe to use?

Google Search Console MCP scores 57 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. 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 5 tools: gsc_list_sites, gsc_query_search_analytics, gsc_list_sitemaps, gsc_inspect_url, gsc_batch_inspect_urls. Their descriptions and schemas cost roughly 1,389 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 20 September 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.

## Links

- PyPI project: https://pypi.org/project/scalably-gsc-mcp/
- Socket report: https://socket.dev/pypi/package/scalably-gsc-mcp
- Repository: https://github.com/scalably-io/gsc-mcp
- Website: https://scalably.io/mcp/gsc-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp.json
- HTML version of this page: https://verifymcp.io/servers/io-scalably-gsc-mcp/scalably-gsc-mcp
