Skip to main content
Glama
AminForou

GSC MCP Server v2 - Remote Edition

by AminForou
README.mdβ€’7.03 kB
# πŸ” 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](https://img.shields.io/badge/MCP-Compatible-00ff88) ![Python](https://img.shields.io/badge/Python-3.11+-blue) ![License](https://img.shields.io/badge/License-MIT-green) ## ✨ 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](https://console.cloud.google.com/) 2. Create a new project or select existing 3. Enable APIs: - [Search Console API](https://console.cloud.google.com/apis/library/searchconsole.googleapis.com) - [Indexing API](https://console.cloud.google.com/apis/library/indexing.googleapis.com) (optional) 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](https://railway.app/button.svg)](https://railway.app/template) 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 ```bash # 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 ```bash # 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**: ```json { "mcpServers": { "gscServer": { "command": "npx", "args": ["-y", "mcp-remote", "https://your-domain.com/mcp/USER_API_KEY/sse"] } } } ``` 5. **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](LICENSE) file. ## πŸ‘¨β€πŸ’» Author **Amin Foroutan** - SEO Consultant & Developer - 🌐 [aminforoutan.com](https://aminforoutan.com/) - πŸ’Ό [LinkedIn](https://www.linkedin.com/in/ma-foroutan/) - 🐦 [Twitter](https://x.com/aminfseo) - πŸ“Ί [YouTube](https://www.youtube.com/channel/UCW7tPXg-rWdH4YzLrcAdBIw) --- ⭐ If you find this useful, please star the repo!

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