{
  "markdown": "# mcp-gsc\n\n<!-- Logo asset for marketplace submissions: assets/logo-400.png (400x400). -->\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![MCP](https://img.shields.io/badge/MCP-remote%20server-8A2BE2)](https://modelcontextprotocol.io)\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.github.AKzar1el%2Fmcp--gsc-blue)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.AKzar1el/mcp-gsc)\n[![CI](https://github.com/AKzar1el/mcp-gsc/actions/workflows/ci.yml/badge.svg)](https://github.com/AKzar1el/mcp-gsc/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/%40digestseo%2Fmcp-gsc.svg)](https://www.npmjs.com/package/@digestseo/mcp-gsc)\n[![mcp-gsc MCP server](https://glama.ai/mcp/servers/AKzar1el/mcp-gsc/badges/score.svg)](https://glama.ai/mcp/servers/AKzar1el/mcp-gsc)\n\nPart of the **[DigestSEO](https://digestseo.com/)** suite of open-source SEO tools.\n\n- Product: [digestseo.com/gsc-mcp](https://digestseo.com/gsc-mcp/)\n- Engineering case study: [DigestSEO MCP Suite — AI visibility, Search Console, web validation, and trend intelligence](https://tomiseregi.si/projects/digestseo-mcp-suite)\n- Support: [digestseo.com/support](https://digestseo.com/support/)\n- Privacy: [digestseo.com/privacy](https://digestseo.com/privacy/)\n\nThe self-hosting launcher is available as [`@digestseo/mcp-gsc`](https://www.npmjs.com/package/@digestseo/mcp-gsc):\n\n```bash\nnpx -y @digestseo/mcp-gsc\n```\n\nFor Google OAuth and Cloudflare deployment configuration, follow [SETUP.md](SETUP.md).\n\n### Connect in 30 seconds\n\nEvery deployed instance exposes the same endpoint shape:\n\n```\nhttps://<your-worker>.workers.dev/mcp\n```\n\nThe DigestSEO-hosted instance is available at:\n\n```\nhttps://mcp-gsc.digestseo.com/mcp\n```\n\n**Claude Code**\n\n```bash\nclaude mcp add --transport http gsc https://<your-worker>.workers.dev/mcp\n```\n\n**Cursor**\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=gsc&config=eyJ1cmwiOiJodHRwczovL21jcC1nc2MuZGlnZXN0c2VvLmNvbS9tY3AifQ%3D%3D)\n\n**Kiro**\n\n[![Add to Kiro](https://kiro.dev/images/add-to-kiro.svg)](https://kiro.dev/launch/mcp/add?name=mcp-gsc&config=%7B%22url%22%3A%22https%3A%2F%2Fmcp-gsc.digestseo.com%2Fmcp%22%2C%22disabled%22%3Afalse%2C%22autoApprove%22%3A%5B%5D%7D)\n\nUses the hosted endpoint above; complete its Google OAuth flow on first use.\n\n**ChatGPT** — add it as a custom connector; see [Connect in your AI client](#connect-in-your-ai-client) below.\n\nA self-hostable [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for **Google Search Console**. Connect it to Claude.ai, Cursor, ChatGPT, or any MCP-compatible client and ask your AI assistant about your site's organic search performance — impressions, clicks, top queries, index status, and sitemap health — straight from your own Google account.\n\nIt runs on [Cloudflare Workers](https://workers.cloudflare.com/) and ships with one-click Google OAuth onboarding: connect the server in your client, sign in with Google once, grant the requested Google Search Console permissions, and you're done. No API keys to copy around and no service-account JSON to manage.\n\n> **Prefer zero setup?** The hosted version — with automatic weekly email digests delivered to your inbox — is at **[digestseo.com](https://digestseo.com)**. This repository is the open-source core you can run yourself.\n\n## Tools\n\nBy default (`GSC_ACCESS_MODE=readwrite`), this server exposes 17 tools. Read-only analytics and reporting tools are marked with MCP's `readOnlyHint`; the write tools below can change Search Console properties, sitemaps, or indexing state. Set `GSC_ACCESS_MODE=readonly` to request only the Search Console read-only scope and expose the 12 read-only tools.\n\n| Tool | Access | What it does |\n|---|---|---|\n| **`server.capabilities`** | Read | List every tool this server exposes and report whether your Google connection is currently authenticated (`connected` / `not_connected`). Takes no arguments — a good first call for discovery. |\n| **`sites.list`** | Read | List the Search Console properties the connected Google account can access (`siteUrl`, `permissionLevel`). |\n| **`analytics.query`** | Read | Impressions, clicks, CTR, and average position over a date range, with dimensions, filters, pagination, and selectable search type. |\n| **`urls.inspect`** | Read | Google's URL Inspection report for a single page. |\n| **`sitemaps.list`** / **`sitemaps.get`** | Read | List submitted sitemaps or retrieve one sitemap's details. |\n| **`insights.quick_wins`** / **`insights.cannibalization`** / **`insights.content_decay`** | Read | Surface optimization opportunities, competing pages, and declining content. |\n| **`indexing.list_pages`** / **`analytics.compare`** | Read | Analyze pages receiving impressions and compare two periods. |\n| **`reports.weekly_digest`** | Read | Generate a plain-language seven-day performance report with movers, top pages, and one recommended action. |\n| **`sites.add`** / **`sites.delete`** | Write | Add or remove a Search Console property. |\n| **`sitemaps.submit`** / **`sitemaps.delete`** | Write | Submit or remove a sitemap. |\n| **`indexing.request`** | Write | Requests indexing through Google's Indexing API. Google currently restricts this API to pages containing `JobPosting` structured data or livestream pages containing `BroadcastEvent` inside `VideoObject`. It is not available for general webpage submission. |\n\nRead-write mode requests the Google Search Console read-write and Indexing API scopes. Read-only mode requests only `https://www.googleapis.com/auth/webmasters.readonly` (plus `openid` and `email`) and does not register the five write tools. Read-write remains the default so existing deployments retain their current behavior; see [SETUP.md](SETUP.md) to select a mode before connecting users.\n\n> **`indexing.request` eligibility.** Google's Indexing API is not a general-purpose page submission tool — as of this writing, Google's own documentation limits it to two content types: pages with `JobPosting` structured data, and livestream pages with `BroadcastEvent` structured data nested inside `VideoObject`. Before submitting, the server fetches the target URL and checks its JSON-LD for one of those two types; if neither is present (or the page can't be fetched), it returns an error explaining why the URL is ineligible instead of calling the Indexing API. A successful submission is only an acknowledgment that Google received the notification — it does not guarantee the URL will be indexed.\n\n## What you can ask\n\nOnce connected, ask your assistant things like:\n\n- *\"What are my top 20 queries by clicks in the last 28 days?\"*\n- *\"Compare impressions for example.com this month vs last month — which pages dropped?\"*\n- *\"Is `https://example.com/pricing` indexed? When was it last crawled?\"*\n- *\"Which queries does my blog rank position 5–15 for? Those are my quick wins.\"*\n- *\"Give me a weekly digest for `sc-domain:example.com` ending today.\"*\n- *\"Do any of my sitemaps have errors or warnings?\"*\n- *\"Split my clicks into brand vs non-brand using a regex on the query.\"*\n- *\"How is my site doing in Google Discover vs regular web search?\"*\n\n## Connect in your AI client\n\nOnce you've deployed the server (see **[SETUP.md](SETUP.md)**), connect it by pasting your Worker's `/mcp` URL into your client:\n\n```\nhttps://<your-worker>.workers.dev/mcp\n```\n\n- **Claude.ai** — Settings → Connectors → **Add custom connector** → paste the `/mcp` URL. Leave Client ID and Client Secret blank. On first use, Claude opens a Google sign-in flow; grant the access requested by the deployment and the connector turns green.\n- **Cursor** — add it as a custom MCP server pointing at the same `/mcp` URL.\n- **ChatGPT** (with connector/MCP support) — add a custom connector with the `/mcp` URL.\n\nAny MCP-compatible client works — they all point at the same `/mcp` endpoint and share the same OAuth flow.\n\n## Setup\n\nSelf-hosting means bringing your own Google OAuth credentials and Cloudflare account. The full, copy-pasteable walkthrough is in **[SETUP.md](SETUP.md)** — including an important note about Google's OAuth verification and the 7-day refresh-token limit while your app is unverified.\n\nQuick shape:\n\n```bash\ngit clone https://github.com/<you>/mcp-gsc.git\ncd mcp-gsc\nnpm install\ncp wrangler.example.jsonc wrangler.jsonc       # then paste in your KV ids\n# set GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET / TOKEN_ENCRYPTION_KEY as secrets\n# choose GSC_ACCESS_MODE=readonly in wrangler.jsonc for a read-only deployment\nnpm run deploy\n```\n\nSee **[SETUP.md](SETUP.md)** for every step in detail.\n\n## Development\n\n```bash\nnpm install\nnpm test              # typecheck + offline unit tests (what CI runs)\nnpm run dev           # wrangler dev (local)\nnpm run test:smoke    # structural smoke tests against a deployment\n```\n\nContributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE) © 2026 DigestSEO.\n\n---\n\n*Built and maintained by [Tomi Šeregi](https://tomiseregi.si), the builder behind [digestseo.com](https://digestseo.com) — weekly SEO digests for non-technical site owners.*\n",
  "bytes": 9196,
  "sha": "1a7be6f36c0b003d03766d8f7d0f432519834bbea06bc16778ead47f5eb59710",
  "repo_slug": "akzar1el/mcp-gsc",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_akzar1el_mcp_gsc_be2a4342/readme"
}