Skip to main content
Glama
eduardmur

Google Search Console MCP

by eduardmur

Google Search Console MCP

npm license

An MCP server that gives Claude, Cursor, Codex and any other MCP client clean access to Google Search Console: search analytics, question-shaped queries, ranking opportunities, URL inspection and sitemaps.

It runs on your machine, talks to Google with your own credentials, and sends nothing anywhere else. No telemetry.

Why this one

Every GSC MCP server wraps the same API. The differences are in the details that decide whether the model gets numbers it can trust:

  • Dates are resolved on the server. Ask for last_28_days and the server computes the range in the property's timezone (America/Los_Angeles, the one Search Console itself uses). That removes both the UTC off-by-one and the dates models make up when asked about "last month".

  • Windows end where the data ends. Search Console reports lag 2-3 days. Preset ranges snap to the newest date that has rows, so trends are not biased by trailing empty days. Opt out with anchor=today.

  • Fresh data by default. Requests use dataState=all, matching the numbers you see in the Search Console UI. Use data_state=final for stable reporting.

  • Comparisons are computed server-side. compare=previous_period or same_period_last_year (shifted 364 days so weekdays align) returns one merged table with clicks_change, position_change and is_new per row. The model never has to join two tables, a task LLMs are unreliable at.

  • Compact responses. One text block of minified JSON per call, paginated with limit/offset/has_more, nothing sent twice. Long sessions keep their context for rows.

  • Question-shaped queries in 10 languages. A dedicated tool finds searches phrased as questions (what/how/why/compare/…) via regex filters that run inside Search Console itself: English, Spanish, French, Portuguese, Russian, Arabic, Hindi, Bengali, Indonesian and Chinese.

  • Read-only by default. Sitemap submit/delete exist but only work when you start the server with --enable-writes.

  • Errors that name the fix. Every failure message says what to do next, and gsc-mcp doctor checks the whole chain end to end.

Related MCP server: GSC MCP Server

Quick start

Requires Node.js 20+ and a one-time Google sign-in:

npx -y @eduardmur/gsc-mcp login   # guided setup, ~2 minutes
npx -y @eduardmur/gsc-mcp doctor  # verify everything works

login walks you through creating your own free Google OAuth client (you control the credentials; nothing is shared with anyone) and signs you in via your browser. Details and alternatives in docs/auth-oauth.md, docs/auth-service-account.md and docs/auth-adc.md.

Then add the server to your client:

Claude Code

claude mcp add gsc -- npx -y @eduardmur/gsc-mcp

Claude Desktop: add to claude_desktop_config.json (Settings → Developer → Edit Config):

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

Cursor: add to .cursor/mcp.json:

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

Codex CLI

codex mcp add gsc -- npx -y @eduardmur/gsc-mcp

Now ask things like:

Which queries gained and lost the most clicks this week on example.com?

What questions do people ask that we rank for but never answer on a dedicated page?

Find cannibalization on sc-domain:example.com and tell me which page should win each query.

Tools

Tool

What it returns

list-properties

Properties the account can read, with permission levels. Start here.

query

Search analytics rows: dimensions (query, page, country, device, date, searchAppearance), Search-Console-side filters (contains/regex/country/device), metric filters, sorting, pagination up to 25k rows, optional compare with ready-made deltas.

question-queries

Searches phrased as questions, detected inside Search Console in 10 languages. The raw material for FAQ content, and the same questions people ask AI assistants.

opportunities

Four analyses over the top 5000 rows: low_ctr (impressions without clicks, adaptive threshold), striking_distance (positions 4-15), long_tail (4+ word queries), cannibalization (pages competing for one query).

inspect-url

Index status per URL: verdict, coverage, canonical chosen by Google vs declared (mismatches flagged), robots state, last crawl, rich results. Single URL or batches up to 20.

sitemaps

Submitted sitemaps with status, errors and counts. Submit/delete only with --enable-writes.

Full parameter reference: docs/tools.md.

Prompts

Six ready-made recipes ship with the server and appear as slash commands in clients that support MCP prompts (in Claude Code: /gsc:weekly-report etc.):

weekly-report · content-decay · striking-distance · cannibalization-check · questions-to-content · indexing-triage

Each one is a step-by-step plan: which tools to call with which arguments, and what to deliver.

CLI

gsc-mcp             # serve MCP on stdio (what your client runs)
gsc-mcp login       # connect a Google account (guided)
gsc-mcp logout      # remove saved tokens
gsc-mcp doctor      # 6 end-to-end checks: node, credentials, token, properties, query, freshness

Flags: --enable-writes, --key-file <path>, --client <path>, --no-open.

Tokens are stored in ~/.config/gsc-mcp/tokens.json (0600). The only Google scope requested is webmasters.readonly.

Prefer a hosted setup?

If you'd rather skip local setup, or want AI-visibility data next to your Search Console numbers (how ChatGPT, Perplexity, Gemini and AI Overviews talk about your brand), Searcherries runs a hosted MCP with one-click OAuth: GSC, Bing Webmaster Tools, GA4 AI traffic and tracked AI answers in one server. The two are independent: neither needs the other. See docs/hosted.md.

Troubleshooting

Run gsc-mcp doctor first; it pinpoints the failing step. Common cases (7-day token expiry in Testing mode, service-account access, quotas, Windows and WSL notes): docs/troubleshooting.md.

Development

npm install
npm run typecheck && npm run lint && npm test   # no network needed
npm run build                                    # single-file dist via tsup

Tests fake the Search Console REST layer; nothing in CI talks to Google. See CONTRIBUTING.md.

License

MIT. Built by the maker of Searcherries.

Available Tools

6 tools
inspect-urlURL inspectionA
Read-onlyIdempotent

Index status of specific URLs via the URL Inspection API: verdict, coverage, robots.txt and indexing state, last crawl, canonical chosen by Google vs declared by the site (mismatches flagged), mobile usability and detected rich results. Pass url for one page or urls for a batch (max 20; requests run 2 at a time). Quota is roughly 600 requests/minute and 2000/day per property — keep batches small. URLs must belong to the property.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOne URL to inspect.
urlsNoSeveral URLs to inspect (max 20).
propertyYesSearch Console property: a URL-prefix like https://example.com/ or a domain property like sc-domain:example.com. Use list-properties first if unsure.
language_codeNoBCP-47 result language (default en-US).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly and idempotent, but the description adds substantive operational context the annotations cannot convey: server-side concurrency (2 requests at a time), batch cap of 20, and quota of roughly 600/min and 2000/day per property with an explicit 'keep batches small' instruction. That is exactly the value-add expected beyond structured hints.

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?

Output fields are front-loaded, then invocation modes, then limits. No filler sentences; even the quota sentence carries actionable guidance ('keep batches small'). It is dense but every clause 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?

With no output schema, the description compensates by enumerating the return payload (verdict, coverage, canonical chosen vs declared, mobile usability, rich results). Combined with the quotas, batch behavior and property constraint, an agent has everything needed to call it correctly.

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 description coverage is 100%, so baseline is 3, but the description adds the cross-parameter constraint that every inspected URL must belong to the named property — a semantic rule absent from the individual parameter docs. It also restates the batch size limit, which the schema already caps via maxItems, so the added value is real but partial.

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 (inspect) plus resource (URLs) with an explicit enumeration of what is returned: verdict, coverage, robots.txt state, last crawl, canonical mismatch, mobile usability, rich results. An agent can immediately distinguish this from the sibling aggregate tools (query, opportunities) without opening a schema.

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?

Clearly states how to choose between single (url) and batch (urls) invocation and the constraint that URLs must belong to the property; the schema even points to list-properties for property discovery. It never explicitly names a sibling as the alternative for aggregate/index-wide questions, so it falls short of full when-not routing.

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

list-propertiesList Search Console propertiesA
Read-onlyIdempotent

Search Console properties the authenticated account can read, with the permission level. Property identifiers come in two forms: sc-domain:example.com (a domain property covering every subdomain and protocol) and URL-prefix like https://example.com/ (exactly that prefix). Call this first and pass the identifier verbatim as property to every other tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, so the safe-read profile is covered. The description adds real value beyond that: it explains the two identifier forms, clarifies that sc-domain: spans all subdomains and protocols while URL-prefix matches exactly, and notes the permission level is returned.

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 tight sentences: purpose, identifier semantics, and the call-first instruction. The most actionable advice (call this first, pass the identifier) is front-loaded alongside the purpose, and every 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 zero-parameter, read-only listing tool with no output schema, the description covers what is returned (properties plus permission level) and the identifier formats an agent must understand to use the rest of the suite correctly. Nothing needed to invoke it correctly is missing.

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 takes zero parameters, so there are no parameter semantics to document and the baseline is 4. The description's discussion of identifier forms concerns how the output is consumed by other tools, not this tool's inputs.

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?

States a specific verb and resource (list Search Console properties) scoped to what the authenticated account can read, and adds the returned detail (permission level). The contrast with siblings is implicit but clear: this is the enumeration tool that feeds property identifiers to every other tool.

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?

Gives explicit sequencing guidance ('Call this first') and tells the agent what to do with the result ('pass the identifier verbatim as property to every other tool'). No exclusions are given, but there is no competing alternative for enumerating properties, so the guidance is effectively complete.

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

opportunitiesSEO opportunitiesA
Read-onlyIdempotent

Ready-made opportunity analyses over the top-5000 rows of a window. low_ctr: rows earning impressions but converting far below the site's own average CTR (threshold = min(5%, max(1%, avg*0.75))). striking_distance: queries ranking positions 4-15 — the cheapest wins. long_tail: conversational queries of 4+ words. cannibalization: queries where two or more of the site's pages compete against each other, with the leading URL. Web search type only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYeslow_ctr: high impressions, CTR far below the site's own average; striking_distance: ranking just below the top results; long_tail: conversational multi-word queries; cannibalization: several pages competing for one query.
limitNoRows per page, 1-100 (default 25).
wordsNolong_tail minimum word count (default 4).
anchorNoWhere preset ranges end: last_data_date (default) snaps to the newest date that has rows, avoiding the 2-3 day reporting lag; today uses the calendar date.
offsetNoRows to skip; page while has_more is true.
periodNoDate range resolved server-side in the property's timezone (default last_28_days). Use custom together with start_date and end_date.
end_dateNoEnd date YYYY-MM-DD, only with period=custom.
propertyYesSearch Console property: a URL-prefix like https://example.com/ or a domain property like sc-domain:example.com. Use list-properties first if unsure.
dimensionNoAnalyze queries or pages (low_ctr and striking_distance only, default query).
data_stateNoall (default) includes fresh data Google may still revise; final returns only stabilized rows.
start_dateNoStart date YYYY-MM-DD, only with period=custom.
max_positionNostriking_distance upper bound (default 15).
min_positionNostriking_distance lower bound (default 4).
min_impressionsNoImpression floor (default 10; long_tail and cannibalization default 1).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely valuable behavior: the 5000-row processing cap, the exact low_ctr threshold formula min(5%, max(1%, avg*0.75)), and the web-search-type-only restriction. It does not mention pagination or return shape, keeping it from a 5.

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?

Front-loads the general capability, then spends exactly one clause per kind, then closes with the applicability constraint. No filler, no repetition of structured fields.

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 14-parameter, no-output-schema tool the description covers purpose, kind semantics, scoping, and constraints well. It omits any hint of the return shape or the has_more pagination contract (only implied in the schema), which is a minor gap.

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% and the schema descriptions are already rich, so baseline is 3. The description still adds meaning beyond the schema, notably the low_ctr threshold formula and the "cheapest wins" framing for striking_distance that help the agent choose a kind and interpret bounds.

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?

States a specific verb+resource ("Ready-made opportunity analyses") and immediately enumerates the four analysis kinds with concrete definitions, so an agent can tell exactly what it produces versus the sibling query/question-queries tools. The "top-5000 rows of a window" scope further pins down the output.

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?

Each kind carries implicit routing guidance (e.g. striking_distance noted as "the cheapest wins"), and the "Web search type only" constraint is an explicit applicability rule. It never names a sibling alternative or an explicit when-not-to-use, so it stops short of a full 5.

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

querySearch analyticsA
Read-onlyIdempotent

Search Analytics rows for one property: clicks, impressions, CTR and position grouped by up to three of query, page, country, device, date, searchAppearance. Dates are resolved server-side (presets like last_28_days, anchored to the last date with data). Value filters (contains/regex/equals) run inside Search Console; min/max metric filters and non-click sorts run on a top-5000 sample. compare=previous_period or same_period_last_year returns one merged table with server-computed deltas (position_change positive = improved) — never join two windows yourself. Rows are a paginated sample, not an exhaustive export.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoRow order (default clicks desc; position sorts ascending; clicks_change requires compare).
typeNoSearch surface (default web). discover and googleNews have no query dimension.
limitNoRows per page, 1-100 (default 25).
anchorNoWhere preset ranges end: last_data_date (default) snaps to the newest date that has rows, avoiding the 2-3 day reporting lag; today uses the calendar date.
deviceNo
offsetNoRows to skip; page while has_more is true.
periodNoDate range resolved server-side in the property's timezone (default last_28_days). Use custom together with start_date and end_date.
compareNoMerge a second window and return per-row deltas (default none).
countryNoISO alpha-3 country code, e.g. usa, deu.
end_dateNoEnd date YYYY-MM-DD, only with period=custom.
propertyYesSearch Console property: a URL-prefix like https://example.com/ or a domain property like sc-domain:example.com. Use list-properties first if unsure.
data_stateNoall (default) includes fresh data Google may still revise; final returns only stabilized rows.
dimensionsNoRow grouping, in order (default [query]).
min_clicksNo
page_regexNoOnly pages matching this RE2 regex.
start_dateNoStart date YYYY-MM-DD, only with period=custom.
query_regexNoOnly queries matching this RE2 regex.
max_positionNo
min_positionNo
page_containsNoOnly pages containing this text.
query_containsNoOnly queries containing this text.
min_impressionsNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, closed-world), and the description adds substantial operational context: server-side date resolution with anchor behavior, where each filter class executes, the top-5000 sampling caveat, compare's merged-table-with-deltas contract, and the sign convention for position_change. The 'paginated sample, not an exhaustive export' warning is exactly the kind of caveat annotations cannot express.

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?

Front-loaded with the purpose before moving into caveats, and each sentence carries non-redundant information (date resolution, filter execution, compare semantics, sampling). It is dense and packs several distinct rules into a single compact block, which slightly taxes parsing but wastes no 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 22-parameter read tool with no output schema, the description supplies the operational context an agent needs: what a row contains, how dates resolve, which filters are exact versus sampled, how compare changes the result shape, and that pagination yields a sample. Return-shape detail is minimal, but the sampling and delta semantics are the parts most likely to cause misuse and they are covered.

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?

With 77% schema coverage the baseline is 3, but the description meaningfully extends the schema: 'grouped by up to three of' dimensions, preset examples (last_28_days) with server-side resolution anchored to the last date with data, and the note that position_change requires compare and that positive means improved. It does not explain the undocumented min_clicks/min_impressions/min_position/max_position parameters, leaving a gap.

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?

States a specific verb and resource ('Search Analytics rows for one property') and enumerates the metrics (clicks, impressions, CTR, position) and grouping dimensions, so the agent knows exactly what comes back. It never names or contrasts the sibling tools (question-queries, opportunities) that also surface Search Console data, so the boundary is inferred rather than stated.

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?

Gives concrete routing guidance: use compare instead of joining two windows ('never join two windows yourself'), and explains that value filters execute in Search Console while min/max and non-click sorts run on a top-5000 sample, which tells the agent when results are approximate. It stops short of explicit when-not-to-use-this-tool exclusions against siblings.

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

question-queriesQuestion-shaped queriesA
Read-onlyIdempotent

Google searches phrased as questions that showed this site — the raw material for FAQ pages and content that answers what people actually ask (including the questions AI features answer). Detection runs inside Search Console via regex filters built from question-prefix lists in 10 languages plus a minimum length. Search Console does not label AI traffic; these are question-shaped candidates. Sorted by impressions by default, since question queries are often shown without a click.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNoRows per page, 1-100 (default 25).
anchorNoWhere preset ranges end: last_data_date (default) snaps to the newest date that has rows, avoiding the 2-3 day reporting lag; today uses the calendar date.
offsetNoRows to skip; page while has_more is true.
periodNoDate range resolved server-side in the property's timezone (default last_28_days). Use custom together with start_date and end_date.
countryNoISO alpha-3 country code, e.g. usa, deu.
end_dateNoEnd date YYYY-MM-DD, only with period=custom.
languageNoLanguage of the question-prefix list (default en).
propertyYesSearch Console property: a URL-prefix like https://example.com/ or a domain property like sc-domain:example.com. Use list-properties first if unsure.
data_stateNoall (default) includes fresh data Google may still revise; final returns only stabilized rows.
start_dateNoStart date YYYY-MM-DD, only with period=custom.
page_containsNoOnly questions that showed pages containing this text.
min_impressionsNoDrop rows below this (default 1).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, not open-world), and the description adds genuinely useful behavior: detection runs server-side inside Search Console, AI traffic is not labeled, these are only candidates, and results default to impressions sorting because question queries often get no click. Return format/pagination behavior is left to the schema, which is acceptable.

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?

Four dense sentences with the core definition front-loaded, followed by mechanism, caveat, and default-sort rationale. No filler, though the parenthetical about AI features is slightly more than needed.

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?

With 13 parameters, no output schema, and one required param, the description supplies the conceptual model (question-shaped candidates, server-side detection, AI-traffic caveat) that structured fields cannot convey. What is missing is explicit routing against the generic 'query' and 'opportunities' siblings.

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 92%, so the schema already documents nearly every parameter. The description only adds context for two of them (language relates to the question-prefix list, sort defaults to impressions), so it does not meaningfully exceed the structured baseline.

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?

States a specific resource (Google searches phrased as questions that showed this site) and explains how it is produced (Search Console regex filters built from question-prefix lists in 10 languages plus a minimum length). It implicitly separates itself from the generic 'query' sibling by describing a specialized subset, but never names the generic query tool, so an agent must infer the boundary.

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?

Use is implied through the framing 'raw material for FAQ pages and content that answers what people actually ask' and the note about AI features, so an agent can guess the intent. However, no explicit when-to-use / when-not guidance and no alternative sibling (query, opportunities) is named as the comparison point.

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

sitemapsSitemapsB
Read-onlyIdempotent

Sitemaps of a property: submitted files with their status, errors, warnings and submitted/indexed counts. action=status returns one sitemap (sitemap_url required). submit and delete change the property and only work when the server was started with --enable-writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoDefault list.
propertyYesSearch Console property: a URL-prefix like https://example.com/ or a domain property like sc-domain:example.com. Use list-properties first if unsure.
sitemap_urlNoFull sitemap URL, required for status, submit and delete.

TDQS

B3.2/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true and destructiveHint=false, but the description explicitly says 'submit and delete change the property' and describes a delete action. The description asserts mutation and deletion while the annotations assert a non-mutating, non-destructive tool — a direct conflict. Despite the useful --enable-writes gating detail, the contradiction with the safety annotations caps this at 1.

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?

Three compact clause-sentences: resource definition, then the status action, then the write actions with their precondition. Information is front-loaded and no sentence is filler, though the fragment opening ('Sitemaps of a property:') is slightly terse.

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 four-action tool with no output schema, the description covers what the resource is, the per-action requirements, and the server-side write gate. It could say more about what the default list action returns, but the annotations and schema carry most of the remaining structure.

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 description coverage is 100%, so the baseline is 3, but the description adds actionable constraint the schema cannot express: submit and delete only function when the server was started with --enable-writes, and status is scoped to a single sitemap URL. That gating information meaningfully conditions how the action parameter can be invoked.

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 names the resource (sitemaps of a Search Console property) and enumerates what it exposes: submitted files with status, errors, warnings and submitted/indexed counts. It also clarifies the multi-action surface (list, status, submit, delete). It is clear without needing sibling differentiation, since none of the listed siblings (query, inspect-url, opportunities, etc.) overlap with sitemap management.

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?

It states the operational conditions for the destructive/non-default actions ('action=status returns one sitemap (sitemap_url required)' and 'submit and delete ... only work when the server was started with --enable-writes'), which is useful when-to-use context for the sub-actions. It does not, however, say when to prefer this tool over siblings or when to prefer list vs status, leaving tool-selection to inference.

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. 6 tool updatesv0.1.0
    • First observedinspect-url
    • First observedlist-properties
    • First observedopportunities
    • First observedquery
    • First observedquestion-queries
    • First observedsitemaps

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a clearly stated distinct purpose, but query, question-queries, and opportunities all operate over the same Search Analytics data. The descriptions differentiate them well (raw rows vs question-shaped candidates vs pre-built analyses), so an agent can mostly tell them apart, though there is latent overlap since query could partially replicate the other two.

Naming Consistency3/5

All names are lowercase kebab-case, but the pattern is mixed: list-properties, question-queries, and inspect-url follow a verb_noun shape while query, opportunities, and sitemaps are bare nouns. Readable but not a predictable convention.

Tool Count5/5

Six tools is well-scoped for Search Console's surface, with each tool earning its place and none appearing redundant or trivial. No bloat or thinness.

Completeness4/5

Covers the core GSC lifecycle: property listing, Search Analytics (with comparison and filtering), question mining, opportunity detection, URL inspection, and sitemap status/submit/delete. Minor gaps like property-level administration or authentication/verification ops exist but are typically handled in the UI, so agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Google Search Console via MCP, offering search analytics, performance summaries, URL inspection, sitemap management, and property listing for SEO workflows.
    159 npm
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Connects MCP clients to the Google Search Console API, enabling search analytics queries, URL inspection, sitemap management, and performance comparison across time periods.
    20
    35 PyPI
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Secure MCP server for Google Search Console. Query search analytics (clicks, impressions, CTR, position), manage sitemaps, inspect URL indexing status, and manage site properties.
    10
    AGPL 3.0
  • A
    license
    B
    quality
    B
    maintenance
    Enables Google Search Console data queries via MCP, including search analytics, performance comparisons, URL inspection, and sitemap management.
    12
    1
    MIT