Skip to main content
Glama
crunchtools

mcp-google-search-console-crunchtools

by crunchtools

mcp-google-search-console-crunchtools

Secure MCP server for Google Search Console. Query search analytics (clicks, impressions, CTR, position), manage sitemaps, inspect URL indexing status, and manage site properties.

CI PyPI License: AGPL v3

Installation

claude mcp add mcp-google-search-console-crunchtools \
    --env GSC_CLIENT_ID=your_client_id \
    --env GSC_CLIENT_SECRET=your_client_secret \
    --env GSC_REFRESH_TOKEN=your_refresh_token \
    -- uvx mcp-google-search-console-crunchtools

pip

pip install mcp-google-search-console-crunchtools

Container (Podman/Docker)

podman run -d -p 8017:8017 \
    --env-file ~/.config/mcp-env/mcp-google-search-console.env \
    quay.io/crunchtools/mcp-google-search-console \
    --transport streamable-http --host 0.0.0.0

Related MCP server: Google Search Console MCP Server

OAuth Setup

This server supports two authentication methods: browser-based OAuth (recommended) and environment variable (fallback).

Browser-based OAuth handles token exchange automatically. When credentials expire, visit the /auth URL and click through Google's consent screen — no manual code exchange needed.

Step 1: Create a Google Cloud OAuth App

  1. Go to Google Cloud Console

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

  3. Navigate to APIs & Services > Library

  4. Search for Google Search Console API and click Enable

  5. Navigate to APIs & Services > Credentials

  6. Click + CREATE CREDENTIALS > OAuth client ID

  7. If prompted, configure the OAuth consent screen first:

    • User type: External (or Internal if using Google Workspace)

    • App name: anything (e.g., "MCP Search Console")

    • Scopes: add https://www.googleapis.com/auth/webmasters

    • Test users: add your Google account email

  8. Back on Create OAuth client ID:

    • Application type: Web application

    • Name: anything (e.g., "MCP Search Console")

    • Authorized redirect URIs: add your server's callback URL (e.g., https://mcp-gsc.example.com/oauth2callback)

  9. Click Create — copy the Client ID and Client Secret

Step 2: Configure and Start

Create an env file:

cat > ~/.config/mcp-env/mcp-google-search-console.env << 'EOF'
GSC_CLIENT_ID=your_client_id
GSC_CLIENT_SECRET=your_client_secret
GSC_CREDENTIALS_DIR=/data
GSC_OAUTH_REDIRECT_URI=https://mcp-gsc.example.com/oauth2callback
EOF
chmod 600 ~/.config/mcp-env/mcp-google-search-console.env

Start the server with a persistent volume for credentials:

podman run -d -p 8017:8017 \
    --env-file ~/.config/mcp-env/mcp-google-search-console.env \
    -v mcp-gsc-data:/data:Z \
    quay.io/crunchtools/mcp-google-search-console \
    --transport streamable-http --host 0.0.0.0

Step 3: Authenticate

Visit https://mcp-gsc.example.com/auth in your browser. You'll be redirected to Google's consent screen. Grant access and the server will save credentials automatically.

When tokens expire, any tool call will return the /auth URL. Click it to re-authenticate — no container restart needed.

Option B: Environment Variable (Fallback)

If you prefer static credentials or can't expose a callback URL, set GSC_REFRESH_TOKEN in your env file. See the manual OAuth flow below.

export GSC_CLIENT_ID="your_client_id_here"
export GSC_CLIENT_SECRET="your_client_secret_here"

echo "https://accounts.google.com/o/oauth2/v2/auth?client_id=${GSC_CLIENT_ID}&redirect_uri=http://127.0.0.1&response_type=code&scope=https://www.googleapis.com/auth/webmasters&access_type=offline&prompt=consent"
  1. Open the URL in your browser, sign in, and click Allow

  2. Copy the code= value from the redirect URL

  3. Exchange the code:

curl -s -X POST https://oauth2.googleapis.com/token \
    -d "client_id=${GSC_CLIENT_ID}" \
    -d "client_secret=${GSC_CLIENT_SECRET}" \
    -d "code=PASTE_CODE_HERE" \
    -d "grant_type=authorization_code" \
    -d "redirect_uri=http://127.0.0.1" | python3 -m json.tool
  1. Copy the refresh_token from the response and add GSC_REFRESH_TOKEN=... to your env file.

How it works at runtime

The server checks for credentials in this order:

  1. File-based credentials from GSC_CREDENTIALS_DIR/credentials.json (written by the browser-based flow)

  2. Environment variable GSC_REFRESH_TOKEN (fallback)

On each API call, the server exchanges the refresh token for a short-lived access token (~1 hour), cached in memory and refreshed automatically. Updated tokens are persisted to the credentials file for reuse across container restarts.

Available Tools (10)

Category

Count

Tools

Sites

4

list_sites, get_site, add_site, delete_site

Search Analytics

1

query_search_analytics

Sitemaps

4

list_sitemaps, get_sitemap, submit_sitemap, delete_sitemap

URL Inspection

1

inspect_url

Security

  • OAuth2 credentials stored as SecretStr (never logged)

  • File-based credentials written with 0o600 permissions (atomic writes)

  • Automatic token scrubbing from error messages

  • Pydantic input validation with extra="forbid"

  • No filesystem access, shell execution, or code evaluation

  • TLS certificate validation (httpx default)

  • Request timeouts and response size limits

  • Built on Hummingbird container images

See SECURITY.md for the full security design document.

Development

uv sync --all-extras
uv run ruff check src tests
uv run mypy src
uv run pytest -v
gourmand --full .
podman build -f Containerfile .

License

AGPL-3.0-or-later

Available Tools

10 tools
add_site_toolAdd Site ToolC

Add a site to Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesSite URL (e.g., "https://example.com/") or domain property

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/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 behavioral burden. 'Add' implies a write, but it says nothing about required permissions/ownership level, idempotency, or failure modes when the site is already registered.

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

Conciseness3/5

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

One short, front-loaded sentence with no filler, but it is terse to the point of under-specification for a mutation tool; it is concise without earning much informational value.

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?

An output schema exists, so return values need no explanation, but a mutation tool with zero annotations and one undocumented behavior surface (auth, conflicts, verification) leaves real gaps for an agent to call it 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 coverage is 100% and the single site_url parameter is documented in the schema with an example URL and domain-property note. The description adds nothing beyond the schema, so the baseline 3 applies.

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 ('Add a site to Search Console'), so the operation is unambiguous. It does not distinguish itself from siblings such as delete_site_tool or get_site_tool, which would have made it a 5.

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 versus list_sites_tool/get_site_tool, nor any prerequisites such as owning or verifying the property, or what happens if the site already exists.

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

delete_sitemap_toolDelete Sitemap ToolC

Remove a sitemap from Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to delete
site_urlYesSite URL or domain property

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 behavioral burden. For a destructive deletion it says nothing about irreversibility, required permissions, idempotency, or behavior when the sitemap does not exist — only restating the removal action.

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?

A single front-loaded sentence with no filler, appropriate for the operation. It is efficient, though the brevity is arguably under-specification rather than true conciseness given the destructive nature of the tool.

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?

An output schema exists so return values need not be explained, but for a destructive, annotation-free tool the description should disclose irreversibility and prerequisites. As written it is too thin to let an agent invoke it safely.

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 2 documented parameters (site_url, feedpath), so the schema already explains both required inputs including the full-URL format for feedpath. The description adds no meaning beyond that, which is the baseline expectation.

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 ('Remove') and resource ('a sitemap') scoped to Search Console, so the operation is unambiguous. It does not explicitly differentiate itself from siblings like delete_site_tool, list_sitemaps_tool, or submit_sitemap_tool, but the delete-vs-list-vs-submit distinction is inferable from the name.

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 on when to use this versus get_sitemap_tool, list_sitemaps_tool, or submit_sitemap_tool, and no preconditions stated (e.g., the sitemap must already exist, the caller must own the property). The agent must infer all usage context.

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

delete_site_toolDelete Site ToolC

Remove a site from Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesSite URL to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 entire burden. For a destructive removal operation it discloses nothing about reversibility, whether removal requires verification, or whether the site's data is preserved — a significant gap that could lead an agent to invoke it carelessly.

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?

A single short sentence with the action front-loaded and no filler. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined conciseness.

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?

An output schema exists so return values need not be explained, but for an irreversible, annotation-free deletion the description omits the consequences and cautions an agent needs before acting. It is too thin for the operation's risk profile.

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

Parameters3/5

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

Schema coverage is 100%, so site_url is fully documented in the schema itself. The description adds no format hints (e.g., URL vs. domain property prefix) or normalization behavior, so it does not exceed the 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?

The description states a specific verb and resource ("Remove a site") and scopes it to Search Console, which is enough to distinguish it from siblings like delete_sitemap_tool. It stops short of explicitly differentiating itself from other site tools, but the purpose is unambiguous.

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 on when to use this versus list_sites_tool, get_site_tool, or delete_sitemap_tool, and no mention of prerequisites such as verifying ownership or confirming the site is unverified. The agent must infer all usage context.

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

get_sitemap_toolGet Sitemap ToolC
Read-only

Get details for a specific sitemap.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap (e.g., "https://example.com/sitemap.xml")
site_urlYesSite URL or domain property

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description only needed to add context such as behavior when the sitemap is missing or auth requirements. It adds none of that, merely restating the read action with no new behavioral detail.

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?

A single front-loaded sentence with zero waste. It is efficient, though arguably under-specified rather than maximally concise given the tool's context.

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?

An output schema exists and annotations cover the safety profile, so return values and read-only status need not be repeated. However, for a tool sitting among list/submit/delete siblings, the description omits the routing guidance an agent needs to pick it 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 two well-documented parameters including a concrete feedpath example, so the schema does the heavy lifting. The description adds no meaning beyond the schema, which is the correct baseline of 3.

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 clear verb (get) and resource (a specific sitemap's details), which distinguishes it from the plural list_sitemaps_tool and the mutating submit/delete siblings. It does not explicitly name those siblings, and 'details' stays vague about what is actually returned.

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 call this versus list_sitemaps_tool (e.g., when you already know the feedpath) or what prerequisites exist. The 'specific sitemap' phrasing implicitly requires an identifier but never states the condition for choosing this tool.

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

get_site_toolGet Site ToolB
Read-only

Get details for a specific Search Console property.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesSite URL (e.g., "https://example.com/") or domain property (e.g., "sc-domain:example.com")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description adds essentially nothing behavioral: no mention of what happens for unverified or non-existent properties, no permission requirements, no indication that the result depends on prior add_site/verification state. For a read tool the bar is lower, but this adds zero 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?

A single front-loaded sentence with no filler or redundancy. Nothing could be trimmed without losing information.

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

Completeness3/5

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

The output schema and annotations already cover return shape and safety, so the description's job is narrow. It is nonetheless silent on failure modes (unverified or missing property) and on the relationship to the sibling list/add/delete site tools, leaving an agent to infer the intended workflow.

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 helpfully documents both accepted URL forms (https:// and sc-domain:). The description adds no parameter meaning of its own, so the 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 details') and resource ('a specific Search Console property'), which the agent can distinguish from list_sites_tool's bulk listing. It does not explicitly name or contrast with any sibling, but the singular scope is clear from the wording.

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 on when to call this versus list_sites_tool (which may already return property details) or when to use inspect_url_tool instead. The only implied usage is 'you already know the site_url', which the agent must infer.

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

inspect_url_toolInspect Url ToolA
Read-only

Inspect a URL's index status in Google Search.

Returns detailed information about how Google sees a URL including index coverage, crawl status, mobile usability, and rich results.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesThe Search Console property this URL belongs to
language_codeNoLanguage code for localized results (default: en-US)en-US
inspection_urlYesThe fully-qualified URL to inspect (e.g., "https://example.com/page")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe read operation. The description adds useful context about the categories of information returned, but does not disclose auth requirements, rate limits, or other behavioral constraints beyond what the annotation and output schema provide.

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 concise sentences with no wasted text. The core purpose is front-loaded, and the second sentence efficiently summarizes the return content.

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 read-only annotation, complete schema descriptions, and presence of an output schema, the description is largely complete for correct invocation. Minor gaps remain around explicit sibling selection, but the description covers what the tool does and what it returns.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the input schema. The description adds no additional meaning about parameter formats, defaults, or constraints. Baseline 3 is appropriate when the schema fully carries 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 uses a specific verb (inspect) and resource (a URL's index status in Google Search), clearly distinguishing this URL-level indexing tool from sibling site, sitemap, and analytics tools.

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 purpose: use this to inspect a URL's index status. However, there is no explicit guidance on when to prefer it over siblings like query_search_analytics_tool or what conditions would make it inappropriate.

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

list_sitemaps_toolList Sitemaps ToolB
Read-only

List all sitemaps submitted for a site.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesSite URL or domain property

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint=true annotation already establishes this as a safe read operation, so the description's burden is lower. It adds only the 'submitted for a site' scoping nuance; it does not mention result limits or ordering, and with an output schema present, return-format details are unnecessary.

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 short sentence with zero filler, front-loading the verb and resource. Nothing could be trimmed without losing meaning.

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 simple one-parameter read tool with an output schema and readOnlyHint, the description covers the essential scope. It could add minor context such as what happens if no sitemaps are submitted, but it is largely complete given the structured metadata.

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% for the single site_url parameter, so the schema already carries the parameter documentation. The description adds no syntax or format guidance beyond what the schema provides, making the baseline 3 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 ('List') and resource ('sitemaps') with a clear scope ('submitted for a site'). It does not explicitly distinguish itself from siblings like get_sitemap_tool or list_sites_tool, leaving that inference to the agent.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, prerequisites, or alternatives. An agent cannot tell from the text alone when to prefer this over get_sitemap_tool for a single sitemap or submit_sitemap_tool for additions.

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

list_sites_toolList Sites ToolA
Read-only

List all Search Console properties accessible by the authenticated user.

Returns: List of site entries with permission levels and site URLs

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already declares this is a safe read. The description adds that access is scoped to the authenticated user and that results include permission levels, which is useful context. No pagination or rate-limit note, but with annotations covering safety a 3 is appropriate.

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 short sentences, front-loaded with the core action, plus a compact Returns block. No waste.

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?

An output schema exists, so return values needn't be explained, and the description still highlights the useful fields (permission levels, URLs). For a zero-param read tool this is nearly complete; only the sibling distinction 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?

Zero parameters, so the baseline is 4. Nothing to misdocument, and the description correctly implies no filtering inputs.

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+resource ('List all Search Console properties') scoped to the authenticated user. It is distinguishable from get_site_tool (singular) and add/delete_site_tool, but doesn't explicitly contrast with the closest sibling. Clear but no sibling differentiation.

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?

Implied usage (retrieve all properties) but no explicit when-to-use vs get_site_tool, no exclusions, no prerequisites. An agent can infer intent but must reason about alternatives itself.

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

query_search_analytics_toolQuery Search Analytics ToolA
Read-only

Query search traffic data with filters and dimensions.

Returns clicks, impressions, CTR, and average position grouped by the requested dimensions. Use this to analyze search performance for specific pages, queries, countries, devices, or date ranges.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date in YYYY-MM-DD format
site_urlYesSite URL or domain property
row_limitNoMaximum rows to return, 1-25000 (default: 1000)
start_rowNoZero-based row offset for pagination (default: 0)
data_stateNoData freshness (final, all). Default: finalfinal
dimensionsNoDimensions to group by (date, query, page, country, device, searchAppearance). Multiple allowed.
start_dateYesStart date in YYYY-MM-DD format
search_typeNoSearch type filter (web, image, video, news, googleNews, discover). Default: webweb
aggregation_typeNoHow to aggregate results (auto, byPage, byProperty). Default: autoauto
dimension_filter_groupsNoFilter groups to narrow results

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered structurally. The description adds the metric list, but that duplicates the output schema, and it says nothing about quota/rate limits, data-freshness lag tied to data_state, or pagination behavior beyond the schema defaults.

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 short sentences with the purpose front-loaded and no filler. Every sentence carries information about what is queried and what comes back.

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 a fully-documented 10-parameter schema, an existing output schema, and readOnlyHint annotations, the description covers what an agent needs to select the tool. It stops short of explaining the more intricate knobs (aggregation_type interactions, dimension_filter_groups shape), but those are schema-documented.

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 every parameter is already documented individually. The description adds no syntax, default, or interaction guidance (e.g. how dimension_filter_groups relates to dimensions), so the baseline 3 applies.

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+resource ('query search traffic data') and enumerates the metrics returned (clicks, impressions, CTR, average position). This is clearly distinct from the sibling site/sitemap management tools, though the description never explicitly distinguishes itself from them.

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 this to analyze search performance for specific pages, queries, countries, devices, or date ranges' is usage context, but it largely restates what the dimensions parameter does. There are no prerequisites (site verification, permission scope) and no explicit when-not guidance or named alternatives.

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

submit_sitemap_toolSubmit Sitemap ToolC

Submit a sitemap for crawling.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to submit (e.g., "https://example.com/sitemap.xml")
site_urlYesSite URL or domain property

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 disclosure burden, yet it says nothing about idempotency, whether an existing sitemap is replaced, auth/verification requirements, or rate limits. Only the phrase 'for crawling' hints at behavior; for a mutation tool this is a substantial gap.

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?

A single short sentence with no filler and the action front-loaded. It is efficient, though its brevity arguably under-serves the tool rather than being exemplary conciseness.

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?

An output schema exists, so return values need not be described, but for a mutation tool with no annotations and no usage context the description leaves the agent without enough to invoke it confidently (prerequisites, effect on existing sitemaps, required site ownership).

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 parameters (site_url, feedpath) are already documented in the schema with an example for feedpath. The description adds no format, constraint, or relationship information beyond that, so the baseline of 3 applies.

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 states a clear verb+resource ('Submit a sitemap'), which is unambiguous about what the tool does and is distinguishable by name from siblings like list_sitemaps_tool or get_sitemap_tool. However, it does not explicitly differentiate itself from those siblings or state the effect of submission.

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 when-to-use guidance is given: nothing about prerequisites (e.g., site verification), when to submit vs. refresh, or how it relates to list_sitemaps_tool/get_sitemap_tool. The agent must infer all usage context.

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 updatesv0.1.0
    • First observedadd_site_tool
    • First observeddelete_site_tool
    • First observeddelete_sitemap_tool
    • First observedget_site_tool
    • First observedget_sitemap_tool
    • First observedinspect_url_tool
    • First observedlist_sitemaps_tool
    • First observedlist_sites_tool
    • First observedquery_search_analytics_tool
    • First observedsubmit_sitemap_tool

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct Search Console operation: site management, sitemap management, search analytics querying, and URL inspection. Boundaries between site-level, sitemap-level, and performance-data tools are clear, so an agent can select the correct tool without confusion.

Naming Consistency5/5

All names use consistent snake_case with a `_tool` suffix and follow a verb_noun pattern (inspect_url, list_sites, get_sitemap, submit_sitemap, etc.). The suffix is applied uniformly, making the naming predictable despite being slightly redundant.

Tool Count5/5

The 10 tools map exactly to the core Google Search Console API surface: sites CRUD, sitemaps CRUD, search analytics query, and URL inspection. The count is well-scoped with no extraneous or missing tools from a coverage perspective.

Completeness5/5

The set covers all primary GSC operations: listing, getting, adding, and deleting sites; listing, getting, submitting, and deleting sitemaps; querying search analytics; and inspecting URLs. No obvious gaps exist for typical SEO monitoring workflows.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Google Search Console API that enables querying search analytics, managing sites, inspecting URLs, and supporting domain delegation via service accounts.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    This MCP server provides LLMs with programmatic access to Google Search Console data and functionality, including search analytics, sitemap management, site management, and URL inspection.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Google Search Console, enabling querying search performance, listing properties, and inspecting URL indexing status from MCP-compatible clients.
    4
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Read-only MCP server for Google Search Console data, enabling search analytics, URL inspection, indexing diagnostics, and sitemap management through MCP clients.
    8 npm
    MIT