Skip to main content
Glama
conorbronsdon

Google Search Console (GSC) MCP

gsc-mcp

Google Search Console for AI agents: search performance, striking-distance keywords, sitemaps, and URL inspection. SEO automation you can hand to an assistant.

License: MIT npm version Node Glama score Podcast X


An MCP server for Google Search Console. It gives an AI assistant the data and the levers behind organic search: how queries and pages perform, which keywords are one nudge away from page one, the state of your sitemaps, and whether a specific URL is indexed — plus the ability to submit or remove sitemaps.

Why this exists. Search Console is where SEO actually happens, but its UI is click-heavy and its data is hard to act on at a glance. The single most useful view — queries ranking in striking distance of page one — is not even a built-in report; you have to filter and eyeball it. This server puts that view, and the rest of the funnel, in front of an agent so the boring parts of SEO (find the near-miss keywords, check index status, keep sitemaps healthy) can be automated.

It was built to run SEO for two sites — a podcast and a personal site — but nothing here is specific to them. Point it at any property you have verified.

Tools

Tool

Access

What it returns

API

gsc_list_sites

read

Verified properties + permission level

GET webmasters/v3/sites

gsc_search_analytics

read

Clicks/impressions/CTR/position by query, page, country, device, or date

POST .../searchAnalytics/query

gsc_striking_distance

read

Queries at avg position 8–25 with enough impressions — the optimization list

computed from search analytics

gsc_list_sitemaps

read

Submitted sitemaps with status, last download, warning/error counts

GET .../sitemaps

gsc_submit_sitemap

write

Submits/pings a sitemap to Google

PUT .../sitemaps/{feedpath}

gsc_delete_sitemap

write, destructive

Deregisters a sitemap from Search Console

DELETE .../sitemaps/{feedpath}

gsc_inspect_url

read

Index status, last crawl, canonical, mobile/rich-results verdicts

POST searchconsole/v1/urlInspection/index:inspect

Every tool carries MCP read/write annotations, so a client can tell the two write tools apart from the five read-only ones before calling them. Read tools are readOnlyHint: true; gsc_submit_sitemap is a non-destructive write; gsc_delete_sitemap is destructiveHint: true.

List tools default row_limit / limit low (25) to keep responses small — agents pay tokens per response.

Related MCP server: google-search-console-mcp

Authentication

This server uses an OAuth installed-app credential (a saved refresh token), not a service account or an API key. It reads the credential from:

~/.config/gws/searchconsole_credentials.json

The file is google-auth's Credentials.to_json() shape: it contains client_id, client_secret, refresh_token, and scopes. The server refreshes short-lived access tokens against Google's token endpoint directly with fetch — no heavy googleapis dependency.

To create the file yourself if you do not already have it:

  1. In Google Cloud Console, create an OAuth client of type Desktop app and download its client_secret.json.

  2. Enable the Search Console API on that project.

  3. Run an installed-app OAuth flow requesting the scope you need (see below) and save the resulting credentials to ~/.config/gws/searchconsole_credentials.json. Any standard google-auth-oauthlib installed-app snippet works — about ten lines, and it opens a browser for a single consent click.

The path is shared on purpose: if you already hold a Search Console credential in that location for other tooling, this server reuses it rather than asking you to mint a second one.

Scopes: read-only vs. full

  • Read tools work with https://www.googleapis.com/auth/webmasters.readonly.

  • Write tools (gsc_submit_sitemap, gsc_delete_sitemap) and URL inspection need the full https://www.googleapis.com/auth/webmasters scope.

If your saved credential only has the read-only scope, the read tools work and the write tools return a clear "re-mint with the full scope" error rather than a cryptic 403. Re-running the mint with the full scope upgrades the same file in place; read tools keep working throughout.

Set GSC_CREDENTIALS_PATH to point at a different credential file if you do not use the default location.

Starts without a credential

The server boots and answers tools/list even when no credential is present, so MCP inspectors can introspect it. Tool calls then return a setup pointer (to stderr at startup, and as the tool result). stdout is reserved for the MCP transport and stays clean.

Setup

1. Verify your property in Search Console

Add your site at search.google.com/search-console. A Domain property (verified with a DNS TXT record) covers http/https and all subdomains and is the recommended choice. Note the exact property string — gsc_list_sites will show it as sc-domain:example.com (Domain) or https://example.com/ (URL-prefix).

2. Mint the credential

Create ~/.config/gws/searchconsole_credentials.json as described under Authentication, requesting the full webmasters scope if you want the write and URL-inspection tools.

3. Configure your MCP client

Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "gsc": {
      "command": "npx",
      "args": ["-y", "@conorbronsdon/gsc-mcp"]
    }
  }
}

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "gsc": {
      "command": "npx",
      "args": ["-y", "@conorbronsdon/gsc-mcp"]
    }
  }
}

No env block is needed when the credential is at the default path. Set GSC_CREDENTIALS_PATH if it lives elsewhere.

4. Verify

Ask your assistant: "List my Search Console properties," then "Show me striking-distance keywords for it over the last 28 days."

Limitations

Read these so you know what the numbers mean and what this can and cannot do.

  • No request-indexing tool — by design. Search Console's "Request indexing" button has no public API. Google's Indexing API only supports JobPosting and BroadcastEvent pages, not normal content, and using it for normal pages violates its terms. So there is deliberately no "ask Google to index this page" tool here; for normal pages, requesting indexing is a manual click in the Search Console UI. gsc_submit_sitemap is the supported, API-backed way to nudge crawling.

  • Data lags ~2–3 days. Search Analytics is not real-time. End your date ranges a few days before today or the last days come back empty.

  • searchAnalytics is capped per call. row_limit caps at 1000 here (the API allows 25,000 with pagination); for very large pulls, page with start_date/dimension filters rather than asking for everything at once.

  • Striking distance is computed client-side. It pulls up to 1000 query rows and filters to the position band. On a site with thousands of ranking queries, the band view reflects the top 1000 by clicks, not the entire long tail.

  • URL inspection is rate-limited and slow. Google enforces a low daily quota on the URL Inspection API and each call can take a second or two. Inspect specific URLs you care about; do not loop it over a whole sitemap.

  • No property add/remove tools. Verifying a property is a stateful, error-prone flow (DNS TXT, meta tag, file upload) that does not fit a single tool call. Add and verify properties in the Search Console UI; this server operates on properties you have already verified.

  • General API quotas apply. The server surfaces a clear error on HTTP 429. Keep row_limit and inspection volume modest.

Development

git clone https://github.com/conorbronsdon/gsc-mcp.git
cd gsc-mcp
npm install
npm run build
npm test

Run locally:

npm start

Tests mock fetch and make no network calls.

Contributing

Issues and pull requests are welcome. If a Search Console endpoint is worth wrapping as a tool, open an issue describing what it should return and the endpoint it maps to. Keep the contract honest: read tools stay read-only, write tools carry the right annotations, and responses stay compact.

The rest of the suite

Search Console is one credential family in a wider Google data stack. The siblings, each with its own auth:

Data

Server

Google Workspace (Gmail, Calendar, Drive, Sheets, Docs, Tasks)

gws-mcp-server — same curated approach: narrow surface, side effects declared on every tool

YouTube Analytics

yt-analytics-mcp — owner-side watch time, retention, traffic sources, and playlist metrics; read-only

Google Analytics 4

googleanalytics/google-analytics-mcp — Google's own, read-only

BigQuery

googleapis/mcp-toolbox — Google's own

Nothing here shares a token: this server uses a webmasters OAuth credential, Workspace uses gws auth login, YouTube Analytics uses a yt-analytics.readonly OAuth credential, GA4 uses Application Default Credentials scoped analytics.readonly.

About

Built and maintained by Conor Bronsdon. I host the Chain of Thought podcast, which covers AI infrastructure, developer tools, and how practitioners actually use this stuff. I built this to pull SEO work into the agent workflows that run the show and my site.

Companion tools:

  • op3-mcp: podcast analytics through OP3 — downloads, geography, apps, per-episode breakdowns.

  • podcast-benchmark: benchmark your show against peers on public signals.

  • Transistor-MCP: the Transistor.fm MCP server — episodes, transcripts, download counts.

  • substack-mcp: read posts and manage drafts on Substack, safe for agent workflows.

  • ai-tools-for-creators: a curated list of AI skills and MCP servers for people who ship ideas for a living.

More at chainofthought.show and on X.


Disclaimer

This is an independent personal project, not affiliated with, sponsored by, or endorsed by Google LLC. All views expressed are my own.

License

MIT

Available Tools

7 tools
gsc_delete_sitemapDelete a sitemapA
DestructiveIdempotent

Remove a sitemap from a property in Search Console. This is a DESTRUCTIVE write action: it deregisters the sitemap (it does not delete the file from your server, but Google stops tracking it). Requires the full webmasters OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to remove, e.g. https://example.com/sitemap.xml.
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations: it explains the exact effect (deregisters, does not delete the file, stops tracking) and the required OAuth scope. The annotations already indicate destructive/write behavior, but the description adds meaningful nuance that changes how an agent should expect the operation to behave.

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 no wasted words. The first sentence states the action; the second provides crucial behavioral nuance and a prerequisite. The most important information is front-loaded and each sentence earns its place.

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 2-parameter tool with no output schema, the description covers the action, the destructive nuance, the effect on the server and Google, and the required permission. There are no obvious gaps given the tool's complexity and the existing annotations.

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 each parameter having a clear description (e.g., 'Full URL of the sitemap to remove' and exact form for site_url). The tool description itself does not elaborate on parameters further, so it does not add value beyond the schema. Baseline 3 is correct.

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 ('Remove') and resource ('a sitemap from a property in Search Console'), clearly distinguishing it from sibling tools like gsc_submit_sitemap and gsc_list_sitemaps. The clarifying phrase 'it deregisters the sitemap... but Google stops tracking it' further sharpens the purpose.

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 sets clear context for when to use this tool (removing a sitemap from tracking) and notes the destructive consequence, but it does not explicitly name alternatives or state when not to use it. It also mentions the required OAuth scope, which is a usage prerequisite. This falls short of explicit exclusion guidance, so a 4 is appropriate.

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

gsc_inspect_urlInspect a URL's index statusA
Read-onlyIdempotent

Inspect a single URL with the URL Inspection API: whether Google has it indexed, its coverage state, last crawl time, Google's chosen canonical, and a one-line mobile/rich-results summary. Returns a compact projection, not the full raw blob. Use this to debug 'why isn't this page indexed'.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.
language_codeNoOptional BCP-47 language code for issue messages, e.g. 'en-US'.
inspection_urlYesThe fully-qualified URL to inspect. Must be within the property.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only and safe behavior. The description adds useful behavioral details beyond annotations, such as 'Returns a compact projection, not the full raw blob' and a 'one-line mobile/rich-results summary', setting expectations for response format.

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, front-loaded with core functionality and followed by a practical use case. No wasted words or redundancy.

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?

Even without an output schema, the description mentions key returned fields and the compact nature of the response. It is complete for a simple read-only inspection tool, though it doesn't cover edge cases like invalid URLs, which are minor.

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%, and the schema already documents all parameters thoroughly. The description adds minimal parameter-specific information beyond implying the inspection_url, 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 states a specific verb ('Inspect') applied to a single URL, with a clear outcome ('index status') and detailed data points (coverage state, crawl time, canonical). It distinguishes itself from sibling tools by focusing on single-URL inspection versus site-wide analytics or sitemaps.

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 a clear use case: 'debug why isn't this page indexed'. It does not explicitly mention when to avoid this tool or compare with alternatives, but the context is strong enough to guide selection.

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

gsc_list_sitemapsList sitemapsA
Read-onlyIdempotent

List the sitemaps submitted for a property, with each one's submit/download times, pending state, and warning/error counts. Use this to check whether a sitemap was processed and is error-free.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds behavioral context by revealing what data is returned (timestamps, states, counts), which goes beyond annotations. No contradiction.

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, front-loaded with the action and details, followed by a practical use case. No wasted 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 read-only list tool with one parameter and no output schema, the description adequately describes the returned fields and the purpose. It covers all necessary context without requiring output schema documentation.

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 site_url parameter has a detailed description explaining exact formats (sc-domain vs URL-prefix). The tool description itself adds no extra parameter information, so the baseline of 3 applies.

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 that it lists sitemaps for a property and includes specific details (submit/download times, pending state, error/warning counts). This distinguishes it from sibling tools like gsc_list_sites (lists properties) and gsc_submit_sitemap (submits).

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 explicitly says 'Use this to check whether a sitemap was processed and is error-free', providing a clear use case. It does not name alternatives or explicitly state when not to use it, but the context is sufficient.

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

gsc_list_sitesList Search Console propertiesA
Read-onlyIdempotent

List the Search Console properties (sites) the signed-in Google account can access, with each one's permission level. This is the entry point: every other tool needs a property string in the exact form returned here.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover read-only/non-destructive/idempotent. The description adds context about permission levels and the exact property string format, which is useful for downstream tool use, though it doesn't disclose rate limits or pagination.

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 no filler; the first sentence states the primary function, and the second immediately provides usage context. Every word earns its place.

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 parameterless list tool with strong annotations, the description supplies essential purpose and the critical dependency of all sibling tools. It gives enough output hints (permission level, exact form) despite 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?

The tool has zero parameters, so parameter semantics are not applicable; the baseline of 4 is appropriate. The description doesn't need to explain parameters.

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 verb (List), the resource (Search Console properties/sites), and the scope (accessible to the signed-in account). It also distinguishes itself from siblings by positioning as the entry point needing property strings in the exact form returned.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'This is the entry point: every other tool needs a property string in the exact form returned here.' This tells the agent to use this tool first to discover property strings before invoking siblings.

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

gsc_search_analyticsQuery search performanceA
Read-onlyIdempotent

Query Search Console search analytics for a property over a date range: clicks, impressions, CTR, and average position, grouped by the dimensions you pass (query, page, country, device, date). Returns compact rows. Use this for 'what are my top queries / pages' and trend questions. GSC data lags ~2-3 days, so end your range a few days before today.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoSearch type filter. Defaults to web when omitted.
end_dateYesEnd date, YYYY-MM-DD (Pacific Time, inclusive).
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.
row_limitNoMax rows to return (default 25, cap 1000). Keep low; rows cost tokens.
dimensionsNoHow to group rows. Default ['query']. Combine for breakdowns, e.g. ['page','query'].
start_dateYesStart date, YYYY-MM-DD (Pacific Time, inclusive).
dimension_filter_groupsNoOptional filters, e.g. only rows where page contains '/blog/'. Each group's filters are AND-ed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover readOnly, openWorld, idempotent, and destructiveHint. The description adds valuable non-obvious behavior: GSC data lags ~2-3 days and results are compact rows, which informs end-date selection and token expectations.

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: the first states the function and outputs, the second provides usage guidance and a caveat. No filler or repetition of schema content.

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?

Covers purpose, metrics, dimensions, date-range behavior, and data freshness in just two sentences. Combined with rich schema and annotations, this is fully sufficient for an agent to select and invoke the tool correctly.

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 detailed parameter docs (site_url examples, row_limit cap, dimensions enum, filter groups). The description's mention of dimensions and date range adds no new semantic information beyond what the schema already provides.

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?

Specific verb+resource: 'Query Search Console search analytics' with explicit metrics (clicks, impressions, CTR, average position) and dimensions. This clearly distinguishes it from siblings like gsc_list_sites and gsc_submit_sitemap.

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?

States explicit use cases ('what are my top queries / pages' and trend questions) and provides a temporal caution about data lag. No explicit exclusions or alternatives, but the sibling tools are quite different.

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

gsc_striking_distanceStriking-distance keywordsA
Read-onlyIdempotent

The SEO goldmine view: queries ranking just off page one (average position 8-25) with enough impressions to be worth optimizing. These are the keywords where a small content tweak can win real clicks. Computed client-side from search analytics; returns queries sorted by impressions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax queries to return, ranked by impressions (default 25).
end_dateYesEnd date, YYYY-MM-DD (lag ~2-3 days behind today).
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.
start_dateYesStart date, YYYY-MM-DD (default: 28 days before end_date if omitted in your call).
position_maxNoUpper bound of the striking-distance band (default 25).
position_minNoLower bound of the striking-distance band (default 8).
min_impressionsNoOnly include queries with at least this many impressions (default 10).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, establishing a safe, read-only operation. The description adds valuable behavioral context beyond annotations: it explains that the computation is 'client-side from search analytics' (which may affect freshness or performance expectations) and that results are sorted by impressions. No contradiction with annotations.

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

Conciseness4/5

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

The description is concise and front-loaded with the 'SEO goldmine view' hook, then quickly moves to specific criteria and behavior. All three sentences contribute meaning: the first introduces the purpose, the second elaborates on its value, the third explains the computation and order. It could be slightly tighter, but it is appropriately sized and well-structured.

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?

For a read-only analytics tool with 7 parameters (3 required) and no output schema, the description provides a complete picture: it states what the tool returns (queries in a position band, sorted by impressions), the client-side computation, and the optimization use case. Combined with rich schema descriptions and safe-read annotations, the agent has enough context to invoke the tool correctly. Minor gaps like pagination behavior are not critical for this 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?

Schema description coverage is 100%, so the parameters are already well-documented in the input schema. The description adds marginal semantic value by explaining the concept of 'striking distance' (position 8-25) and 'enough impressions', which maps to min_impressions, but it does not introduce any new parameter-level detail 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 identifies the tool's purpose: returning queries in a specific 'striking-distance' position range (8-25) that are worth optimizing. It uses specific framing ('SEO goldmine view') and distinguishes this from the broader sibling gsc_search_analytics by focusing on a narrow, actionable subset. The verb is implied but unambiguous ('returns queries sorted by impressions').

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 implies when to use this tool (when looking for quick wins near page one, where a small content tweak could improve rankings). It provides clear context but does not explicitly exclude alternatives or mention sibling tools like gsc_search_analytics. However, the specialized angle is clear enough for an AI to select it for striking-distance optimization use cases.

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

gsc_submit_sitemapSubmit a sitemapA
Idempotent

Submit (or re-submit) a sitemap to Google Search Console for a property. This is a WRITE action: it registers the sitemap and pings Google to crawl it. Requires the full webmasters OAuth scope — if the saved credential is read-only, re-mint with scripts/seo-auth-setup.py. Idempotent: re-submitting the same sitemap URL just refreshes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to submit, e.g. https://example.com/sitemap.xml. Must be within the property.
site_urlYesThe Search Console property. Use the exact form shown by gsc_list_sites: a Domain property is 'sc-domain:example.com'; a URL-prefix property is the full origin with a trailing slash, e.g. 'https://example.com/'.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true), the description discloses the concrete side effects: 'it registers the sitemap and pings Google to crawl it,' plus the auth prerequisite and the idempotent behavior ('re-submitting the same sitemap URL just refreshes it'). This adds substantial operational context without contradicting any annotation.

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?

Three sentences, each serving a distinct purpose: action, side-effect/auth, and idempotency. Front-loaded with the core verb+object, then essential caveats. No wasted words or redundancy.

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 two-parameter action with no output schema, the description covers everything an agent needs: what it does, side effects, auth requirements, and idempotency. The sibling context and annotations complete the picture, making the tool safe and correctly invocable.

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 provides full descriptions for both parameters (site_url, feedpath) with examples, achieving 100% schema_description_coverage. The description does not add further parameter-specific meaning, so the 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 starts with a specific verb+resource: 'Submit (or re-submit) a sitemap to Google Search Console for a property.' It clearly distinguishes from sibling tools like gsc_list_sitemaps (list) and gsc_delete_sitemap (delete), and the explicit 'WRITE action' framing reinforces the tool's unique role.

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 clear context: it's for submitting or re-submitting sitemaps, and it explicitly warns about the OAuth scope requirement ('Requires the full webmasters OAuth scope') with a remediation path. It doesn't explicitly contrast with alternatives (e.g., 'use gsc_list_sitemaps to view existing'), but the purpose and sibling differentiation make the when-to-use clear.

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.

  1. 7 tool updatesv0.1.0
    • First observedgsc_delete_sitemap
    • First observedgsc_inspect_url
    • First observedgsc_list_sitemaps
    • First observedgsc_list_sites
    • First observedgsc_search_analytics
    • First observedgsc_striking_distance
    • First observedgsc_submit_sitemap

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools target distinct resources and actions, but gsc_search_analytics and gsc_striking_distance both expose query performance data, with striking_distance being a derived view that could cause confusion. The clear descriptions mitigate this, but an agent might select the wrong one for a generic analytics request.

Naming Consistency4/5

The gsc_ prefix and verb_noun pattern are used consistently across most tools, but gsc_striking_distance deviates from the verb-first convention, being an adjective/noun phrase. This minor inconsistency does not impede readability.

Tool Count5/5

Seven tools cover the GSC domain without bloat or thinness. Each tool has a clear purpose and fits within the ideal 3-15 range.

Completeness5/5

The server covers the core GSC lifecycle: site listing, search analytics, sitemap management (list/submit/delete), and URL inspection. No major workflow appears missing for practical SEO use cases.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides AI agents with read-only access to Google Search Console data, including search analytics, index coverage, and sitemap status. It enables users to query clicks, impressions, and ranking performance or check URL indexing status through natural language.
    61
    5
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Query Google Search Console search analytics, inspect URL indexing status, manage sitemaps, and analyze keyword performance. 13 tools covering search queries, page performance, sitemap management, and index coverage.
    13
    262
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Google Search Console data including rankings, clicks, and impressions for websites. Provides tools for analyzing search performance, top queries, page metrics, and ranking changes.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query Google Search Console data including search analytics, URL inspection, sitemap management, and site performance monitoring, with per-user OAuth authentication.
    -