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