Skip to main content
Glama
AminForou

GSC MCP Server v2 - Remote Edition

by AminForou

πŸ” GSC MCP Server v2 - Remote Edition

A hosted MCP server that connects Claude AI to Google Search Console with OAuth 2.0 web authentication. Users simply sign in with Googleβ€”no API keys or credentials to manage!

MCP Python License

✨ What's Different About v2?

Feature

v1 (Local)

v2 (Remote)

Authentication

Local credentials file

OAuth 2.0 web flow

Setup

Complex

Just sign in with Google!

Hosting

Your machine

Any cloud platform

Multi-user

Single user

Multiple users supported

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” OAuth 2.0 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ User's β”‚ ──────────────────→│ Your Hosted β”‚ β”‚ Browser │←──────────────────→│ MCP Server β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” MCP over SSE β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Claude Desktop β”‚ ←─────────────────→│ Stored User Token β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Google Search β”‚ β”‚ Console API β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

1. Set Up Google OAuth (Web Application)

  1. Go to Google Cloud Console

  2. Create a new project or select existing

  3. Enable APIs:

  4. Go to Credentials β†’ Create Credentials β†’ OAuth client ID

  5. Select Web application

  6. Add authorized redirect URI: https://your-domain.com/oauth/callback

  7. Save your Client ID and Client Secret

2. Deploy

Option A: Railway (Easiest)

Deploy on Railway

  1. Click the button above

  2. Set environment variables:

    • GOOGLE_CLIENT_ID

    • GOOGLE_CLIENT_SECRET

    • GOOGLE_REDIRECT_URI (your Railway URL + /oauth/callback)

    • BASE_URL (your Railway URL)

Option B: Docker

# Build docker build -t gsc-mcp-server . # Run docker run -p 8000:8000 \ -e GOOGLE_CLIENT_ID="your-client-id" \ -e GOOGLE_CLIENT_SECRET="your-secret" \ -e GOOGLE_REDIRECT_URI="https://your-domain.com/oauth/callback" \ -e BASE_URL="https://your-domain.com" \ -v ./data:/app/data \ gsc-mcp-server

Option C: Manual

# Clone git clone https://github.com/AminForou/google-search-console-mcp-v2.git cd google-search-console-mcp-v2 # Install pip install -r requirements.txt # Set environment variables export GOOGLE_CLIENT_ID="your-client-id" export GOOGLE_CLIENT_SECRET="your-secret" export GOOGLE_REDIRECT_URI="http://localhost:8000/oauth/callback" # Run uvicorn gsc_server_remote:app --host 0.0.0.0 --port 8000

3. User Flow

  1. Users visit your server β†’ https://your-domain.com

  2. Click "Sign in with Google" β†’ OAuth flow

  3. Get unique API key β†’ Displayed after login

  4. Configure Claude Desktop:

{ "mcpServers": { "gscServer": { "command": "npx", "args": ["-y", "mcp-remote", "https://your-domain.com/mcp/USER_API_KEY/sse"] } } }
  1. Start chatting! β†’ "List my GSC properties"

πŸ› οΈ Available Tools

Tool

Description

list_properties

List all GSC properties

get_search_analytics

Search performance data

get_performance_overview

Performance summary

find_keyword_opportunities

Find ranking opportunities

get_top_pages

Top performing pages

get_device_comparison

Mobile vs desktop

get_country_breakdown

Traffic by country

inspect_url

URL indexing status

get_sitemaps

List sitemaps

submit_sitemap

Submit new sitemap

request_indexing

Request URL indexing

export_analytics

Export to CSV/JSON

πŸ”’ Security Considerations

  • HTTPS Required: Always use HTTPS in production

  • API Keys: Each user gets a unique key - treat it like a password

  • Token Storage: Uses SQLite by default - use PostgreSQL for production

  • CORS: Restrict origins in production

  • Rate Limiting: Add rate limiting for production

πŸ“ Project Structure

google-search-console-mcp-v2/ β”œβ”€β”€ gsc_server_remote.py # Main server application β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ Dockerfile # Docker configuration β”œβ”€β”€ .gitignore # Git ignore rules └── README.md # This file

🌐 Environment Variables

Variable

Required

Description

GOOGLE_CLIENT_ID

βœ…

OAuth client ID

GOOGLE_CLIENT_SECRET

βœ…

OAuth client secret

GOOGLE_REDIRECT_URI

βœ…

OAuth callback URL

BASE_URL

⚑

Public server URL

SECRET_KEY

⚑

Session encryption key

DATABASE_PATH

❌

SQLite path (default: gsc_tokens.db)

πŸ“Š API Endpoints

Endpoint

Method

Description

/

GET

Home page with login

/oauth/login

GET

Start OAuth flow

/oauth/callback

GET

OAuth callback

/oauth/revoke/{user_id}

GET

Revoke user access

/mcp/{user_id}/sse

GET

MCP SSE endpoint

/health

GET

Health check

/api/status/{user_id}

GET

User auth status

🀝 Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Submit a pull request

πŸ“„ License

MIT License - see LICENSE file.

πŸ‘¨β€πŸ’» Author

Amin Foroutan - SEO Consultant & Developer


⭐ If you find this useful, please star the repo!

-
security - not tested
A
license - permissive license
-
quality - not tested

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/AminForou/google-search-console-mcp-v2'

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