Skip to main content
Glama
searchconsole-mcp

searchconsole-mcp

by harisnadeem

Google Search Console MCP Server (by Haris Nadeem)

Package name: searchconsole-mcp

A lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.

Python 3.10+ License

Features

  • 7 Powerful Tools: List sites, query search analytics, manage sitemaps, inspect URLs

  • Fast & Lightweight: Built with httpx and google-auth — minimal dependencies

  • Standard MCP: Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client

  • Full Analytics: Query clicks, impressions, CTR, and position with flexible dimensions and filters

  • URL Inspection: Check indexing status and coverage for any URL

  • Sitemap Management: Submit, list, and delete sitemaps

Related MCP server: gsc-mcp-connector

Installation

pip install searchconsole-mcp

From source

git clone https://github.com/harisnadeem/searchconsole-mcp.git
cd searchconsole-mcp
pip install -e .

Quick Start

1. Enable the Search Console API

  1. Go to Google Cloud Console

  2. Select or create a project

  3. Click Enable

2. Authenticate

Option A: User Account (OAuth) — recommended for personal use

gcloud auth application-default login

Option B: Service Account — recommended for team/agency use

  1. Create a service account: Google Cloud Console → IAM → Service Accounts

  2. Download the JSON key

  3. Set the environment variable:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"

3. Configure your MCP client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "searchconsole": {
      "command": "searchconsole-mcp",
      "env": {}
    }
  }
}

Cursor

In Cursor Settings → Features → MCP, add:

  • Name: searchconsole

  • Type: command

  • Command: searchconsole-mcp

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "searchconsole": {
      "command": "searchconsole-mcp"
    }
  }
}

Usage Examples

Once connected, ask your AI assistant:

Available Tools

Tool

Description

get_sites

List all verified sites in your Search Console account

query_search_analytics

Query clicks, impressions, CTR, position by dimensions

get_sitemap

Get metadata for a specific sitemap

list_sitemaps

List all sitemaps for a site

submit_sitemap

Submit/add a new sitemap URL

delete_sitemap

Remove a sitemap from Search Console

inspect_url

Inspect indexing status, coverage, and robots.txt state

Configuration

Environment Variables

Variable

Description

Required

GOOGLE_APPLICATION_CREDENTIALS

Path to service account key JSON

Only if using service account

Google Cloud Project

The server uses Application Default Credentials (ADC). Ensure the Google Cloud project has the Search Console API enabled.

API Rate Limits

The Search Console API enforces per-user quotas:

  • Default: ~25,000 queries per day

  • URL Inspection: Limited (~10 per minute)

The server does not implement additional rate limiting; respect the API quotas.

Requirements

  • Python 3.10+

  • Google Cloud project with Search Console API enabled

  • Authenticated Google account with Search Console access

Development

# Clone and setup
git clone https://github.com/harisnadeem/searchconsole-mcp.git
cd searchconsole-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
python -m pytest tests/

# Format code
black searchconsole_mcp/
ruff check searchconsole_mcp/

Publishing a Release

This repository is configured for GitHub Actions + PyPI Trusted Publishing.

  1. In PyPI, create the project searchconsole-mcp (or use the existing one).

  2. In PyPI project settings, add a Trusted Publisher:

    • Owner: harisnadeem

    • Repository: searchconsole-mcp

    • Workflow: publish.yml

    • Environment: pypi

  3. Create and push a version tag:

    git tag v0.1.0
    git push origin v0.1.0
  4. Create a GitHub Release for that tag.

  5. The Publish to PyPI workflow publishes the package automatically.

Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.

Changelog

See CHANGELOG.md for version history.

License

Apache 2.0 — see LICENSE for details.

Acknowledgments

Built with:


Not officially affiliated with Google. This is an unofficial, community-maintained MCP server for Google Search Console.

Available Tools

7 tools
delete_sitemapA

Delete a sitemap from a website.

Args: site_url: The site, e.g. 'https://example.com/'. feedpath: The sitemap path to delete, e.g. '/sitemap.xml'.

Returns: Empty dict on success.

Inputs: site_url (required), feedpath (required).

get_sitemapA

Get details about a specific sitemap.

Args: site_url: The site, e.g. 'https://example.com/'. feedpath: The sitemap path, e.g. '/sitemap.xml'.

Returns: Dictionary with sitemap metadata (submitted/referenced counts, last downloaded, errors, warnings).

Inputs: site_url (required), feedpath (required).

get_sitesA

List all websites in the user's Search Console account.

Returns a list of site entries, each containing 'siteUrl' and permission level.

Inputs: no named parameters.

inspect_urlA

Inspect the indexing status of a URL in Google.

Args: site_url: The site URL registered in Search Console, e.g. 'https://example.com/'. inspection_url: The full URL to inspect, e.g. 'https://example.com/some-page'. language_code: The language code for the inspection request (default 'en-US').

Returns: Dictionary with inspection result including indexStatus, coverageState, robots_txt_state, page_fetch_state, etc.

Inputs: site_url (required), inspection_url (required), language_code.

list_sitemapsA

List all sitemaps submitted for a website.

Args: site_url: The site whose sitemaps to list, e.g. 'https://example.com/'.

Returns: Dictionary with 'sitemap' list containing feedpath, type, contentsCounts, etc.

Inputs: site_url (required).

query_search_analyticsA

Query Search Analytics data for a website.

Args: site_url: The site to query, e.g. 'https://example.com/' or 'sc-domain:example.com'. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. dimensions: Group results by these dimensions. Valid values: date, query, page, country, device, searchAppearance. Omit to get aggregate totals with no grouping. search_type: Type of search to filter by. Values: web (default), image, video, news, discover, googleNews. row_limit: Maximum number of rows to return (default 1000). start_row: Zero-based offset for pagination (default 0). data_state: Include only 'final' (default) confirmed data, or 'all'. aggregation_type: How to aggregate data. 'auto' (default), 'byPage', or 'byProperty'. dimension_filter_groups: List of filter groups to apply. Each group has 'groupType' ('and'/'or') and 'filters' list. Each filter: {dimension, expression, operator}. Operators: equals, notEquals, contains, notContains, beginsWith, notBeginsWith, endsWith, notEndsWith, isEmpty, isNotEmpty.

Returns: Dictionary with 'rows' (list of result rows) and 'responseAggregationType'. Each row contains dimension values in 'keys' plus: - clicks (total clicks) - impressions (total impressions) - ctr (click-through rate) - position (average search position)

Inputs: site_url (required), start_date (required), end_date (required), dimensions, +6 more.

submit_sitemapA

Submit (add) a sitemap to a website.

Args: site_url: The site, e.g. 'https://example.com/'. feedpath: The sitemap path to submit, e.g. '/sitemap.xml'.

Returns: Empty dict on success.

Inputs: site_url (required), feedpath (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a distinct purpose: sitemap operations (delete, get, list, submit), site listing, URL inspection, and analytics querying. No overlapping functionality.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., delete_sitemap, get_sites, query_search_analytics), making naming predictable.

    Tool Count5/5

    With 7 tools, the set is well-scoped for the Google Search Console domain, covering essential operations without unnecessary bloat.

    Completeness4/5

    Covers core functionality: site listing, sitemap management (CRUD), URL inspection, and search analytics. Minor gaps like site permission management or other reports are missing but not critical.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      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
      39 PyPI
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Self-hosted MCP server that exposes Google Search Console tools (list sites, query analytics, inspect URL, list sitemaps) via natural language to AI assistants like ChatGPT and Claude.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server that exposes the Google Search Console API, allowing LLMs to query SEO data, inspect URLs, manage sitemaps, and analyze search performance via natural language.
      37 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Self-hosted MCP server that connects Google Search Console to AI assistants, enabling natural language queries about search analytics, sitemaps, and URL inspection data.
      MIT