# Google Search Console

Brings Search Console data into your AI agent: analytics, indexing, sitemaps and SEO diagnostics without leaving the chat.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: AKzar1el
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/AKzar1el/mcp-gsc
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/akzar1el-google-search-console

## What it does

The server runs as a loopback-only Streamable HTTP Worker on `127.0.0.1`, port `8080` unless you change it. It is not a stdio MCP process. Start it with `npx -y @digestseo/mcp-gsc`, then point your client at `http://127.0.0.1:8080/mcp`. Before the first sign-in you need a Google Cloud OAuth app with the exact callback `http://127.0.0.1:8080/google/callback` authorized.

Miss any of `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` or `TOKEN_ENCRYPTION_KEY` and the launcher stops before Wrangler starts. The encryption key has to be valid base64 that decodes to exactly 32 bytes, or startup is rejected too. Local state, including the encrypted Google session, lives in `~/.mcp-gsc/state`; if you move it with `MCP_GSC_STATE_DIR`, keep the same key or stored refresh tokens will not decrypt.

The default access mode is `GSC_ACCESS_MODE=readwrite`. Set it to `readonly` when you only want reporting: OAuth then asks for the read scope alone and the tools that change data are never registered. Cursor Cloud Agents cannot use the loopback address at all, since they run in isolated cloud VMs — those need your own HTTPS Worker.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `PORT`, `GSC_ACCESS_MODE`, `MCP_GSC_STATE_DIR`, `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `TOKEN_ENCRYPTION_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PORT=<PORT> --env GSC_ACCESS_MODE=<GSC_ACCESS_MODE> --env MCP_GSC_STATE_DIR=<MCP_GSC_STATE_DIR> --env GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> --env GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> --transport stdio akzar1el-google-search-console -- npx -y @digestseo/mcp-gsc
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Codex

**Platform CLI**
```bash
codex mcp add akzar1el-google-search-console --env PORT=<PORT> --env GSC_ACCESS_MODE=<GSC_ACCESS_MODE> --env MCP_GSC_STATE_DIR=<MCP_GSC_STATE_DIR> --env GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> --env GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> -- npx -y @digestseo/mcp-gsc
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "akzar1el-google-search-console": {
            "command": "npx",
            "args": [
                "-y",
                "@digestseo/mcp-gsc"
            ],
            "env": {
                "PORT": "<PORT>",
                "GSC_ACCESS_MODE": "<GSC_ACCESS_MODE>",
                "MCP_GSC_STATE_DIR": "<MCP_GSC_STATE_DIR>",
                "GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
                "GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "akzar1el-google-search-console": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@digestseo/mcp-gsc"
            ],
            "env": {
                "PORT": "<PORT>",
                "GSC_ACCESS_MODE": "<GSC_ACCESS_MODE>",
                "MCP_GSC_STATE_DIR": "<MCP_GSC_STATE_DIR>",
                "GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
                "GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PORT=<PORT> -e GSC_ACCESS_MODE=<GSC_ACCESS_MODE> -e MCP_GSC_STATE_DIR=<MCP_GSC_STATE_DIR> -e GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> -e GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> akzar1el-google-search-console npx -y @digestseo/mcp-gsc
```
Replace <…> with your own values. 1 more environment variable is in the server README

## When to use it
- spot queries where impressions are slipping
- list pages that dropped out of the index
- check sitemap status and crawl errors
- pull a clicks-and-positions report for a date range
- find pages with high impressions and low CTR

## Example prompts
- Show queries where impressions dropped over the last 28 days
- Which pages fell out of the index, and what should I fix first?
- Report on sitemaps: what was submitted and where the errors are

## Similar
- [New-Term Radar](https://affpapa.org/en/nevibecode/mcp/new-term-radar.md) — MCP server · ★ 1823
- [NotFair](https://affpapa.org/en/nevibecode/mcp/notfair.md) — MCP server · ★ 4064
- [seo-monster](https://affpapa.org/en/nevibecode/mcp/seo-monster.md) — MCP server · ★ 555
- [Google Maps MCP Server](https://affpapa.org/en/nevibecode/mcp/google-maps-mcp-server.md) — MCP server · ★ 484
- [Search Console MCP](https://affpapa.org/en/nevibecode/mcp/search-console-mcp.md) — MCP server · ★ 310
- [squirrelscan](https://affpapa.org/en/nevibecode/mcp/squirrelscan.md) — MCP server · ★ 298

## Other versions with the same name
- [Google Search Console · acamolese](https://affpapa.org/en/nevibecode/mcp/google-search-console.md) — ★ 9

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
