Skip to main content
Glama
jcd3dr

Google Search Console MCP Server

by jcd3dr

Google Search Console MCP Server

An MCP (Model Context Protocol) server that provides tools to query Google Search Console data from AI assistants like Claude.

Features

  • Search Analytics -- Query clicks, impressions, CTR, and position with filtering by query, page, country, device, and date

  • URL Inspection -- Check indexation status, crawl info, canonical URLs, mobile usability, and rich results

  • Sitemap Management -- List, get details, submit, and delete sitemaps

  • Site Listing -- List all verified properties and their permission levels

Related MCP server: mcp-gsc

Tools

Tool

Description

Read-only

gsc_list_sites

List all verified Search Console properties

Yes

gsc_search_analytics

Query search performance data with dimensions and filters

Yes

gsc_inspect_url

Inspect a URL's index status, crawl, and rich results

Yes

gsc_list_sitemaps

List submitted sitemaps for a property

Yes

gsc_get_sitemap

Get details for a specific sitemap

Yes

gsc_submit_sitemap

Submit a sitemap (requires GSC_WRITE_ACCESS=true)

No

gsc_delete_sitemap

Delete a submitted sitemap (requires GSC_WRITE_ACCESS=true)

No

Installation

Prerequisites

  • Python 3.11+

  • uv (recommended) or pip

  • Google Cloud credentials with Search Console API access

Install dependencies

git clone https://github.com/kn00m1/google-search-console-mcp.git
cd google-search-console-mcp
uv sync

Authentication

The server tries credentials in this order:

  1. Cached token (~/.config/gsc-mcp/token.json) -- from a previous OAuth flow

  2. Application Default Credentials (ADC) -- from gcloud auth application-default login

  3. OAuth2 browser flow -- using ~/.config/gsc-mcp/client_secrets.json

Quickest setup (ADC)

gcloud auth application-default login --scopes=https://www.googleapis.com/auth/webmasters.readonly

OAuth2 setup (if ADC doesn't cover your scopes)

  1. Create an OAuth client ID (Desktop app) in Google Cloud Console

  2. Download the JSON and save it as ~/.config/gsc-mcp/client_secrets.json

  3. The server will open a browser for consent on first run

Usage

With Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "google-search-console": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/google-search-console-mcp", "python", "-m", "gsc_mcp.server"],
      "env": {
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

With any MCP client

uv run python -m gsc_mcp.server

The server communicates over stdio using the MCP protocol.

Enable write access

Set the environment variable to unlock sitemap submit/delete tools:

GSC_WRITE_ACCESS=true uv run python -m gsc_mcp.server

Security

  • Token files are stored with 0600 permissions

  • API responses are sanitized against prompt injection patterns

  • Error messages redact OAuth tokens and API keys

  • Write tools (submit/delete sitemap) are disabled by default

License

MIT

Available Tools

5 tools
gsc_get_sitemapA
Read-onlyIdempotent

Get details for a specific submitted sitemap.

Args: params (SitemapInput): Parameters including: - site_url (str): The GSC property URL - feedpath (str): Full URL of the sitemap

Returns: str: JSON with sitemap details including path, status, content counts, warnings, and errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description goes beyond by detailing the return payload: 'JSON with sitemap details including path, status, content counts, warnings, and errors,' giving the agent insight into what to expect. This adds valuable behavioral context about the operation's output without contradicting any annotation.

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

Conciseness5/5

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

The description is well-structured: a one-sentence purpose, a concise Args section with bullet points for each parameter, and a Returns section. All content earns its place with no fluff or repetition. The format is scannable and front-loaded, making it easy for an agent to parse quickly.

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 read-only tool with a single nested parameter and an output schema, the description covers the essential aspects: purpose, parameters, and return value. It could optionally mention permissions or an example, but given the annotations (read-only, idempotent) and the straightforward nature of the operation, the description is sufficiently complete. A minor gap is the lack of explicit connection to sibling tools for workflow context, but it is not necessary for a basic getter.

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 descriptions for the inner fields site_url and feedpath, though the outer 'params' parameter itself has no description (schema coverage 0% at top level). The tool description lists both parameters and clarifies site_url as 'The GSC property URL' and feedpath as 'Full URL of the sitemap,' offering slightly more explicit semantics than the schema's 'Site URL as it appears in GSC.' However, this is largely redundant with the schema's field descriptions, so the added meaning is marginal. 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 opens with 'Get details for a specific submitted sitemap,' clearly stating the verb ('Get'), resource ('sitemap'), and scope ('specific'). This distinguishes it from sibling gsc_list_sitemaps, which would list all sitemaps, and from gsc_inspect_url or gsc_search_analytics. The title 'Get Sitemap Details' aligns perfectly, making the purpose 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?

The description implies usage context by focusing on a 'specific submitted sitemap' and requiring both site_url and feedpath, which signals it is for retrieving details of one known sitemap. It stops short of explicitly naming alternatives like gsc_list_sitemaps for enumeration, but the clear context ('specific') provides sufficient guidance for selection among siblings. Lacks explicit when-not or alternative tool mentions, hence not a 5.

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

gsc_inspect_urlA
Read-onlyIdempotent

Inspect a URL's indexation status, crawl info, and rich results.

Uses the URL Inspection API to check whether a URL is indexed, its canonical URL, crawl status, mobile usability, and rich results.

Args: params (InspectUrlInput): Parameters including: - inspection_url (str): The fully qualified URL to inspect - site_url (str): The GSC property URL

Returns: str: JSON with inspection results including: - indexStatusResult: verdict, coverageState, crawledAs, lastCrawlTime, pageFetchState - mobileUsabilityResult: verdict, issues - richResultsResult: detectedItems

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful return-field details (indexStatusResult, mobileUsabilityResult, richResultsResult) but does not mention permissions, rate limits, or edge cases, so it does not exceed the annotation baseline significantly.

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 logically structured with an intro, API note, Args, and Returns sections. It is slightly redundant by repeating 'indexation status' and 'crawl info' in the first two sentences, but overall it is efficient and front-loaded.

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 output schema exists, the description goes beyond by summarizing what the returned JSON contains. The tool has nested parameters, but the schema covers the structure. The description is complete for normal use, though it omits authentication and prerequisite details, which are likely out of scope.

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

Parameters3/5

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

The input schema already provides descriptions for both parameters (site_url and inspection_url), including examples. The tool description simplifies these but does not add new semantic meaning beyond what the schema offers. Baseline 3 is appropriate given 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 clearly states the tool inspects a URL's indexation status, crawl info, and rich results. It uses a specific verb ('inspect') and resource ('URL'), and is distinct from siblings like search analytics or sitemap tools.

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 for checking a single URL's performance in GSC, which is distinct from listing sites or sitemaps. It does not explicitly name alternatives or exclusions, but the context is clear enough to guide tool selection.

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

gsc_list_sitemapsA
Read-onlyIdempotent

List all submitted sitemaps for a verified property.

Args: params (SiteInput): Parameters including: - site_url (str): The GSC property URL

Returns: str: JSON with list of sitemaps, each containing: - path (str): Sitemap URL - lastSubmitted (str): Last submission timestamp - isPending (bool): Whether sitemap is pending processing - isSitemapsIndex (bool): Whether it's a sitemap index - type (str): Sitemap type - lastDownloaded (str): Last download timestamp - warnings (int): Number of warnings - errors (int): Number of errors

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare safe read-only, idempotent, and non-destructive behavior. The description adds the return structure (fields like path, isPending, errors) and clarifies 'submitted' sitemaps, which is useful context. However, it does not discuss potential errors, rate limits, or verification requirements beyond the annotation-provided safety profile. Given the strong annotations, a mid-score 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.

Conciseness4/5

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

The description is well-structured: a clear one-line purpose, followed by a concise parameter list and a return field breakdown. It front-loads the key information and avoids unnecessary fluff. Slightly verbose due to the full return field enumeration, but this is still efficient and scannable.

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 a simple single-parameter tool with annotations covering safety, the description is nearly complete. It documents the return fields and the input requirement. While it omits error scenarios and explicitly verifying the property, these are minor gaps. The presence of an output schema further reduces the need to detail returns, so overall completeness is good.

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

Parameters3/5

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

The input schema already provides a detailed description for site_url (including examples), while the tool description only repeats 'The GSC property URL' with less specificity. Since the schema coverage is high, the description adds minimal semantic value beyond what the schema provides. 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 lists all submitted sitemaps for a verified property. The verb 'list' and resource 'submitted sitemaps' are specific, and the scope is defined. This differentiates from siblings like gsc_get_sitemap (which likely retrieves a single sitemap) and gsc_list_sites (which lists properties).

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, nor does it mention exclusions or prerequisites beyond 'verified property'. There is no reference to sibling tools or scenarios where another tool would be more appropriate, leaving the agent without explicit decision support.

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

gsc_list_sitesA
Read-onlyIdempotent

List all verified properties in Google Search Console.

Returns a list of sites/properties you have access to, including their permission level and site URL format.

Returns: str: JSON with list of verified sites, each containing: - siteUrl (str): The site URL - permissionLevel (str): Your access level (siteOwner, siteFullUser, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds meaningful context by specifying the return format (JSON string) and fields (siteUrl, permissionLevel), as well as noting it lists sites 'you have access to'. This goes beyond annotation basics.

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 extremely concise, with only two short paragraphs and a structured Returns block. Every sentence contributes to understanding the tool's purpose and output. No wasted words.

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

Completeness5/5

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

For a zero-parameter, read-only tool with rich annotations and an output schema, the description is sufficiently complete. It clearly states what is returned and the key fields, covering all necessary contextual information.

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

Parameters4/5

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

The tool has zero parameters, so the description carries no parameter semantics. The baseline for no parameters is 4, and the description appropriately avoids adding unnecessary parameter details.

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 'List all verified properties in Google Search Console', using a specific verb and resource. It is distinct from sibling tools like gsc_list_sitemaps or gsc_search_analytics, which cover different resources.

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 when one needs to list verified properties, but does not explicitly state when to use this tool over alternatives. It provides no exclusions or alternative tool names, so it only reaches implied usage guidance.

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

gsc_search_analyticsA
Read-onlyIdempotent

Query search performance data (clicks, impressions, CTR, position).

Returns search analytics data for a verified property, with optional grouping by dimensions (query, page, country, device, date) and filtering.

Args: params (SearchAnalyticsInput): Query parameters including: - site_url (str): The GSC property URL - start_date (str): Start date YYYY-MM-DD - end_date (str, optional): End date YYYY-MM-DD, defaults to today - dimensions (list[str], optional): Group by query/page/country/device/date - row_limit (int, optional): Max rows 1-25000, default 100 - start_row (int, optional): Pagination offset - search_type (str, optional): web/image/video/news/discover - dimension_filters (list[dict], optional): Filters for dimensions

Returns: str: JSON with rows containing clicks, impressions, ctr, position, and dimension keys. Includes metadata with total row count.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context beyond annotations, such as the return format (JSON rows with metrics and dimension keys, total row count metadata), defaults (end_date defaults to today, row_limit defaults to 100), and the requirement for a verified property. No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured with a concise summary line followed by an Args section and Returns section. It is front-loaded with the core purpose, and every sentence adds value. The length is appropriate for the tool's complexity, with no wasted words.

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

Completeness5/5

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

The description covers the essential aspects of the tool: data returned, grouping dimensions, filtering, date range, pagination, and search type. It explains the return format and metadata. Although an output schema exists, the description still provides the necessary high-level overview. For a tool with this many options, the description is thorough and complete.

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

Parameters4/5

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

Schema description coverage is 0% at the top level, but the description compensates by enumerating all parameters with their types, optionality, and defaults. It adds meaning beyond the schema by explaining each parameter's purpose (e.g., pagination offset, search type options). The nested schema also has detailed descriptions, so the description supplements rather than duplicates.

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 it queries search performance data (clicks, impressions, CTR, position) for a verified property, distinguishing it from sibling tools that handle sites, URL inspection, and sitemaps. The verb 'query' and resource 'search analytics 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?

The description provides clear context for when to use the tool (to retrieve search analytics with grouping/filtering). It doesn't explicitly mention when not to use it or name alternatives, but the distinct purpose among siblings makes its usage obvious. No exclusions are stated, but the context alone is sufficient.

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

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct GSC resource: sites, analytics, URL inspection, and sitemaps (list vs. specific). No functional overlap exists, making tool selection unambiguous.

Naming Consistency5/5

All tools follow the gsc_verb_noun pattern in snake_case, with clear verbs like list, search, inspect, and get. The naming is uniform and predictable.

Tool Count5/5

Five tools cover the core read-only capabilities of Google Search Console without unnecessary bloat. The scope is well-defined and each tool has a clear purpose.

Completeness4/5

The set covers site listing, search analytics, URL inspection, and sitemap details. Minor gaps include no sitemap submission or site management, but these are not critical for typical monitoring and analysis workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for querying Google Search Console data — search analytics, URL inspection, sitemap monitoring, and more — read-only tools for any MCP-compatible AI client.
    7
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.
    267
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.
    7
    Apache 2.0
  • 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcd3dr/google-search-console-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server