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_toolB

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

B3.3/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 does not mention potential errors (e.g., duplicate site), verification requirements, or idempotency, leaving the agent without crucial context for a mutation operation.

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-formed sentence with zero unnecessary words. It is front-loaded with the verb and object, making it immediately scannable.

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 has only one parameter, full schema coverage, and an output schema, so the description is minimally viable. However, it lacks behavioral context (e.g., error conditions, side effects) that would make it fully complete without annotations.

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

Parameters3/5

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

Schema coverage is 100% with a clear description of the site_url parameter. The tool description adds no extra meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific action (add), the resource (site), and the context (Search Console). It distinctly differentiates from sibling tools like list_sites_tool or delete_site_tool.

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 provided on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or competing tools.

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

delete_sitemap_toolB

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

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the action without noting irreversibility, permission requirements, or side effects—critical information for a destructive delete operation. The description adds no value beyond what the tool name implies.

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 that communicates the core function efficiently. Every word serves a purpose, and there is no redundant or filler content.

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?

Although the input schema is complete and an output schema exists, the description omits essential context for a destructive operation, such as whether the deletion is permanent or requires confirmation. For a tool that removes data, this is a significant gap, leaving the description minimally adequate.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, and the description adds no extra parameter context. Per the rules, this warrants a baseline score of 3; the description neither enhances nor detracts from the schema.

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

Purpose5/5

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

The description clearly states the action (Remove) and the resource (a sitemap from Search Console), making it immediately distinguishable from sibling tools like submit_sitemap or list_sitemaps. The verb+resource combination precisely captures the tool's purpose.

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 action is self-evident, but the description provides no explicit guidance on when to use this tool versus alternatives such as delete_site_tool. There is no mention of prerequisites, exclusions, or when this tool would be appropriate over others.

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

delete_site_toolB

Remove a site from Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesSite URL to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/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, but it only says 'Remove a site' without noting irreversibility, permission requirements, or side effects on associated resources like sitemaps. For a deletion operation, this is a significant gap.

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

Conciseness5/5

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

The description is a single sentence that directly states the tool's function with no unnecessary words. It is front-loaded and efficient.

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 (one parameter, output schema exists), and the description conveys the basic purpose. However, the lack of any warning about the destructive nature or post-removal effects makes it incomplete for a delete operation, especially given no annotations.

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

Parameters3/5

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

The schema fully describes the sole parameter (site_url) with 'Site URL to remove', so schema coverage is 100%. The description adds no extra parameter information, matching the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description 'Remove a site from Search Console' specifies a clear action ('Remove') and resource ('site'), distinguishing it from sibling tools like add_site_tool and list_sites_tool. The verb is specific and 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 is provided on when to use this tool versus alternatives, nor are any prerequisites or conditions for removal mentioned. The description only states what the tool does, not when to invoke it.

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

get_sitemap_toolA

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

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 carries the full burden. 'Get details' only conveys the read-only nature inherent in the verb, but it does not disclose any additional behavioral traits such as required authentication, error behavior, or response specifics. This is a minimal disclosure without meaningful transparency beyond the obvious.

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 one short sentence with no superfluous words. It is immediately readable and front-loaded with the essential action. This is exemplary conciseness.

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?

With an output schema present, return values need not be explained. However, the description does not mention any preconditions (e.g., the sitemap must exist) or provide usage context beyond the basic purpose. It is minimally sufficient for a simple getter but not fully complete in guiding the agent's decision-making.

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 both parameters with descriptions (100% coverage), so the tool description adds no extra parameter insight. Both required parameters are clearly defined in the schema, allowing the agent to understand inputs without additional narrative. Baseline 3 is appropriate since the schema already does the heavy lifting.

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 'Get details for a specific sitemap' uses a specific verb ('Get') and resource ('specific sitemap'), clearly distinguishing it from sibling tools like list_sitemaps_tool (which lists all) and submit/delete variants. This is unambiguous and effectively differentiates from alternatives.

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 use when needing details on one sitemap, but it does not explicitly state when to use versus alternatives, nor does it provide exclusions or preconditions. Usage context is left to the agent to infer from the tool name and schema, making it adequate but not explicit.

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

get_site_toolA

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

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of conveying behavioral traits. 'Get' implies a read-only operation, which is transparent enough for a simple getter, but no details about edge cases (e.g., non-existent property) or permissions are provided.

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, clear sentence that is front-loaded and contains no extraneous words. It fully serves its purpose without wasted 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 tool's simplicity (one parameter) and the presence of an output schema, the description is largely complete. However, it lacks explicit usage context relative to sibling tools, which is a minor gap.

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

Parameters3/5

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

The input schema provides 100% coverage with a detailed description of site_url, including examples of both site URL and domain property formats. The description adds no additional parameter information over the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets details for a specific Search Console property, using the verb 'Get' and referencing a specific resource. This distinguishes it from sibling tools like list_sites_tool, add_site_tool, and delete_site_tool.

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 phrase 'for a specific' implies a targeted lookup, but no explicit when-to-use or alternative tools are mentioned. There is no naming of list_sites_tool for listing all sites or get_sitemap_tool for sitemap details.

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

inspect_url_toolA

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

A4/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 discloses what information is returned (index coverage, crawl status, mobile usability, rich results), which is helpful, but it does not explicitly state that the operation is read-only, nor does it mention any permissions, rate limits, or error conditions.

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

Conciseness5/5

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

Two sentences, each earning its place. First sentence states the tool's core purpose, second enumerates the key output categories. No redundancy or filler.

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

Completeness4/5

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

The tool has three fully documented parameters and an output schema, so return values are already specified. The description covers the essential purpose and informational content; lacking only explicit usage caveats, which are minor given the straightforward read-like nature.

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 each parameter already explained (site_url as property, inspection_url as fully-qualified URL, language_code as localization). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description uses specific verb 'Inspect' with clear resource 'URL's index status in Google Search' and lists return categories (index coverage, crawl status, mobile usability, rich results), distinguishing it from sibling tools focused on sites, sitemaps, and analytics.

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?

Provides clear context that this tool inspects a specific URL's status within Google Search, making it obvious when to use. However, it does not explicitly mention when not to use it or compare to alternatives like query_search_analytics for performance data.

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

list_sitemaps_toolB

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
Behavior2/5

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

No annotations are present, so the description must carry the burden of behavioral disclosure. It does not state that this is a read-only operation, mention any output format, or note potential side effects. The word 'list' implies a query, but the description lacks explicit transparency about behavior.

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 zero wasted words. It fully conveys the action and object in one concise statement.

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 list tool with one parameter, the description is complete in conveying what it does and that it requires site_url. An output schema exists, reducing the need to explain return values. However, the absence of usage guidelines and behavioral notes prevents a perfect score.

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 site_url described as 'Site URL or domain property.' The description adds only 'for a site,' which loosely links to the parameter but does not provide additional meaning, format, or usage details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('list') and resource ('all sitemaps') with an explicit scope ('for a site'), clearly distinguishing it from sibling tools like get_sitemap (single sitemap), submit_sitemap, and delete_sitemap. It names the exact action and object.

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 provided on when to use this tool versus alternatives, such as get_sitemap to retrieve a specific sitemap or submit_sitemap to add one. The description simply states the action without context or exclusions.

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

list_sites_toolA

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

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It mentions that the list is accessible by the authenticated user and that it returns entries with permission levels and site URLs, providing useful context. However, it does not explicitly state that the operation is read-only, whether pagination is used, or any rate limits, leaving some behavioral aspects undisclosed.

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 concise and front-loaded: one sentence states the action and scope, and the second defines the return value. There is no unnecessary detail, making it appropriately sized for the tool's simplicity.

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 zero parameters and the presence of an output schema, the description provides sufficient context for a listing operation. It clearly states what is returned and the scope. It could have mentioned error behavior or auth prerequisites, but these are not critical for a simple list tool and are largely covered by 'accessible by the authenticated user.'

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

Parameters4/5

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

The tool has zero parameters, and the description correctly adds no parameter information. Per the rule, 0 params yields a baseline of 4. The description's note about the return content (permission levels and site URLs) enriches understanding but is not parameter-related.

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 function with a specific verb 'List' and resource 'Search Console properties', and explicitly scopes it to those accessible by the authenticated user. This distinguishes it from sibling tools like get_site_tool (single property), add_site_tool, and delete_site_tool.

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

Usage Guidelines3/5

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

The description implies usage for listing all properties, but it does not explicitly state when to choose this tool over alternatives or mention any exclusions. For example, it doesn't say 'use this to get the site URLs needed for other tools' or 'use get_site_tool for a specific property.' Usage is implied rather than explicit.

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

query_search_analytics_toolA

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

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the return metrics and grouping behavior, which implies a read-only operation. However, it does not mention potential limitations, rate limits, data freshness, or side effects, which would be valuable for full transparency.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, then return value, then suggested use cases. Every sentence adds value with no fluff.

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 complexity (10 parameters, output schema exists), the description covers the essential purpose, output metrics, and use cases. It does not need to explain return values because an output schema is present. Missing details like pagination and data state are handled by the schema, so the description is sufficiently 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 description adds narrative about dimensions (pages, queries, countries, devices, date ranges) and filters, but these are already covered in the schema parameters. It does not introduce additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool queries search traffic data, names the returned metrics (clicks, impressions, CTR, average position), and distinguishes it from sibling site management tools. The verb 'Query' and resource 'search traffic data' are specific and unambiguous.

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?

It explicitly states when to use the tool: 'Use this to analyze search performance for specific pages, queries, countries, devices, or date ranges.' This provides clear context, though it does not mention alternatives or when not to use it.

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

submit_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.7/5.0
Behavior1/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. The phrase 'Submit a sitemap for crawling' gives no detail about side effects (e.g., whether it overwrites existing sitemaps), required permissions, or error conditions. This is a significant 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.

Conciseness4/5

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

The description is a single sentence with no redundant wording, making it very concise. However, it is so brief that it lacks structure or elaboration; there is no wasted text, but the overall content is minimal.

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 an output schema and only 2 parameters, so complexity is low. Yet, the description is too sparse: it omits when to use the tool, behavioral implications, and any context about how it fits with site management. Given there are no annotations, this description is not complete enough for an agent to use it confidently.

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%: both feedpath and site_url are described in the schema. The tool description adds no additional meaning beyond the schema, so the baseline of 3 applies. It does not harm, but it does not compensate for any vagueness in the site_url description.

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 the specific verb 'submit' with the resource 'sitemap' and the purpose 'for crawling', which clearly distinguishes it from sibling tools like list_sitemaps_tool or delete_sitemap_tool. However, it doesn't explicitly mention the scope or target, making it slightly less precise than 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?

The description provides no guidance on when to use this tool versus alternatives like add_site_tool or get_sitemap_tool. It does not state prerequisites (e.g., site must exist) or mention any specific scenarios where this tool is appropriate.

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.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource and action: sites (list/get/add/delete), sitemaps (list/get/submit/delete), plus dedicated analytics and URL inspection tools. There is no functional overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun_tool pattern (e.g., list_sites_tool, submit_sitemap_tool, inspect_url_tool). The uniform naming makes the toolset predictable and easy to navigate.

Tool Count5/5

With 10 tools, the server is well-scoped for the Search Console domain. Each tool covers a core operation without redundancy or bloat.

Completeness5/5

The set provides full lifecycle coverage for sites (create/read/delete) and sitemaps (create/list/read/delete), alongside essential analytics querying and URL inspection. No obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    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
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server for Google Search Console data, enabling search analytics, URL inspection, indexing diagnostics, and sitemap management through MCP clients.
    18 npm
    MIT