Skip to main content
Glama
patchwindow

seo-mcp

by patchwindow

@patchwindow/seo-mcp

npm version License: MIT Node.js >= 20

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-mcp

Or run without installing:

npx @patchwindow/seo-mcp

Setup

Bing Webmaster Tools

Bing uses an API key. No OAuth required.

  1. Go to Bing Webmaster Tools

  2. Navigate to Settings → API Access

  3. Generate an API key

  4. 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

  1. Go to Google Cloud Console

  2. Create a new project (or select an existing one)

  3. Go to APIs & Services → Library

  4. Search for Google Search Console API and enable it

Step 2: Create OAuth2 credentials

  1. Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID

  2. Choose Web application as the application type

  3. Under Authorized redirect URIs, add:

    http://localhost:3847/callback
  4. Copy 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 gsc

A 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

gsc_search_performance

Clicks, impressions, CTR, and position. Supports grouping by query, page, country, device, or date.

start_date, end_date

site_url*, dimensions, filter_query, filter_page, filter_device, filter_country, row_limit

gsc_striking_distance

Queries in positions 4–20 sorted by impressions — best candidates for quick ranking improvements.

start_date, end_date

site_url*, min_position, max_position, min_impressions, row_limit

gsc_traffic_drop

Compare two date periods and surface pages or queries with the largest click drops.

current_start, current_end, previous_start, previous_end

site_url*, dimension, min_drop_percent, min_clicks_previous, row_limit

gsc_url_inspection

Indexing status, crawl date, canonical URL, page fetch state, rich results, and mobile usability for a specific URL.

url

site_url*

gsc_sitemap_list

All sitemaps submitted to GSC with status, URL counts, indexed counts, and error summary.

site_url*

gsc_brand_nonbrand

Split search traffic into branded and non-branded segments with aggregated clicks, impressions, CTR, and position.

start_date, end_date, brand_terms

site_url*, show_top_queries

Bing Webmaster Tools

Tool

Description

Required params

Optional params

bing_keyword_research

Monthly search volume and related keywords from Bing. This data is exclusive to Bing — not available in GSC.

keyword

site_url*, country, language, include_related

bing_crawl_health

Crawl statistics (total crawled, errors by type: 4xx, timeouts, DNS failures, blocked) and a list of specific crawl issues.

site_url*, show_issues, max_issues

bing_url_inspection

HTTP status, indexing state, crawl date, page title, internal/external link counts, and redirect target for a URL.

url

site_url*

bing_sitemap_list

Sitemaps registered in Bing Webmaster Tools with URL counts, indexed counts, errors, and last crawl time.

site_url*

Parameter details

Parameter

Type

Description

site_url

string

GSC site URL (sc-domain:example.com or https://example.com/)

start_date

string

Start date, YYYY-MM-DD

end_date

string

End date, YYYY-MM-DD

dimensions

array

Group by: query, page, country, device, date. Default: ["query"]

filter_query

string

Filter to queries containing this string

filter_page

string

Filter to this exact page URL

filter_device

string

DESKTOP, MOBILE, or TABLET

filter_country

string

ISO 3166-1 alpha-3 country code, e.g. USA

row_limit

number

Max rows. Default: 100. Max: 25000

Parameter

Type

Description

site_url

string

GSC site URL

start_date

string

Start date, YYYY-MM-DD

end_date

string

End date, YYYY-MM-DD

min_position

number

Min position to include. Default: 4

max_position

number

Max position to include. Default: 20

min_impressions

number

Min impressions to include. Default: 10

row_limit

number

Max results. Default: 50

Parameter

Type

Description

site_url

string

GSC site URL

current_start

string

Current period start, YYYY-MM-DD

current_end

string

Current period end, YYYY-MM-DD

previous_start

string

Previous period start, YYYY-MM-DD

previous_end

string

Previous period end, YYYY-MM-DD

dimension

string

page or query. Default: page

min_drop_percent

number

Minimum drop % to flag. Default: 20

min_clicks_previous

number

Minimum clicks in previous period. Default: 5

row_limit

number

Max results. Default: 25

Parameter

Type

Description

site_url

string

GSC site URL

start_date

string

Start date, YYYY-MM-DD

end_date

string

End date, YYYY-MM-DD

brand_terms

array

Brand terms to match, case-insensitive. E.g. ["acme", "acmecorp"]

show_top_queries

boolean

Include top 10 queries per segment. Default: true

Parameter

Type

Description

keyword

string

The keyword to research

site_url

string

Bing site URL

country

string

Two-letter country code, e.g. US. Default: US

language

string

Language code, e.g. en-US. Default: en-US

include_related

boolean

Include related keywords. Default: true

Parameter

Type

Description

site_url

string

Bing site URL

show_issues

boolean

Include specific crawl issues. Default: true

max_issues

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 comparison

  • bing_link_counts — inbound link data (not available in GSC API)

  • bing_url_submit — trigger reindexing for new or updated URLs

  • gsc_batch_url_inspection — inspect a list of URLs with rate-limit handling

  • bing_crawl_settings — read and update Bing crawl frequency settings

  • Multi-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 build

Contributing

Issues and pull requests are welcome. Please open an issue before starting work on a significant change.


License

MIT — Patch Window

Available Tools

10 tools
bing_crawl_healthA

Get crawl statistics and crawl issues from Bing Webmaster Tools. Shows crawl frequency, error counts by type (4xx, timeouts, DNS failures, blocked), and a list of specific crawl problems.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoYour site URL in Bing Webmaster Tools, e.g. 'https://example.com/'. Uses config default if omitted.
show_issuesNoInclude specific crawl issues. Default: true.
max_issuesNoMax crawl issues to show. Default: 20.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It mentions what data is returned (crawl frequency, error types, problem list) but does not disclose behavioral aspects like authentication needs, rate limits, error handling, or side effects. The verb 'Get' implies read-only, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with front-loaded purpose and specific details. Zero wasted words, efficiently communicates core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the tool's purpose and key output for a 3-parameter tool with no output schema. However, it lacks details on return format or error conditions. Given the absence of output schema, a bit more on expected results would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions (site_url, show_issues, max_issues). The tool description adds context about what the parameters control (e.g., 'specific crawl issues') but does not provide additional meaning beyond what the schema already conveys. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states verb 'Get' and resource 'crawl statistics and crawl issues' from Bing Webmaster Tools, listing specific metrics (crawl frequency, error counts by type, crawl problems). It distinctly differentiates from sibling tools like bing_keyword_research or bing_sitemap_list, which focus on other data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving crawl health data but provides no explicit when-to-use or when-not-to-use guidance versus siblings. No prerequisites or context are given, leaving the agent to infer from the function name and resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bing_keyword_researchA

Research keywords using Bing Webmaster Tools. Returns monthly search volume (impressions) for a keyword and a list of related keywords. This keyword data is exclusive to Bing and not available in Google Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesThe keyword to research.
site_urlNoYour site URL in Bing Webmaster Tools, e.g. 'https://example.com/'. Uses config default if omitted.
countryNoTwo-letter country code (e.g. 'US', 'GB'). Default: 'US'.
languageNoLanguage code (e.g. 'en-US'). Default: 'en-US'.
include_relatedNoInclude related keywords. Default: true.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. It states what is returned (volume, related keywords) but omits details like read-only nature, rate limits, or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences; no wasted words. Purpose and key differentiating fact are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, description covers the main purpose and data source. Could mention return format, but tool is simple enough that context is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. Description adds no extra meaning beyond schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool researches keywords using Bing Webmaster Tools, returns search volume and related keywords, and distinguishes itself from siblings by noting Bing's exclusivity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for Bing keyword data, but lacks explicit guidance on when to use vs alternatives, no when-not or alternative mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bing_sitemap_listA

List all sitemaps submitted to Bing Webmaster Tools for a site, including URL counts, indexed counts, errors, and last crawl time.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoYour site URL in Bing Webmaster Tools, e.g. 'https://example.com/'. Uses config default if omitted.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return contents (URL counts, indexed counts, errors, last crawl time) but does not mention authentication requirements, rate limits, or side effects. For a list tool, it's adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the verb and resource, and efficiently lists included data without extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema, the description sufficiently explains return values (URL counts, indexed counts, errors, last crawl time). No additional context needed for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (site_url) with 100% schema description coverage. The tool description does not further elaborate on the parameter beyond what the schema provides. The schema already describes the parameter clearly, including the default behavior. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list', the resource 'sitemaps submitted to Bing Webmaster Tools', and the specific data included (URL counts, indexed counts, errors, last crawl time). It distinguishes from sibling tools like gsc_sitemap_list by specifying Bing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing Bing sitemap info but does not explicitly state when to use this tool over alternatives (e.g., gsc_sitemap_list). No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bing_url_inspectionA

Inspect a URL's indexing and crawl status in Bing Webmaster Tools. Returns HTTP status, indexing state, crawl date, page title, link counts, and whether the URL is blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe exact URL to inspect.
site_urlNoYour site URL in Bing Webmaster Tools, e.g. 'https://example.com/'. Uses config default if omitted.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool as inspection with no behavioral disclosure (e.g., readOnly, impact on Bing, rate limits). The list of returned fields is helpful but does not cover behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with no wasted words, efficiently conveying the tool's purpose and return data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists key return fields (HTTP status, indexing state, etc.), making it reasonably complete. It could mention error handling or unspecified URL scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds value by noting that site_url uses a config default if omitted, which goes beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inspects a URL's indexing and crawl status in Bing Webmaster Tools, listing specific return values. It is distinct from sibling tools like gsc_url_inspection (Google) and bing_crawl_health (aggregate health).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing to inspect a specific URL's status, but provides no explicit guidance on when not to use it or how it differs from other Bing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_brand_nonbrandA

Split search traffic into branded and non-branded query segments. Returns aggregated clicks, impressions, CTR, and position for each segment, plus top queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com'. Uses config default if omitted.
start_dateYesStart date in YYYY-MM-DD format.
end_dateYesEnd date in YYYY-MM-DD format.
brand_termsYesBrand terms to match against queries (case-insensitive). Any query containing one of these is classified as branded. Example: ['acme', 'acmecorp'].
show_top_queriesNoInclude top 10 branded and non-branded queries. Default: true.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the split is based on brand_terms and returns aggregated metrics and top queries, but lacks details on data source (GSC API), rate limits, data freshness, or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with the tool's core purpose. Every sentence adds essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description partially explains return values but lacks format details (e.g., structure of top queries) and omits prerequisites like GSC access. Adequate but not fully comprehensive for a tool with 5 parameters and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 5 parameters. The description adds value by explaining the output (aggregated clicks, impressions, CTR, position per segment, plus top queries), which goes beyond the schema's parameter-level docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('split') and resource ('search traffic into branded and non-branded query segments') and clearly distinguishes from siblings like gsc_search_performance, which provides overall performance, and gsc_striking_distance, which focuses on near-top pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for brand vs non-brand analysis but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. No guidance on prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_search_performanceC

Query Google Search Console search performance data. Returns clicks, impressions, CTR, and position for a site. Supports filtering by query, page, device, or country and grouping by multiple dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com' or 'https://example.com/'. Uses config default if omitted.
start_dateYesStart date in YYYY-MM-DD format.
end_dateYesEnd date in YYYY-MM-DD format.
dimensionsNoDimensions to group results by. Default: ['query'].
filter_queryNoFilter results to queries containing this string.
filter_pageNoFilter results to this page URL (exact match).
filter_deviceNoFilter results to this device type.
filter_countryNoFilter results to this country (ISO 3166-1 alpha-3, e.g. 'USA').
row_limitNoMax rows to return. Default 100, max 25000.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It states the tool returns data and supports filtering/grouping, but omits details like read-only nature, rate limits, aggregation behavior (daily vs. total), pagination, or data latency. These gaps are significant for a data query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the action and resource. Every sentence adds value with no fluff. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters and no output schema or annotations, the description lacks essential context such as default dimension, behavior when multiple dimensions are combined, row limit impact, and how the date range is sampled (daily vs. aggregated). More detail is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context about return values and operations (e.g., 'Returns clicks, impressions, CTR, and position'), but this information is not critical for parameter usage and doesn't significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries GSC search performance data and lists return fields (clicks, impressions, CTR, position). It mentions filtering and grouping, which distinguishes it from siblings like gsc_brand_nonbrand or gsc_striking_distance, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives, such as gsc_traffic_drop or gsc_brand_nonbrand. No prerequisites or typical scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_sitemap_listA

List all sitemaps submitted to Google Search Console for a site, including their status, URL counts, and last submission date.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com'. Uses config default if omitted.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It reveals the return fields (status, counts, date) but does not disclose read-only nature, auth needs, or behavior on invalid site_url. The disclosure is adequate for a simple list operation but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and concise, with no redundant information. Every word serves the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description provides enough context: it lists sitemaps with status, counts, and date. It doesn't cover prerequisites like site verification, but for a straightforward list operation this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the 'site_url' parameter. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'list' and resource 'sitemaps submitted to Google Search Console', clearly stating what it does and including fields returned (status, URL counts, last submission date). It distinguishes itself from sibling tools that target Bing or other GSC functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives like bing_sitemap_list or other GSC tools. Usage context is implied by the name and description, but no when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_striking_distanceA

Find queries ranking in positions 4–20 (striking distance / low-hanging fruit). These are the best candidates for quick ranking improvements. Results sorted by impressions descending.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com'. Uses config default if omitted.
start_dateYesStart date in YYYY-MM-DD format.
end_dateYesEnd date in YYYY-MM-DD format.
min_positionNoMinimum average position to include. Default: 4.
max_positionNoMaximum average position to include. Default: 20.
min_impressionsNoMinimum impressions to include. Default: 10.
row_limitNoMax rows to return. Default: 50.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description explains the filtering logic (positions 4-20, sorted by impressions descending) and the low-hanging fruit concept. It does not mention destructive actions (none expected) or authentication details, but is generally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences with no wasted words. The main action and value proposition are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not specify the fields returned (e.g., query, impressions, position). Given the complexity (7 params), an agent might need to infer output structure, leaving a completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 7 parameters, so baseline is 3. The description reinforces the default position range but adds no new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'find' and resource 'queries ranking in positions 4–20', and the term 'striking distance / low-hanging fruit' uniquely identifies the tool's niche among siblings like gsc_search_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states these queries are 'best candidates for quick ranking improvements', implying when to use. However, it does not explicitly exclude alternatives or provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_traffic_dropA

Compare two date periods and identify pages or queries with significant traffic drops. Useful for diagnosing algorithm updates, technical issues, or content decay.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com'. Uses config default if omitted.
current_startYesCurrent period start date (YYYY-MM-DD).
current_endYesCurrent period end date (YYYY-MM-DD).
previous_startYesPrevious period start date (YYYY-MM-DD).
previous_endYesPrevious period end date (YYYY-MM-DD).
dimensionNoGroup by page or query. Default: 'page'.
min_drop_percentNoMinimum click drop percentage to flag (e.g. 20 = 20% drop). Default: 20.
min_clicks_previousNoMinimum clicks in previous period to include (filters out low-traffic noise). Default: 5.
row_limitNoMax dropped items to show. Default: 25.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It only states 'identify pages or queries with significant traffic drops' without detailing the comparison mechanism, return format, or potential side effects. The parameter descriptions in the schema partially compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no unnecessary words, front-loading the purpose and secondary sentence providing context. It is efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does not explain what the return format is or the exact metrics compared. It mentions 'traffic drops' but doesn't specify if it's clicks, impressions, etc. The parameter details help fill the gap, but more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional meaning beyond what is in the schema, meeting the baseline for good coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares two date periods and identifies pages or queries with significant traffic drops, using verbs 'compare' and 'identify'. It distinguishes from sibling tools like gsc_search_performance by focusing on drops.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides use cases: 'diagnosing algorithm updates, technical issues, or content decay', giving context for when to use it. It does not explicitly state when not to use it or mention alternatives, but the use cases are relevant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gsc_url_inspectionA

Inspect a URL's indexing status in Google Search Console. Returns crawl date, indexing verdict, canonical URL, rich results eligibility, and mobile usability status.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe exact URL to inspect (must be within the site property).
site_urlNoSite URL in GSC format, e.g. 'sc-domain:example.com'. Uses config default if omitted.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the specific return fields (crawl date, indexing verdict, canonical URL, rich results eligibility, mobile usability status), which are behavioral traits beyond the input schema. However, it does not mention idempotency, rate limits, or auth requirements, which are minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource. Every clause adds value (listing return fields), with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description compensates by enumerating return fields. It covers the main purpose and outputs. Missing are error conditions or prerequisites (e.g., required GSC access), but for a simple inspection tool, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for both parameters ('url' and 'site_url'). The tool description adds no additional parameter meaning beyond the schema, earning the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as inspecting a URL's indexing status in Google Search Console, with a specific verb ('Inspect') and resource. It lists key outputs (crawl date, indexing verdict, canonical URL, rich results eligibility, mobile usability), which distinguishes it from sibling tools like bing_url_inspection (for Bing) and other GSC tools (e.g., gsc_search_performance for aggregated data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for inspecting individual URLs' indexing status, but it does not explicitly state when to use it (e.g., for debugging indexing issues) versus alternatives (e.g., bulk inspection not available). No exclusion criteria or context about prerequisites (e.g., property access) is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.1
    • First observedbing_crawl_health
    • First observedbing_keyword_research
    • First observedbing_sitemap_list
    • First observedbing_url_inspection
    • First observedgsc_brand_nonbrand
    • First observedgsc_search_performance
    • First observedgsc_sitemap_list
    • First observedgsc_striking_distance
    • First observedgsc_traffic_drop
    • First observedgsc_url_inspection

TDQS

A3.8/5.0
Disambiguation5/5

Tools are cleanly separated by platform (Bing vs. Google Search Console) and each has a distinct purpose within its domain, such as crawl health, keyword research, or URL inspection. There is no ambiguity or overlap between tools.

Naming Consistency5/5

All tools follow a consistent pattern of 'platform_descriptive_name' in snake_case (e.g., bing_crawl_health, gsc_search_performance). This makes it easy to understand the purpose of each tool at a glance.

Tool Count5/5

With 10 tools, the server is well-scoped for an SEO assistant covering both Bing and Google Search Console. Each tool serves a clear function, and there are neither too few nor too many for the stated purpose.

Completeness4/5

The tool set covers core SEO workflows for both platforms, including search performance, URL inspection, sitemap listing, keyword research, and specific analyses like striking distance and traffic drops. Minor gaps exist, such as the lack of sitemap submission or cross-platform comparison, but the essentials are well-covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.
    7
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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,926
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    An 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
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Self-hosted MCP server that connects Google Search Console to AI assistants, enabling natural language queries about search analytics, sitemaps, and URL inspection data.
    MIT

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/patchwindow/seo-mcp'

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