Skip to main content
Glama
dienhokhanh

Google Search Console MCP

by dienhokhanh

Google Search Console MCP

A secure, community-maintained Model Context Protocol server for Google Search Console. It gives MCP clients structured access to Search Analytics, properties, sitemaps, and URL Inspection.

CI npm License: MIT Node.js

Features

  • Query clicks, impressions, CTR, and average position.

  • List and inspect Search Console properties.

  • List and inspect submitted sitemaps.

  • Inspect the indexed version of a URL.

  • Return both readable text and structured MCP output.

  • Restrict access to an explicit property allowlist.

  • Keep sitemap mutation tools disabled by default.

  • Authenticate with a service account or Google Application Default Credentials.

  • Install with npx; no global package installation is required.

Related MCP server: GSC MCP Server

Requirements

  • Node.js 22.14 or newer.

  • A Google Cloud project with the Search Console API enabled.

  • A Google identity that has access to at least one Search Console property.

  • An MCP client such as Claude Code.

Quick start

1. Prepare Google credentials

For a service account:

  1. Enable the Google Search Console API in a Google Cloud project.

  2. Create a service account and download its JSON key.

  3. In Google Search Console, add the service account email under Settings → Users and permissions for each property it should access.

See Authentication for Application Default Credentials and detailed setup instructions.

2. Run the setup wizard

npx -y google-search-console-mcp setup

The wizard validates Google access, stores only the credential file path in the user configuration directory, and registers the MCP server with Claude Code at user scope.

Non-interactive setup is also supported:

npx -y google-search-console-mcp setup \
  --credentials /absolute/path/to/service-account.json \
  --allowed-sites sc-domain:example.com,https://www.example.com/ \
  --non-interactive

On Windows PowerShell, use one line or PowerShell backticks instead of backslashes.

3. Use it from Claude Code

Restart Claude Code after setup, then try:

List my Google Search Console properties.
Show clicks and impressions for the last 28 days, grouped by query.
Inspect https://www.example.com/article for indexing issues.
List the sitemaps submitted for sc-domain:example.com.

Run diagnostics at any time:

npx -y google-search-console-mcp doctor

Manual Claude Code registration

macOS and Linux:

claude mcp add google-search-console --scope user \
  --env GSC_CREDENTIALS_FILE=/absolute/path/to/service-account.json \
  -- npx -y google-search-console-mcp

Windows:

claude mcp add google-search-console --scope user --env GSC_CREDENTIALS_FILE=C:\path\to\service-account.json -- cmd /c npx -y google-search-console-mcp

See Client setup for project-level JSON configuration.

Tools

Tool

Default

Description

gsc_list_sites

Enabled

List accessible Search Console properties.

gsc_get_site

Enabled

Get permission information for one property.

gsc_query_search_analytics

Enabled

Query Search Analytics metrics and dimensions.

gsc_list_sitemaps

Enabled

List submitted sitemaps.

gsc_get_sitemap

Enabled

Get details about one sitemap.

gsc_inspect_url

Enabled

Inspect the version of a URL known to Google's index.

gsc_submit_sitemap

Opt-in

Submit a sitemap.

gsc_delete_sitemap

Opt-in

Remove a submitted sitemap.

URL Inspection does not run a live test and cannot request indexing. Google does not expose those actions through the Search Console API.

See the complete Tool reference.

Configuration

Variable

Default

Description

GSC_CREDENTIALS_FILE

ADC

Path to a service account JSON file.

GOOGLE_APPLICATION_CREDENTIALS

ADC

Standard Google credential file variable.

GSC_ALLOWED_SITES

All accessible

Comma-separated property allowlist.

GSC_ENABLE_WRITE_TOOLS

false

Register sitemap mutation tools.

GSC_REQUEST_TIMEOUT_MS

30000

Google API request timeout.

GSC_MAX_RETRIES

2

Retry count for transient failures.

GSC_MAX_ANALYTICS_ROWS

25000

Maximum rows returned by one analytics request.

GSC_LOG_LEVEL

info

silent, error, warn, info, or debug.

GSC_CONFIG_FILE

OS config directory

Override the setup-generated config path.

Environment variables take precedence over the stored user configuration. See Configuration.

Security defaults

  • Read-only Google scope unless write tools are enabled.

  • No credentials or API response data are written to logs.

  • Logs go to stderr so MCP stdio messages remain valid.

  • Write tools are absent from the tool list unless explicitly enabled.

  • Property access can be constrained with GSC_ALLOWED_SITES.

  • No telemetry.

Read Security model and Security policy before enabling write tools.

Development

git clone https://github.com/dienhokhanh/google-search-console-mcp.git
cd google-search-console-mcp
npm install
npm run check

Run the development server:

npm run dev

See Development and Contributing.

License

MIT

Available Tools

6 tools
gsc_get_siteGet a Search Console propertyB
Read-onlyIdempotent

Get permission information for one Google Search Console property.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesSearch Console property, such as "sc-domain:example.com" or "https://www.example.com/".

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and idempotency profile is covered. The description adds that the returned payload is permission information, which is useful context about the result, but nothing about auth requirements, error states, or rate limits.

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 purpose front-loaded. It is tight, though so terse that it omits any context that would help selection.

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

Completeness3/5

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

For a simple one-parameter read tool with full annotation coverage this is nearly adequate, but with no output schema the description carries some burden for explaining what 'permission information' includes, and it does so only vaguely.

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 there is a single required parameter, so the schema already documents siteUrl with concrete examples ('sc-domain:example.com'). The description adds nothing about the parameter, making the baseline of 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 (get) and resource (permission information for one Search Console property), which is more precise than the tool name alone. The singular 'one property' implicitly contrasts with the plural gsc_list_sites sibling, though no sibling is named explicitly.

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 offers no when-to-use guidance or exclusions. It does not state that gsc_list_sites should be used for enumerating properties, so the agent must infer the distinction between the singular and plural tools.

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

gsc_get_sitemapGet a sitemapB
Read-onlyIdempotent

Get details about a submitted sitemap.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesSearch Console property, such as "sc-domain:example.com" or "https://www.example.com/".
sitemapUrlYesAbsolute URL of the sitemap.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context of its own (auth needs, error cases for unsubmitted sitemaps, return shape) but does not contradict the annotations either.

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 resource front-loaded. It is efficient, though nearly to the point of under-specification rather than tightness.

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 lookup with two fully documented parameters and no nested objects or output schema, the description plus annotations is essentially complete. The only gap is that 'details' is never characterized.

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 both parameters documented (siteUrl property format and sitemapUrl as an absolute URI), so the schema carries the parameter semantics. The description adds nothing beyond that, which is the baseline 3 case.

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 (get details about a submitted sitemap), which is clear on its own. However it does not distinguish itself from the sibling gsc_list_sitemaps, so an agent must infer that this one retrieves a single sitemap rather than enumerating them.

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, prerequisites, or alternatives are given. There is no mention of gsc_list_sitemaps as the way to discover sitemapUrl values, nor any note that the sitemap must already be submitted.

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

gsc_inspect_urlInspect a URLA
Read-onlyIdempotent

Inspect the version of a URL currently known to Google's index. This does not run a live test or request indexing.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesSearch Console property, such as "sc-domain:example.com" or "https://www.example.com/".
languageCodeNo
inspectionUrlYesFully qualified URL to inspect.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuine context beyond them: this reads cached index state rather than triggering a live crawl or indexing, which is the key behavioral distinction an agent needs. It omits rate/quota behavior, which is notable for this API.

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, front-loaded with the action and followed immediately by the clarifying exclusion. No filler, no repetition of the title's wording.

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 no output schema, the description should indicate what inspection results contain (index status, coverage state, crawl info) and any quota constraints, but it says nothing about the response shape. Combined with the undocumented languageCode parameter, this leaves clear gaps for a tool an agent must interpret results from.

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 67%: siteUrl and inspectionUrl are documented in the schema, while languageCode carries only a pattern with no explanation. The description adds no parameter meaning at all, so it relies entirely on structured fields; baseline 3 is appropriate for this moderate coverage.

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: inspecting the index-known version of a URL, plus a useful negative ('not a live test or indexing request'). It is immediately distinguishable from the sibling tools (sites, sitemaps, search analytics), though no sibling performs a comparable action, so explicit differentiation has no target.

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 tells the agent when NOT to use it ('does not run a live test or request indexing'), which prevents a common misuse of this tool for indexing requests. It does not name an alternative or state prerequisites such as property access, so it stops short of full routing guidance.

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

gsc_list_sitemapsList sitemapsC
Read-onlyIdempotent

List sitemaps submitted for a Google Search Console property.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesSearch Console property, such as "sc-domain:example.com" or "https://www.example.com/".
sitemapIndexNoOptional sitemap index URL used to filter results.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no pagination behavior, no result cap, and no note about what the optional sitemapIndex filter does at runtime.

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 or redundancy. It is efficient, though its brevity is partly under-specification rather than disciplined trimming.

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

Completeness3/5

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

For a two-parameter read-only list tool with full schema coverage, the description is adequate but thin. With no output schema present, it should at least hint at what is returned (sitemap URLs, submission status) or whether results are paginated.

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

Parameters3/5

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

Schema coverage is 100%, with both siteUrl and sitemapIndex documented in the schema itself, so the baseline of 3 applies. The description contributes no additional parameter meaning, such as how sitemapIndex filtering combines with the property scope.

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) scoped to a Google Search Console property, so the intent is unambiguous. It does not, however, distinguish itself from the sibling gsc_get_sitemap, which is the closest alternative an agent must choose between.

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 gsc_get_sitemap or gsc_list_sites, and no mention of prerequisites such as a verified property. Usage is only implied by the tool name and description.

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

gsc_list_sitesList Search Console propertiesA
Read-onlyIdempotent

List Google Search Console properties available to the configured identity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered by structured data. The description contributes one extra fact — that results are scoped to the 'configured identity' — but says nothing about result shape or pagination beyond that.

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. The scope constraint appears at the end where it adds value without delaying the core action.

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 no parameters, no nested objects, and full annotation coverage, the description is nearly sufficient for correct invocation. The one gap is that no output schema exists and the description doesn't hint at what a property entry contains, leaving return shape unspecified.

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 schema takes no parameters and reports 100% description coverage, so the description has no parameter semantics to compensate for. Baseline 4 applies for a parameterless tool.

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 ('Google Search Console properties') with an explicit scope qualifier ('available to the configured identity'). It is clearly distinguishable from siblings like gsc_get_site, gsc_inspect_url, and gsc_list_sitemaps, though it never names an alternative to differentiate itself.

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?

There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives. For a zero-parameter enumeration tool the intended use is strongly implied, but the definition leaves it to inference rather than stating it.

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

gsc_query_search_analyticsQuery Search AnalyticsC
Read-onlyIdempotent

Query clicks, impressions, CTR, and average position from Google Search Console. Use startRow for pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoweb
endDateYesInclusive end date.
siteUrlYesSearch Console property, such as "sc-domain:example.com" or "https://www.example.com/".
rowLimitNo
startRowNo
dataStateNofinal
startDateYesInclusive start date.
dimensionsNo
aggregationTypeNo
dimensionFilterGroupsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds a pagination behavior hint (startRow), which is genuinely useful, but reveals nothing about row caps, data freshness/state, rate limits, or result shape.

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?

Two tight sentences, front-loading the purpose before the pagination tip with no filler. Appropriately sized, though the second sentence carries little weight relative to the missing semantic detail.

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

Completeness2/5

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

For a 10-parameter, nested-filter tool with no output schema and low schema description coverage, the description is too thin. It omits how dimensions drive the result granularity, the rowLimit ceiling of 25000, date format expectations, and filter group semantics that an agent would need to invoke it reliably.

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

Parameters2/5

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

Schema description coverage is only 30% across 10 parameters, so the description must compensate but does not. It explains startRow only, leaving siteUrl, dimensions, rowLimit, aggregationType, dataState and dimensionFilterGroups undocumented in prose; these are structured-only and potentially ambiguous, especially the nested filter group shape.

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 (Query) and resource (Google Search Console Search Analytics) and enumerates the returned metrics (clicks, impressions, CTR, average position). It is clearly distinct from the sibling tools (sites, sitemaps, URL inspection), though it does not explicitly say so.

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 only usage guidance is 'Use startRow for pagination', which is a parameter tip rather than a when-to-use statement. There is no indication of when this should be chosen over alternatives or what preconditions (e.g., verified property) apply.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedgsc_get_site
    • First observedgsc_get_sitemap
    • First observedgsc_inspect_url
    • First observedgsc_list_sitemaps
    • First observedgsc_list_sites
    • First observedgsc_query_search_analytics

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: sites (list vs permission get), sitemaps (list vs detail get), URL inspection, and search analytics. The list/get pairs are clearly separated by their descriptions, and query_search_analytics and inspect_url have no overlap.

Naming Consistency5/5

All tools use a uniform gsc_ prefix followed by a consistent verb_noun pattern (list_sites, inspect_url, get_site, query_search_analytics, list_sitemaps, get_sitemap). No style mixing.

Tool Count5/5

Six tools is well-scoped for a Search Console read surface, covering properties, sitemaps, analytics, and URL inspection without redundancy. Each tool earns its place.

Completeness4/5

Core read operations (list/get sites, list/get sitemaps, analytics query, URL inspection) are covered. Notable gaps exist on the write side: no sitemap submission/deletion and no indexing request, which limits lifecycle coverage but is workable for a read-focused server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

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