Provides tools for querying search performance analytics including clicks, impressions, and CTR, inspecting URL indexing status and crawl issues, and managing sitemaps for Google Search Console properties.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GSC MCP ServerShow me my top 10 keywords by clicks from the last 30 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GSC MCP Server
A Model Context Protocol (MCP) server for Google Search Console. Query your search analytics, inspect URLs, and manage sitemaps directly from Claude, ChatGPT, or any MCP client.
Want a hosted solution? Ekamoira offers a fully-managed GSC MCP server with OAuth authentication, no setup required. Just connect your Google account and start querying.
Features
Search Analytics: Query clicks, impressions, CTR, and position data with flexible filtering
Site Management: List all your GSC properties with permission levels
URL Inspection: Check indexing status, crawl issues, and mobile usability
Sitemap Management: List, submit, and delete sitemaps
Quick Start
Prerequisites
Node.js 20+
A Google Cloud project with Search Console API enabled
OAuth 2.0 credentials (Desktop app type)
Installation
git clone https://github.com/soumyadeep-ux/gsc-mcp-server.git
cd gsc-mcp-server
npm install
cp .env.example .envEdit .env with your Google credentials:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secretFirst-Time Authentication
npm run authThis opens your browser for Google OAuth consent and saves the token locally.
Connect to Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"gsc": {
"command": "node",
"args": ["/absolute/path/to/gsc-mcp-server/dist/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-secret"
}
}
}
}Build and restart Claude Desktop:
npm run build
# Restart Claude DesktopConnect to Cursor
# Add via CLI
npx cursor-mcp add gsc-mcp-server node /absolute/path/to/gsc-mcp-server/dist/index.jsAvailable Tools
Tool | Description |
| List all your GSC properties with permission levels |
| Query search performance data with filters |
| Check URL indexing status, crawl info, and mobile usability |
| List all submitted sitemaps with status |
| Submit a new sitemap |
| Remove a sitemap |
Example Prompts
Try these prompts in Claude:
"List all my Search Console sites"
"What are my top 10 keywords by clicks this month?"
"Show me queries with more than 1000 impressions but CTR below 2%"
"What keywords are driving traffic to my /blog page?"
"Compare my search performance for the last 7 days vs the previous 7 days"
"Is https://example.com/pricing indexed by Google?"
"Check the indexing status of my homepage"
"List all sitemaps submitted to my site"
"Submit https://example.com/sitemap.xml to Search Console"
Configuration
Environment Variables
Variable | Required | Description |
| Yes | Google OAuth 2.0 Client ID |
| Yes | Google OAuth 2.0 Client Secret |
| No | Path to service account JSON (alternative to OAuth) |
| No | Token storage path (default: |
| No | Default GSC property URL |
| No | Log level: debug/info/warn/error (default: info) |
Service Account Authentication
For automated/server environments, you can use a service account instead of OAuth:
Create a service account in Google Cloud Console
Grant it access in Google Search Console (add as user)
Download the JSON key file
Set
GSC_SERVICE_ACCOUNT_PATHin your environment
GSC_SERVICE_ACCOUNT_PATH=/path/to/service-account.jsonDevelopment
npm run dev # Watch mode with hot reload
npm run build # Compile TypeScript
npm run lint # Check code style
npm run typecheck # Type checking
npm run test # Run testsTesting with MCP Inspector
npm run build
npm run inspectorAlternatives
Option | Best For | Link |
This repo | Developers who want full control and self-hosting | You're here! |
Ekamoira GSC MCP | Users who want zero setup, works immediately |
Ekamoira's Hosted Solution
If you don't want to manage credentials or run your own server, Ekamoira offers:
One-click Google OAuth connection
No local setup or credentials management
Works with Claude.ai, ChatGPT, Claude Desktop, and Cursor
30-day free trial
Additional SEO tools beyond GSC
Troubleshooting
"Token expired" errors
rm token.json
npm run auth"API not enabled" error
Go to Google Cloud Console
APIs & Services > Enable APIs
Search for "Search Console API"
Click Enable
"Permission denied" errors
Verify you have access to the GSC property
Check that OAuth scopes include
webmastersTry re-authenticating with
npm run auth
Claude Desktop not showing tools
Verify JSON syntax in config file
Use absolute paths (not relative)
Restart Claude Desktop completely
Check logs at
~/Library/Logs/Claude/(macOS)
Contributing
Contributions are welcome! Please:
Fork the repo
Create a feature branch
Make your changes
Run
npm run lint && npm run typecheck && npm testSubmit a PR
License
MIT
Credits
Built with the Model Context Protocol SDK.
Inspired by Ekamoira, an AI-powered SEO platform.
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.