seo-mcp
@patchwindow/seo-mcp
MCP server for Google Search Console and Bing Webmaster Tools. Give your AI assistant live access to search performance data, indexing status, keyword research, crawl health, and more — directly in the chat.
Features
10 SEO tools across Google Search Console and Bing Webmaster Tools
Keyword research via Bing — search volume and related keywords not available in GSC
Traffic drop analysis — automatically compare two periods and surface the biggest drops
Striking distance finder — identify queries in positions 4–20 ready for quick ranking gains
Brand vs. non-brand split — segment traffic without leaving your AI chat
Dual URL inspection — inspect any URL in both Google and Bing simultaneously
Simple auth — Bing needs one env var; GSC uses a one-time OAuth2 flow with auto-refreshing tokens
Config file defaults — set your site URL once, skip it on every tool call
Related MCP server: MCP by Amal Alexander
Installation
Install globally:
npm install -g @patchwindow/seo-mcpOr run without installing:
npx @patchwindow/seo-mcpSetup
Bing Webmaster Tools
Bing uses an API key. No OAuth required.
Go to Bing Webmaster Tools
Navigate to Settings → API Access
Generate an API key
Set the environment variable:
export BING_WEBMASTER_API_KEY="your-api-key"That's it.
Google Search Console
GSC requires OAuth2. Service accounts do not work with the Search Console API — user credentials are required.
Step 1: Create a Google Cloud project
Go to Google Cloud Console
Create a new project (or select an existing one)
Go to APIs & Services → Library
Search for Google Search Console API and enable it
Step 2: Create OAuth2 credentials
Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
Choose Web application as the application type
Under Authorized redirect URIs, add:
http://localhost:3847/callbackCopy the Client ID and Client Secret
Step 3: Authenticate (one-time)
Set your credentials as environment variables, then run the auth command:
export GSC_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GSC_CLIENT_SECRET="your-client-secret"
npx @patchwindow/seo-mcp auth gscA browser window opens for Google login. After approving, the token is saved to ~/.seo-mcp/gsc-token.json. You only need to do this once — the token refreshes automatically.
Config File (optional)
Create ~/.seo-mcp/config.json to set default site URLs. This lets you skip the site_url parameter on every tool call:
{
"gsc": {
"default_site": "sc-domain:example.com"
},
"bing": {
"default_site": "https://example.com/"
},
"output": {
"max_rows": 500
}
}GSC site URL format: Use sc-domain:example.com for domain properties or https://example.com/ for URL prefix properties. Check which type you have in Search Console under your property settings.
Claude Desktop Integration
Add the following to your claude_desktop_config.json (typically at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"seo": {
"command": "npx",
"args": ["@patchwindow/seo-mcp"],
"env": {
"BING_WEBMASTER_API_KEY": "your-bing-api-key",
"GSC_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GSC_CLIENT_SECRET": "your-client-secret"
}
}
}
}Cursor / Windsurf (.cursor/mcp.json or mcp.json):
{
"seo-mcp": {
"command": "npx",
"args": ["@patchwindow/seo-mcp"],
"env": {
"BING_WEBMASTER_API_KEY": "your-bing-api-key",
"GSC_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GSC_CLIENT_SECRET": "your-client-secret"
}
}
}Restart your AI client after saving the config.
Tools Reference
* = not required if default_site is set in ~/.seo-mcp/config.json.
Google Search Console
Tool | Description | Required params | Optional params |
| Clicks, impressions, CTR, and position. Supports grouping by query, page, country, device, or date. |
|
|
| Queries in positions 4–20 sorted by impressions — best candidates for quick ranking improvements. |
|
|
| Compare two date periods and surface pages or queries with the largest click drops. |
|
|
| Indexing status, crawl date, canonical URL, page fetch state, rich results, and mobile usability for a specific URL. |
|
|
| All sitemaps submitted to GSC with status, URL counts, indexed counts, and error summary. | — |
|
| Split search traffic into branded and non-branded segments with aggregated clicks, impressions, CTR, and position. |
|
|
Bing Webmaster Tools
Tool | Description | Required params | Optional params |
| Monthly search volume and related keywords from Bing. This data is exclusive to Bing — not available in GSC. |
|
|
| Crawl statistics (total crawled, errors by type: 4xx, timeouts, DNS failures, blocked) and a list of specific crawl issues. | — |
|
| HTTP status, indexing state, crawl date, page title, internal/external link counts, and redirect target for a URL. |
|
|
| Sitemaps registered in Bing Webmaster Tools with URL counts, indexed counts, errors, and last crawl time. | — |
|
Parameter details
Parameter | Type | Description |
| string | GSC site URL ( |
| string | Start date, YYYY-MM-DD |
| string | End date, YYYY-MM-DD |
| array | Group by: |
| string | Filter to queries containing this string |
| string | Filter to this exact page URL |
| string |
|
| string | ISO 3166-1 alpha-3 country code, e.g. |
| number | Max rows. Default: 100. Max: 25000 |
Parameter | Type | Description |
| string | GSC site URL |
| string | Start date, YYYY-MM-DD |
| string | End date, YYYY-MM-DD |
| number | Min position to include. Default: 4 |
| number | Max position to include. Default: 20 |
| number | Min impressions to include. Default: 10 |
| number | Max results. Default: 50 |
Parameter | Type | Description |
| string | GSC site URL |
| string | Current period start, YYYY-MM-DD |
| string | Current period end, YYYY-MM-DD |
| string | Previous period start, YYYY-MM-DD |
| string | Previous period end, YYYY-MM-DD |
| string |
|
| number | Minimum drop % to flag. Default: 20 |
| number | Minimum clicks in previous period. Default: 5 |
| number | Max results. Default: 25 |
Parameter | Type | Description |
| string | GSC site URL |
| string | Start date, YYYY-MM-DD |
| string | End date, YYYY-MM-DD |
| array | Brand terms to match, case-insensitive. E.g. |
| boolean | Include top 10 queries per segment. Default: true |
Parameter | Type | Description |
| string | The keyword to research |
| string | Bing site URL |
| string | Two-letter country code, e.g. |
| string | Language code, e.g. |
| boolean | Include related keywords. Default: true |
Parameter | Type | Description |
| string | Bing site URL |
| boolean | Include specific crawl issues. Default: true |
| number | Max issues to show. Default: 20 |
Examples
Ask your AI assistant:
Find quick wins for content optimization:
"Show me my top striking distance queries for the last 90 days. I want queries where I'm ranking between 5 and 15 with at least 50 impressions."
Diagnose a traffic drop:
"Compare my search traffic for April 2025 vs April 2024 by page. Flag anything that dropped more than 30%."
Research a topic before writing:
"Research the keyword 'typescript performance' in Bing. Show me monthly search volume and the top related keywords."
Audit indexing:
"Inspect the URL https://example.com/blog/my-post and tell me its indexing status, canonical URL, and whether it's eligible for rich results."
Understand brand exposure:
"Split my search traffic for Q1 2025 into branded and non-branded. My brand terms are 'acme' and 'acmecorp'. Show me the top 10 queries for each segment."
Roadmap
Planned for v2:
gsc_top_pages— top pages by traffic with trend comparisonbing_link_counts— inbound link data (not available in GSC API)bing_url_submit— trigger reindexing for new or updated URLsgsc_batch_url_inspection— inspect a list of URLs with rate-limit handlingbing_crawl_settings— read and update Bing crawl frequency settingsMulti-site support — switch between properties without reconfiguring
Building from Source
git clone https://github.com/patchwindow/seo-mcp
cd seo-mcp
npm install
npm run buildContributing
Issues and pull requests are welcome. Please open an issue before starting work on a significant change.
License
MIT — Patch Window
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceA lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.7Apache 2.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that connects AI assistants to SEO platforms like Google Search Console, GA4, Bing Webmaster Tools, and Adobe Analytics, enabling natural language queries about SEO performance.2,582MIT
- FlicenseAqualityDmaintenanceAn MCP server that provides Google Analytics and Search Console data as tools for AI assistants, enabling natural language queries for web analytics, SEO performance, and site insights.13
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server that connects Google Search Console to AI assistants, enabling natural language queries about search analytics, sitemaps, and URL inspection data.MIT
Related MCP Connectors
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
An MCP server that integrates with Discord to provide AI-powered features.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/patchwindow/seo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server