gsc-mcp · 5 data tools · read-only except sitemap submission

Google Search Console,
as an MCP server.

Claude gets gsc_search_analytics, gsc_inspect_url, sitemap tools and property listing against your own Search Console grant. No exports, no spreadsheets — ask, and the answer comes from the API with Google's own numbers.

https://gsc-mcp.bloggerclinic.com/mcp · $9/mo or $79/yr per property provisional

A real session

Not a mock-up: this is Claude using this tool surface on a property we own, outputs verbatim.

Recorded session · 2026-08-08Real session: Claude using the connector on properties we own. Outputs verbatim, truncated where marked.

user Which of my sites gets any Google impressions for queries with 'keeda' in them?

gsc_list_sites({})

{ "siteEntry": [
  { "siteUrl": "sc-domain:internetkeeda.com", "permissionLevel": "siteOwner" },
  { "siteUrl": "sc-domain:autopartsocean.com", "permissionLevel": "siteOwner" },
  … 7 more properties
] }

gsc_search_analytics({ "siteUrl": "sc-domain:internetkeeda.com", "startDate": "2026-07-08", "endDate": "2026-08-05", "dimensions": ["query"], "rowLimit": 5 })

{ "rows": [
  { "keys": ["aikeeda"], "clicks": 0, "impressions": 1, "position": 17 },
  { "keys": ["ekeeda"], "clicks": 0, "impressions": 9, "position": 87.3 },
  { "keys": ["ikeda"], "clicks": 0, "impressions": 1, "position": 88 },
  … ], "responseAggregationType": "byProperty" }

claude internetkeeda.com is the only property with 'keeda' queries — 11 impressions across brand-adjacent terms in the last 28 days, zero clicks. The largest is "ekeeda" (9 impressions, position 87), which is a different company's brand; nothing here is worth targeting. If you want traffic queries instead of brand lookalikes, I can pull pages with impressions but no clicks next.

Authentication model

You create an OAuth client in your own Google Cloud project (exact click-path with the screens named), then hand its id and secret to the gsc_setup tool. The consent screen you approve belongs to your client — we never hold a grant issued to us. The scope requested is https://www.googleapis.com/auth/webmasters (read plus sitemap submission; nothing else).

Client id, secret, and refresh token are stored AES-256-GCM encrypted, decrypted only inside the request that needs them, and never logged. The only readback is a masked suffix from gsc_auth_status. Revoke any time at myaccount.google.com/permissions — our copy of the refresh token dies with it.

Tool reference

gsc_setup

not metered

Connect your own Google Cloud OAuth client (client id + secret). Returns the Google consent URL. Consent is granted to your client — never to us.

client_idstringOAuth client ID, ends in .apps.googleusercontent.com
client_secretstringOAuth client secret (GOCSPX-…). Stored AES-256-GCM encrypted.

gsc_auth_status

not metered

Connection state plus the masked client-id suffix. Never returns credentials.

no arguments

check_quota

not metered

Plan, metered calls used this month, cap, reset date.

no arguments

gsc_list_sites

metered

Every Search Console property the authorised account can access, with permission level.

no arguments

gsc_search_analytics

metered

Performance query: clicks, impressions, CTR, average position grouped by up to two dimensions. Data lags 2–3 days; max range 16 months (Google's limits, passed through unchanged).

siteUrlstringExact property string: 'sc-domain:example.com' or 'https://www.example.com/'.
startDatestringYYYY-MM-DD
endDatestringYYYY-MM-DD
dimensionsstring[]query, page, country, device, date, searchAppearance — e.g. ["page","query"]
rowLimit?numberUp to 25,000. Default 1,000.
dimensionFilterGroups?object[]Native GSC filter groups, passed through verbatim.

gsc_inspect_url

metered

Index status for one URL: coverage state, last crawl, Google-selected canonical, mobile usability, rich results. Google caps this at 2,000 calls/day per property.

siteUrlstringExact property string: 'sc-domain:example.com' or 'https://www.example.com/'.
inspectionUrlstringFull page URL including protocol.

gsc_list_sitemaps

metered

Submitted sitemaps with last-downloaded dates, warnings, errors, URL counts.

siteUrlstringExact property string: 'sc-domain:example.com' or 'https://www.example.com/'.

gsc_submit_sitemap

metered

Submit or resubmit a sitemap. The one write-scope tool in this connector.

siteUrlstringExact property string: 'sc-domain:example.com' or 'https://www.example.com/'.
sitemapUrlstringFull sitemap URL.

Rate limits and quotas

  • Our metering: 5,000 metered tool calls per month per property on paid plans, 200 on free provisional. Setup, status and check_quota are never metered. The counter is a KV increment; a concurrent burst can overshoot by a few calls — it is a fair-use cap, not a bill.
  • Google's limits pass through: URL inspection is capped by Google at 2,000 calls/day per property; search analytics data lags 2–3 days and reaches back 16 months.
  • Errors come back as readable tool results (isError) with the upstream status and a fix, never a stack trace or your token.

What it does not do

  • No rank tracking beyond what Search Console reports (2–3 day lag, sampled queries — Google's limits, not ours).
  • No keyword volume, difficulty scores, or SERP scraping. This reads your own property data only.
  • No competitor data of any kind: it can only see properties your Google account can see.
  • No writes except gsc_submit_sitemap. It cannot change settings, users, or ownership.
  • No historical data beyond Google's 16-month window.
  • No caching of your data: every answer is a live API call; nothing is stored except encrypted credentials and a usage counter.

Install

Claude Code
claude mcp add --transport http gsc https://gsc-mcp.bloggerclinic.com/mcp \
  --header "Authorization: Bearer smcp_your_key"

Claude web, Claude Desktop, and generic clients → · Prefer your own infrastructure? Self-host mode.