Skip to main content
Glama
devbyray

search-console-mcp

by devbyray

search-console-mcp

Superfast, stdio-first MCP server for Google Search Console with:

  • Fast startup

  • Typed tool inputs

  • In-memory TTL caching + request coalescing

  • OAuth 2.0 refresh-token authentication

Features

Available MCP tools:

  1. list_sites

  2. query_performance

  3. inspect_url

  4. list_sitemaps

  5. get_sitemap

Related MCP server: google-search-console-mcp-python

Requirements

  • Node.js 20+

  • pnpm 9+

  • Google Search Console property access

  • OAuth client credentials + refresh token

Quick Start (Plug & Play)

  1. Get your refresh token (one-time setup):

pnpm install
pnpm auth

This will:

  • Prompt for your Client ID and Secret

  • Open your browser for authorization

  • Save credentials to .env automatically

  1. Build and run:

pnpm build
pnpm start

That's it! The server reads credentials from .env automatically.

Getting Credentials

Step 1: Create OAuth Client ID on Google Cloud Console

  1. Go to Google Cloud Console

  2. Create a new project (or use an existing one)

  3. Enable the Google Search Console API:

    • Navigate to "APIs & Services" → "Library"

    • Search for "Google Search Console API"

    • Click "Enable"

  4. Create OAuth 2.0 credentials:

    • Go to "APIs & Services" → "Credentials"

    • Click "Create Credentials" → "OAuth client ID"

    • Choose "Desktop application" or "Web application"

    • Add redirect URI: http://localhost:9876 (unique port to avoid conflicts)

    • Copy the Client ID and Client Secret

Step 2: Get Refresh Token

Easiest way — use the built-in script:

pnpm install
pnpm auth

This will:

  1. Prompt for Client ID and Secret

  2. Open your browser for authorization

  3. Automatically save to .env

Manual alternative if needed — use Google's OAuth 2.0 Playground:

  1. Configure the OAuth Client ID (gear icon)

  2. Use scope: https://www.googleapis.com/auth/webmasters

  3. Authorize and copy the refresh token

Step 3: Find Your Search Console Site URL

  1. Go to Google Search Console

  2. Select your property

  3. In the URL bar, you'll see a property like:

    • sc-domain:example.com (domain property)

    • https://example.com (URL prefix property)

  4. Copy this value as your GSC_SITE_URL

Setup

After pnpm auth creates your .env, you're ready to go:

pnpm build
pnpm start

The server automatically reads GSC_CLIENT_ID, GSC_CLIENT_SECRET, GSC_REFRESH_TOKEN, and GSC_SITE_URL from .env.

Manual .env Setup (optional)

If you prefer to create .env manually:

cat > .env << 'EOF'
GSC_CLIENT_ID="your-client-id"
GSC_CLIENT_SECRET="your-client-secret"
GSC_REFRESH_TOKEN="your-refresh-token"
GSC_SITE_URL="sc-domain:example.com"
GSC_CACHE_TTL_MS="30000"
GSC_HTTP_TIMEOUT_MS="12000"
GSC_HTTP_RETRIES="2"
EOF

Then run:

pnpm build
pnpm start

Docker

Build image:

docker build -t search-console-mcp .

Run with .env file (easiest):

docker run --rm -i --env-file .env search-console-mcp

Or pass env vars directly:

docker run --rm -i \
	-e GSC_CLIENT_ID="your-client-id" \
	-e GSC_CLIENT_SECRET="your-client-secret" \
	-e GSC_REFRESH_TOKEN="your-refresh-token" \
	-e GSC_SITE_URL="sc-domain:example.com" \
	search-console-mcp

AI Agent Integration

Claude Desktop

This is the most reliable Claude Desktop setup: no custom connector UI, no remote URL, no TLS hassle.

  1. Build image:

docker build -t search-console-mcp .
  1. Add this to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
	"mcpServers": {
		"search-console": {
			"command": "docker",
			"args": [
				"run",
				"--rm",
				"-i",
				"--env-file",
				"/absolute/path/search-console-mcp/.env",
				"search-console-mcp"
			]
		}
	}
}

Example absolute path:

/Users/devbyray/Projects/devbyrayray/search-console-mcp/.env
  1. Restart Claude Desktop.

Option 2: Local Node.js process (stdio)

{
	"mcpServers": {
		"search-console": {
			"command": "bash",
			"args": ["-c", "cd /absolute/path/search-console-mcp && source .env && pnpm start"]
		}
	}
}

Option 3: Custom Connector UI (remote MCP URL)

Use this only when you have a real remote endpoint.

  • URL must be https://.../mcp

  • Certificate must be trusted by Claude (public CA certificate)

  • localhost + self-signed certificates may fail in Custom Connector mode

For local development, prefer Option 1 or 2.

Claude Code (VS Code Extension)

Create .env.local in your project, then add to VS Code settings:

{
	"claude.mcpServers": {
		"search-console": {
			"command": "bash",
			"args": ["-c", "cd /absolute/path/search-console-mcp && source .env && node dist/index.js"]
		}
	}
}

GitHub Copilot

Best approach: Use .env with the server:

source .env && pnpm start

Then configure Copilot CLI to connect to the running server.

Docker Integration for AI Agents

For containerized deployments, use .env:

docker build -t search-console-mcp .
docker run --rm -i --env-file .env search-console-mcp

Other MCP Clients

All MCP clients can read .env files. Example configuration structure:

{
	"command": "bash",
	"args": ["-c", "cd /path/to/search-console-mcp && source .env && node dist/index.js"]
}

Or pass env vars directly from your .env file to the client configuration.

MCP Client Configuration Example

Generic reference (use .env for actual values):

{
	"mcpServers": {
		"search-console": {
			"command": "node",
			"args": ["/absolute/path/search-console-mcp/dist/index.js"],
			"env": {
				"GSC_CLIENT_ID": "your-client-id",
				"GSC_CLIENT_SECRET": "your-client-secret",
				"GSC_REFRESH_TOKEN": "your-refresh-token",
				"GSC_SITE_URL": "sc-domain:example.com"
			}
		}
	}
}

OAuth Refresh Token Notes

Use any OAuth 2.0 flow that produces a Google refresh token for the same client ID/secret pair. The server only needs the refresh token and will rotate access tokens automatically.

Development

pnpm dev

Tests:

pnpm test

Lint:

pnpm lint

Troubleshooting

  • Missing required environment variable: check all required GSC_* vars.

  • token_refresh_failed: verify OAuth client ID/secret and refresh token pair.

  • google_api_error with 403: verify account access to the requested property.

  • 429/5xx: retries are automatic; reduce request volume or increase interval between calls.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/devbyray/search-console-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server