Skip to main content
Glama
andrewjpyle

Google Search Console MCP

by andrewjpyle

Google Search Console for your AI assistant

A Model Context Protocol server that lets Claude Desktop, Claude Code, or any MCP client ask Google Search Console real questions: which queries bring clicks, whether a page is indexed and why, which sitemaps Google has. Every tool is a live call to Google's API.

  • 10 tools, 0 simulated. Search analytics, top queries and pages, URL Inspection, sitemaps, and Indexing API notifications. If Google's public API cannot do something, this server does not pretend to.

  • Writes are named as writes. 2 of the 10 tools change anything (submit_sitemap, request_indexing), and their descriptions say so to the model.

  • An allowlist that holds. Set GOOGLE_SEARCH_CONSOLE_SITE_URLS and every tool, writes included, refuses any other property.

  • Try it without a client. npm run call runs any tool from your terminal through a real MCP client, the same path Claude uses.

The one idea worth stealing, even if you never run this code: put an AI tool's boundary in config the tool enforces, not in instructions the model is asked to follow. "Only touch example.com" in a prompt is a request. GOOGLE_SEARCH_CONSOLE_SITE_URLS=sc-domain:example.com here is a wall: a call for any other property fails before a request leaves the server.


60 seconds to a first answer

git clone https://github.com/andrewjpyle/google_search_console_mcp.git
cd google_search_console_mcp
npm install && npm run build
npm run call -- --list          # no credentials needed: lists the 10 tools

Add credentials (see Configuration), then ask a real question:

npm run call -- get_top_queries '{"site_url": "sc-domain:example.com", "days": 28, "limit": 8}'

This is the real answer for andrewjpyle.com, trimmed:

{
  "top_queries": [
    { "query": "mcp certification",  "clicks": 2, "impressions": 44, "ctr": "4.55%", "position": "13.6" },
    { "query": "psiquantum roadmap", "clicks": 2, "impressions": 30, "ctr": "6.67%", "position": "6.1" },
    { "query": "best free ai",       "clicks": 1, "impressions": 174, "ctr": "0.57%", "position": "4.9" }
  ],
  "period": "28 days",
  "rowCount": 8
}

Related MCP server: Google Search Console MCP Server

Connect it to Claude

Claude Code

claude mcp add google-search-console \
  -e GOOGLE_SEARCH_CONSOLE_CREDENTIALS="$(cat service-account.json | tr -d '\n')" \
  -e GOOGLE_SEARCH_CONSOLE_SITE_URLS="sc-domain:example.com" \
  -- node /absolute/path/to/google_search_console_mcp/dist/index.js

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "google-search-console": {
      "command": "node",
      "args": ["/absolute/path/to/google_search_console_mcp/dist/index.js"],
      "env": {
        "GOOGLE_SEARCH_CONSOLE_CREDENTIALS": "{...service account json on one line...}",
        "GOOGLE_SEARCH_CONSOLE_SITE_URLS": "sc-domain:example.com"
      }
    }
  }
}

Then ask things like "What were my top queries for example.com over the last 28 days?" or "Is https://example.com/pricing indexed, and if not, why?"

The tools

Tool

Type

What it does

test_connection

read

Verify auth and count the properties the credentials can see

list_sites

read

List the properties on the account

get_site_info

read

Permission level and details for one property

search_analytics

read

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

get_top_queries

read

Top queries over a lookback window

get_top_pages

read

Top pages over a lookback window

list_sitemaps

read

Sitemaps submitted for a property

get_indexing_status

read

URL Inspection API: verdict, coverage, canonicals, robots, last crawl

submit_sitemap

write

Submit or resubmit a sitemap

request_indexing

write

Notify Google of a new or updated URL through the Web Search Indexing API

How it works

Your MCP client starts the server and talks to it over stdio. Each call is validated with zod, checked against the allowlist, then sent to the Search Console API, the URL Inspection API or the Web Search Indexing API, with retry and backoff on rate limits and transient errors. The answer comes back as JSON the model can read.

Two hygiene rules a stdio server has to get right, and this one tests:

  • stdout is only for the protocol. Every log line goes to stderr. A test starts the server and fails if a single stdout line is not JSON-RPC.

  • Nothing on disk by default. File logs are written only when you set LOG_DIR.

Stay in scope

The credentials behind these examples can see 106 Search Console properties. With GOOGLE_SEARCH_CONSOLE_SITE_URLS=sc-domain:andrewjpyle.com, the server answered for exactly one, and refused a submit_sitemap for anything else before any request reached Google.

Configuration

Credentials are read only from environment variables. Copy .env.example to .env, or pass them from your MCP client's config.

Variable

Required

What it does

GOOGLE_SEARCH_CONSOLE_CREDENTIALS

one auth method

Service-account JSON on one line. Add the service-account email as a user on each property.

GOOGLE_SEARCH_CONSOLE_CLIENT_ID, _CLIENT_SECRET, _REFRESH_TOKEN

one auth method

OAuth2 for a user's own Google account.

GOOGLE_SEARCH_CONSOLE_SITE_URLS

recommended

Comma-separated allowlist. When set, every tool refuses other properties. The first entry is the default when a call omits site_url.

GOOGLE_SEARCH_CONSOLE_SITE_URL

no

Explicit default property. It must also be on the allowlist when one is set.

LOG_LEVEL

no

error, warn, info (default) or debug. Logs go to stderr.

LOG_DIR

no

Write daily-rotated JSON logs here, kept 30 days. Unset means no files.

Requires Node 20 or newer, a Google Cloud project with the Search Console API enabled, and credentials with access to the properties you want.

Scope: what it does not do

Google's public API covers only part of what the Search Console UI can do. Disavow files, hreflang settings, crawl rate, URL parameters, adding or removing properties, and URL removals have no public API, so they are not here, rather than shipped as fake tools. Google retired the crawl-errors API in 2019, so that is omitted too.

The patterns

Pattern

The failure it prevents

Real API calls only

a tool that "succeeds" without doing anything

Writes labeled in the tool description

a model that submits a sitemap thinking it is reading one

Allowlist enforced in code

a prompt that says "only example.com" and a call that goes elsewhere

stdout reserved for the protocol

a log line that breaks a strict MCP client mid-session

No files unless asked

tool arguments quietly piling up in ./logs for 30 days

Say what the API cannot do

users trusting a disavow tool that never existed

FAQ

Do I need Claude to try it? No. npm run call -- --list works with no credentials, and npm run call -- <tool> '<json>' runs any tool through a real MCP client.

Can the model submit a sitemap for a site I did not intend? Not if you set GOOGLE_SEARCH_CONSOLE_SITE_URLS. Without it, the credentials' own access is the only limit, so set it.

Why a service account? It is the easiest way to give a server read access to exactly the properties you add it to, with no browser sign-in. OAuth2 works too.

Does it cache or store results? No. Each call goes to Google. Nothing is written to disk unless you set LOG_DIR.

Development

npm test            # builds, then runs the jest suite (39 tests)
npm run dev         # run from source with tsx
npm run call -- --list

Security

  • Credentials come only from environment variables; nothing is hardcoded.

  • .env, *credentials*.json and logs/ are gitignored.

  • Set GOOGLE_SEARCH_CONSOLE_SITE_URLS to exactly the properties you want the assistant to reach. It is enforced for every tool, including the two writes.

Roadmap

  • A read-only mode that hides the two write tools entirely

  • A period-over-period comparison tool (this 28 days vs the previous 28)

  • Remote use over MCP's Streamable HTTP transport

License

MIT. By Andrew Pyle.

Available Tools

10 tools
get_indexing_statusA

Inspect a URL with the URL Inspection API (index status, coverage, canonical, richness)

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoThe site URL
inspection_urlYesThe URL to inspect

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It implies a read-only operation ('inspect') and lists the data categories returned, but it does not disclose any prerequisites (e.g., need for site_url), error conditions, or whether the operation has side effects. It provides some behavioral context but is 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?

A single sentence that front-loads the core action and then provides specific detail in parentheses. There is zero wasted words, and the structure is efficient and clear.

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?

For a simple tool with two parameters and no output schema, the description covers the basic purpose and output categories, but it lacks important context: how to interpret the returned fields, the role of site_url, and when to use this over 'request_indexing'. The absence of annotations and output schema increases the need for descriptive context, which is only partially met.

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 both parameters described. The description adds no additional meaning beyond the schema—it does not explain the relationship between site_url and inspection_url, such as site_url being the Search Console property. With full schema coverage, baseline is 3, and the description does not exceed it.

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 action (inspect a URL) and the resource (URL), and lists specific data returned (index status, coverage, canonical, richness). This distinguishes it from siblings like 'request_indexing' (submission) and 'search_analytics' (aggregate metrics).

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?

No guidance is given on when to use this tool versus alternatives. It does not mention that this is for checking individual URL indexing status or that 'request_indexing' is for submitting URLs for indexing. The intended use case is implied but not explicitly stated.

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

get_site_infoA

Get details and permission level for a specific verified site

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoThe site URL (e.g., https://example.com/ or sc-domain:example.com)

TDQS

A3.5/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. It communicates that this is a read-style lookup and mentions a prerequisite ('verified site') but does not describe what details are returned, failure conditions, or authentication implications.

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 concise sentence that front-loads the purpose and key qualifier ('specific verified site') without wasted words.

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?

Although the tool is simple and the parameter is documented, there is no output schema and the description does not enumerate the 'details' or how permission level is expressed. An agent can call it correctly but may not know what response to expect.

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 schema covers 100% of the parameter with a reasonable description of the site_url format, so the description adds no needed meaning to the single parameter. Baseline 3 is appropriate.

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 ('Get') and resource ('details and permission level for a specific verified site'), making it clear this is a targeted lookup rather than a list operation. It differentiates from siblings like list_sites by emphasizing 'specific' and 'permission level'.

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: use it when you have a specific verified site URL and want details about that site. It does not explicitly name alternatives or state when not to use it, leaving some routing to inference.

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

get_top_pagesA

Get the top performing pages for a site over a lookback window

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back
limitNoNumber of top pages to return
site_urlNoThe site URL

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description alone must carry the behavioral burden. It indicates a read-only 'Get' action, but it does not define what 'top performing' means (metric, ordering), pagination, date boundaries, or return format. This is a significant gap for an un-annotated 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?

A single, front-loaded sentence with no filler. Every word earns its place and the core action is communicated immediately.

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?

The tool is simple with 3 optional params and no output schema. The description covers the basic purpose, but leaves ambiguity around the ranking metric and expected response shape, so it is adequate but not 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 description coverage is 100%, so the baseline is 3. The schema already documents days, limit, and site_url clearly; the description adds no additional parameter semantics.

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 names a specific verb ('Get'), resource ('top performing pages'), scope ('for a site'), and time window ('lookback window'). It clearly distinguishes this from siblings like get_top_queries (queries vs pages) and search_analytics.

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?

Usage is implied by the resource: an agent seeking top pages would choose this over get_top_queries. However, the description gives no explicit when/when-not guidance or alternatives, leaving the agent to infer from the name and sibling list.

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

get_top_queriesC

Get the top search queries for a site over a lookback window

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back
limitNoNumber of top queries to return
site_urlNoThe site URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read-only 'Get' action and a site/lookback scope, but it does not explain sorting logic, default behavior for missing parameters, what 'top' means, or any caveats about data freshness or permissions.

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 a single sentence with no wasted words and front-loads the action and object. It is concise and readable, but the brevity sacrifices useful sibling differentiation and usage context, so it is efficient rather than fully informative.

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?

The tool has no annotations, no output schema, only optional parameters, and close siblings. The description does not specify return shape, how defaults like days and limit behave, what 'top' means, or when to prefer search_analytics or get_top_pages. This is a thin description for a tool that needs more contextual grounding.

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 baseline is 3. The description only loosely echoes the 'lookback window' concept and adds no meaning beyond the schema for days, limit, or site_url. It does not clarify what metric determines 'top' or how site_url is used.

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 uses a specific verb ('Get') and resource ('top search queries') with a clear scoping clause ('for a site over a lookback window'). It is not a tautology, but it does not explicitly distinguish itself from the closely related sibling tools get_top_pages and search_analytics.

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?

There is no guidance on when to use this tool versus alternatives. Sibling tools search_analytics and get_top_pages overlap conceptually with 'top queries', but the description never mentions them, nor does it state any preconditions or exclusion criteria.

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

list_sitemapsB

List all sitemaps submitted for a site

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoThe site URL

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of behavioral disclosure, but it only restates the core operation. It does not state read-only intent, side effects, site_url format expectations, or return behavior, adding no information beyond the action itself.

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 states the action and scope with no extraneous words. It is front-loaded and easy to parse.

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?

For a tool with no annotations, no output schema, and an ambiguous optional parameter, this description is incomplete. It fails to describe what the response contains, how to supply the site, or when to use the tool, leaving an agent to guess.

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 documents site_url with 'The site URL', providing 100% parameter coverage. The tool description adds the context that sitemaps are listed for the site, but it does not clarify whether site_url is required or how it should be formatted given that 0 parameters are required.

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 the specific verb 'List' with a clear resource—'sitemaps submitted for a site'—which distinguishes it from sibling tools like list_sites and submit_sitemap. It unambiguously names the object and scope.

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?

No guidance is given on when to use this tool versus alternatives such as list_sites or submit_sitemap. There is no mention of prerequisites, when a sitemap list would be needed, or how site_url should be selected.

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

list_sitesA

List all verified sites in the authenticated Search Console account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

The annotations include readOnlyHint=true and destructiveHint=false, which already tell the agent this is a safe read operation. The description adds that it returns 'sitemap metadata and processing status,' which is useful behavioral context beyond the annotations. However, it does not disclose details like whether the list is paginated, whether it includes only submitted sitemaps or also discovered ones, or whether it requires specific permissions. Since the annotations cover the safety profile, a 3 is appropriate – the description adds some value but not rich behavioral context.

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 ('Retrieves the list of all sitemaps') and then adds relevant detail ('including sitemap metadata and processing status'). There is no wasted wording, and every part of the sentence adds value. It is appropriately sized for a simple read tool.

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, the annotations (readOnlyHint=true, destructiveHint=false), and the presence of an output schema (which likely describes the return structure), the description is nearly complete. It tells the agent what the tool returns (sitemap list with metadata and status) and the scope (for a site). The only minor gap is that it doesn't explicitly state that this is for checking existing sitemaps rather than submitting new ones, but the sibling list and the verb 'Retrieves' make that clear. A 4 is appropriate because it is complete for a simple read tool, but not perfect due to the lack of explicit usage guidance.

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 has 2 parameters with 100% schema_description_coverage, meaning the schema already documents both parameters. The description does not add any parameter-specific meaning beyond what the schema provides. It mentions 'for a site' which likely maps to a site identifier parameter, but this is not explicit. Baseline 3 is correct when the schema does the heavy lifting, and the description does not compensate further.

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's purpose: 'Retrieves the list of all sitemaps submitted for a site, including sitemap metadata and processing status.' It uses a specific verb ('Retrieves') and resource ('list of all sitemaps'), and it distinguishes itself from siblings like 'submit_sitemap' and 'request_indexing' by focusing on retrieval of sitemap data. The mention of 'submitted for a site' adds context that it is site-scoped, which helps an agent understand its 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 implies usage by stating it retrieves sitemaps for a site, which is a clear context for when to use it (when you need to see submitted sitemaps or their status). It does not explicitly name alternatives or exclusions, but the sibling list includes 'submit_sitemap' and 'request_indexing', which are clearly different actions. The description could be improved by explicitly saying 'Use this to check sitemap status, not to submit or request indexing,' but the current wording is sufficient for an agent to infer the correct usage.

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

request_indexingB

Notify Google of a new or updated URL via the Web Search Indexing API — a real write operation

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to submit for indexing
site_urlNoThe site URL

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It does flag the operation as a write, but it omits consequences, idempotency, authentication requirements, rate limits, and failure behavior. This is a significant gap for a mutating 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 a single, concise sentence that delivers the core purpose with no wasted words. It is front-loaded with the action and resource, making it easy to scan.

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?

The tool is a write operation with no annotations or output schema, so the description needs to explain return values, side effects, and usage context. It only covers the action, leaving the agent without enough information to confidently decide when and how to invoke it.

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 both url and site_url are fully documented in the schema. The description adds no parameter-specific details, but it is not required to compensate since the schema is complete. Baseline 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 the action (Notify Google), the resource (a new or updated URL), and the method (Web Search Indexing API). It explicitly calls out that this is a 'real write operation', which distinguishes it from read-oriented siblings like get_indexing_status and search_analytics.

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?

No guidance is given on when to use this tool versus alternatives such as submit_sitemap or test_connection. It does not mention scenarios, prerequisites, or when to avoid it, leaving the agent to infer usage.

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

search_analyticsB

Query Search Analytics data (clicks, impressions, CTR, position) by dimension

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date (YYYY-MM-DD)today
site_urlNoThe site URL
row_limitNoMaximum number of rows
dimensionsNoDimensions (query, page, country, device, searchAppearance, date)
start_dateNoStart date (YYYY-MM-DD)7daysAgo
search_typeNoType of search (web, image, video, news, discover, googleNews)web

TDQS

B3.1/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 of behavioral disclosure. It indicates a read-only aggregate query and lists result metrics, but it does not mention the practical site_url requirement, date-range defaults, dimension compatibility, row limits, or output shape. These are material behavioral details absent from the description.

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 with no filler, and the main operation is front-loaded. It is concise while still conveying the core purpose and key output metrics.

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?

For a fairly simple query tool with complete schema coverage, the description is minimally adequate for basic invocation, especially because defaults and parameter options are already in the schema. However, there is no output schema, no usage context versus siblings, and the logically required site_url is not highlighted. This is a thin definition for a tool with six parameters and competing sibling tools.

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 baseline is 3 even with no parameter details in the description. The description adds little beyond the schema: 'by dimension' rehashes the dimensions parameter, and the metrics list describes output rather than parameter mechanics. No additional parameter semantics are supplied.

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 operation ('Query Search Analytics data') and names the principal resource and metrics returned (clicks, impressions, CTR, position). However, it does not explicitly differentiate this from sibling tools like get_top_queries or get_top_pages, which are obvious alternatives for the same data at different granularities.

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?

There is no guidance on when to prefer search_analytics over get_top_queries or get_top_pages, and no exclusions or prerequisites are mentioned. The phrase 'by dimension' only implies a general grouping use case. This leaves 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.

submit_sitemapA

Submit (or resubmit) a sitemap to Search Console — a real write operation

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNoThe site URL
sitemap_urlYesThe full sitemap URL (e.g., https://example.com/sitemap.xml)

TDQS

A3.7/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 of behavioral disclosure. It does explicitly warn that this is 'a real write operation,' which is a useful safety signal. However, it does not mention permissions, side effects, idempotence, or expected response behavior, leaving a notiecable gap for a mutation 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 a single, front-loaded sentence with no filler. It states the action and resource immediately, and the phrase 'a real write operation' earns its place as a clear behavioral safety cue.

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 the tool's simple 2-param schema and full schema coverage, the description covers the core action and mutation risk. But it lacks explicit guidance on how to choose this tool over siblings and says nothing about post-submission expectations or verification requirements, so it is adequate but not fully 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?

The input schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds no additional parameter-level detail, but it also doesn't need to because the schema already defines the sitemap_url format and site_url nuance.

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 ('Submit') with an explicit alternative ('resubmit'), names the concrete resource ('a sitemap to Search Console'), and flags the write nature of the operation. This clearly differentiates it from read-oriented sibling tools like list_sitemaps and get_indexing_status.

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 when to use the tool (whenever you need to submit or resubmit a sitemap), but it does not explicitly route the agent to alternatives such as list_sitemaps for inspecting existing sitemaps or request_indexing for URL-level requests. There is no when-not or exclusions guidance.

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

test_connectionB

Test connection and authentication to the Google Search Console API

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'test connection and authentication', which is vague. It does not state whether the operation is read-only, what happens on success or failure, whether it makes a network call, or what the response looks like. The agent cannot anticipate side effects or return values.

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, focused sentence with no wasted words. It is appropriately sized for a tool with no parameters and clearly states its purpose upfront.

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?

For a tool with no output schema and no annotations, the description should explain what the agent can expect when calling it. It does not mention return values, error behavior, or any side effects. An agent using this tool would be left guessing about how to interpret the result, making the definition incomplete for effective use.

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?

There are zero parameters, so the schema coverage is trivially 100%. Per the rubric, a 0-parameter tool gets a baseline of 4. The description has nothing to add about parameters, and no gaps exist.

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 verb 'Test' and the resource 'connection and authentication to the Google Search Console API'. It is distinct from siblings like list_sites or search_analytics, which focus on specific operations. However, it does not explicitly contrast itself with the siblings, only implies a distinct purpose.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention that it is typically called first to verify authentication before other API calls, nor does it specify any exclusions or prerequisites. An agent has to infer its role from the name alone.

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. 10 tool updatesv1.0.0
    • First observedget_indexing_status
    • First observedget_site_info
    • First observedget_top_pages
    • First observedget_top_queries
    • First observedlist_sitemaps
    • First observedlist_sites
    • First observedrequest_indexing
    • First observedsearch_analytics
    • First observedsubmit_sitemap
    • First observedtest_connection

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but get_top_queries and get_top_pages overlap heavily with search_analytics since they are likely convenience wrappers around the same Analytics API. Agents could misselect between these, though descriptions help clarify the intent.

Naming Consistency4/5

Tool names mostly follow a consistent verb_noun pattern like list_sites, get_site_info, submit_sitemap. The main deviation is search_analytics, which is a noun phrase rather than get_ or list_ style, creating a minor inconsistency.

Tool Count5/5

10 tools is well-scoped for a Google Search Console MCP server. Each tool covers a meaningful area of the API—sites, search analytics, indexing, sitemaps, and connection testing—without unnecessary bloat or redundancy.

Completeness4/5

The tool set covers the primary Search Console workflows: site verification inspection, analytics queries, sitemap management, and indexing requests. Minor gaps exist such as no delete/remove sitemap or explicit URL removal tool, but these are not core workflows for most users.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants to Google Search Console data for SEO analysis, including search analytics, URL inspection, sitemaps, indexing, and opportunity detection.
    17
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects Google Search Console to AI assistants, enabling natural language analysis of SEO data. Provides read-only tools for properties, search analytics, URL inspection, and sitemaps.
    15
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query and manage Google Search Console data, including search analytics, URL indexing status, and sitemap management, for SEO and LLMO analysis directly from a conversation.
    15
    4,437 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to access Google Search Console search performance and index health data, including clicks, impressions, rankings, URL inspection, and sitemap management.
    8 npm
    MIT