CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

MCP Google Search Console

crunchtools/mcp-google-search-console
6 toolsSTDIOregistry active
Summary

Connects Claude to Google Search Console's API with OAuth2 refresh token auth. You get ten tools covering the main GSC workflows: query search analytics for clicks, impressions, CTR, and position data; manage sitemaps (list, submit, delete); inspect URL indexing status; and handle site property administration. Built by crunchtools with security-focused design (credentials as SecretStr, automatic token scrubbing, Pydantic validation). Setup requires a one-time OAuth flow to generate a refresh token, then the server handles access token rotation automatically. Useful when you're building SEO dashboards, automating sitemap submissions, or investigating indexing issues without leaving your chat context.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

6 tools
GOOGLE_SEARCH_CONSOLE_GET_SITEMAPRetrieves information about a specific sitemap for a site.2 params

Retrieves information about a specific sitemap for a site.

Parameters* required
feedpathstring
The URL of the sitemap to retrieve. For example: https://www.example.com/sitemap.xml
site_urlstring
The site's URL, including protocol. For example: https://www.example.com/
GOOGLE_SEARCH_CONSOLE_INSPECT_URLInspects a URL for indexing issues and status in Google Search Console.4 params

Inspects a URL for indexing issues and status in Google Search Console.

Parameters* required
urlstring
The URL to inspect. For example: https://www.example.com/page
site_urlstring
The site's URL, including protocol. For example: https://www.example.com/
language_codestring
The language code of the page. For example: en-USdefault: en-US
inspection_urlstring
The URL of the property as defined in Search Console. For example: https://www.example.com/
GOOGLE_SEARCH_CONSOLE_LIST_SITEMAPSLists all sitemaps for a site in Google Search Console.2 params

Lists all sitemaps for a site in Google Search Console.

Parameters* required
site_urlstring
The site's URL, including protocol. For example: https://www.example.com/
sitemap_indexstring
The sitemap index to start listing from. Used for pagination.
GOOGLE_SEARCH_CONSOLE_LIST_SITESLists all sites owned by the authenticated user in Google Search Console.

Lists all sites owned by the authenticated user in Google Search Console.

No parameter schema in public metadata yet.

GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERYQueries Google Search Console for search analytics data including clicks, impressions, CTR, and position metrics.10 params

Queries Google Search Console for search analytics data including clicks, impressions, CTR, and position metrics.

Parameters* required
end_datestring
The end date of the date range for the query, in YYYY-MM-DD format.
site_urlstring
The site's URL, including protocol. For example: https://www.example.com/
row_limitinteger
The maximum number of rows to return. Must be between 1 and 5000.default: 1000
start_rowinteger
The first row to return from the result set. Used for pagination.default: 0
data_statestring
The data state to return. Possible values: final, alldefault: final
dimensionsarray
The dimensions to group the data by. Possible values: query, page, country, device, date
start_datestring
The start date of the date range for the query, in YYYY-MM-DD format.
search_typestring
The search type to filter by. Possible values: web, video, image, newsdefault: web
aggregation_typestring
How data is aggregated. Possible values: auto, byPropertydefault: auto
dimension_filter_groupsarray
Filters to apply to the dimensions. Each filter group contains dimension filters.
GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAPSubmits a sitemap to Google Search Console for indexing.2 params

Submits a sitemap to Google Search Console for indexing.

Parameters* required
feedpathstring
The URL of the sitemap to submit. For example: https://www.example.com/sitemap.xml
site_urlstring
The site's URL, including protocol. For example: https://www.example.com/

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

uvx (recommended, zero-install)

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

OAuth Setup

This server authenticates to Google using OAuth2 with a refresh token. This is a one-time setup — once you have the three credentials, you store them as environment variables and never need to touch OAuth again.

What you need

CredentialWhat it isWhere it comes from
GSC_CLIENT_IDIdentifies your OAuth app to GoogleGoogle Cloud Console
GSC_CLIENT_SECRETSecret key for your OAuth appGoogle Cloud Console
GSC_REFRESH_TOKENLong-lived token that lets the server get access tokensOne-time browser consent flow

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: Desktop app
    • Name: anything (e.g., "MCP Search Console Desktop")
  9. Click Create — copy the Client ID and Client Secret

Step 2: Get a Refresh Token

Run this in your terminal to start the consent flow:

# Set your credentials from Step 1
export GSC_CLIENT_ID="your_client_id_here"
export GSC_CLIENT_SECRET="your_client_secret_here"

# Generate the authorization URL
echo "Open this URL in your browser:"
echo ""
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 printed URL in your browser
  2. Sign in with the Google account that owns your Search Console properties
  3. Click Allow to grant Search Console access
  4. The browser will redirect to http://127.0.0.1/?code=XXXX&scope=...
  5. This page will fail to load — that's expected. Copy the code= value from the URL bar (everything between code= and &scope)

Now exchange the authorization code for a refresh token:

# Paste the code value from the URL bar (the part between code= and &scope)
AUTH_CODE="paste_your_code_here"

curl -s -X POST https://oauth2.googleapis.com/token \
    -d "client_id=${GSC_CLIENT_ID}" \
    -d "client_secret=${GSC_CLIENT_SECRET}" \
    -d "code=${AUTH_CODE}" \
    -d "grant_type=authorization_code" \
    -d "redirect_uri=http://127.0.0.1" | python3 -m json.tool

The response will include a refresh_token field — copy it. This is the long-lived credential that lets the server authenticate without a browser.

Note: If you don't see refresh_token in the response, add &prompt=consent to the authorization URL and try again. Google only returns the refresh token on the first consent or when explicitly prompted.

Step 3: Store the Credentials

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_REFRESH_TOKEN=your_refresh_token
EOF
chmod 600 ~/.config/mcp-env/mcp-google-search-console.env

How it works at runtime

The server never stores or manages tokens on disk. On each API call:

  1. Server sends the refresh token to Google's token endpoint
  2. Google returns a short-lived access token (valid ~1 hour)
  3. Server uses the access token for the Search Console API call
  4. Access tokens are cached in memory and refreshed automatically when they expire

The refresh token itself never expires unless you explicitly revoke it in your Google Account permissions.

Available Tools (10)

CategoryCountTools
Sites4list_sites, get_site, add_site, delete_site
Search Analytics1query_search_analytics
Sitemaps4list_sitemaps, get_sitemap, submit_sitemap, delete_sitemap
URL Inspection1inspect_url

Security

  • OAuth2 credentials stored as SecretStr (never logged)
  • Environment-variable-only credential storage
  • 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

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
Search & Web CrawlingMonitoring & Observability
Registryactive
Packagemcp-google-search-console-crunchtools
TransportSTDIO
UpdatedMar 3, 2026
View on GitHub

Related Search & Web Crawling MCP Servers

View all →
Google Search

com.mcparmory/google-search

Scrape Google search results with SERP data, ads, and knowledge panels
25
Brave Search

io.github.pipeworx-io/brave-search

Brave Search MCP — independent web index (no Google/Bing dependency)
Serper Search and Scrape

marcopesani/mcp-server-serper

Serper MCP Server supporting search and webpage scraping
154
Brave Search Mcp Server

brave/brave-search-mcp-server

Brave Search MCP Server: web results, images, videos, rich results, AI summaries, and more.
1.2k
Google Search Console

com.mcparmory/google-search-console

Query search analytics, manage sitemaps, and inspect site URLs and status
25
Google Search Console

acamolese/google-search-console-mcp

Google Search Console MCP server: SEO audits, performance queries, URL inspection, indexing checks.
3