searchconsole-mcp
Provides read-only access to Google Search Console data, allowing users to query site performance metrics including keywords, clicks, impressions, CTR, rankings, and sitemap status.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@searchconsole-mcpWhat are my top 10 keywords by clicks this month?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
searchconsole-mcp
An MCP server that gives AI assistants read-only access to your Google Search Console data. Ask questions about your site's search performance in natural language — keywords, clicks, impressions, CTR, rankings, sitemaps, and more.
Tools
Tool | Description |
| Lists all verified Search Console properties with permission levels |
| Query keyword/page data — clicks, impressions, CTR, average position. Supports filtering by dimension, date range, search type, and pagination |
| Lists submitted sitemaps for a property |
Related MCP server: Google Search Console MCP Server
Quick Start
1. Install
git clone https://github.com/chrishart0/searchconsole-mcp.git
cd searchconsole-mcp
uv sync2. Authenticate
This server uses Google Application Default Credentials. Choose one:
Option A — Service account key (recommended for automation):
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.jsonOption B — User credentials (recommended for local development):
gcloud auth application-default login \
--scopes="https://www.googleapis.com/auth/webmasters.readonly"The service account or user must have access to the Search Console properties you want to query.
3. Connect to your MCP client
Add to ~/.claude.json:
{
"mcpServers": {
"searchconsole-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/searchconsole-mcp", "searchconsole-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/key.json"
}
}
}
}Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"searchconsole-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/searchconsole-mcp", "searchconsole-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/key.json"
}
}
}
}Any MCP-compatible client can connect over stdio. Run the server with:
uv run --directory /path/to/searchconsole-mcp searchconsole-mcpExample Prompts
Once connected, try asking your AI assistant:
"What are my top 10 keywords by clicks this month?"
"Show me pages with high impressions but low CTR"
"List all my Search Console properties"
"What queries is my site ranking for on page 2 of Google?"
"Show me my sitemaps and their status"
Development
uv sync --dev
uv run pytestLicense
Available Tools
3 toolslist_sitemapsB
Lists submitted sitemaps for a Search Console property.
Args:
site_url: The site URL as it appears in Search Console
(e.g. "https://mychefai.com" or "sc-domain:mychefai.com").
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. It states what the tool does but doesn't mention whether it's read-only, has rate limits, requires specific permissions, returns paginated results, or handles errors. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by parameter details. Both sentences earn their place, though the parameter explanation could be slightly more integrated rather than appearing as a separate 'Args:' section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which reduces the need to describe return values) but no annotations and only basic parameter documentation, the description is minimally adequate. It covers the core function and parameter but lacks behavioral context and usage guidance, making it incomplete for optimal agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable semantic context for the single parameter 'site_url' by explaining it's 'The site URL as it appears in Search Console' and providing format examples. Since schema description coverage is 0%, this compensates well, though it doesn't cover all potential edge cases or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('submitted sitemaps for a Search Console property'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_sites' or 'query_search_analytics', which would be needed for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'list_sites' or 'query_search_analytics'. It mentions the required 'site_url' parameter but offers no context about prerequisites, timing, or appropriate use cases beyond the basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesA
Lists all verified properties in Google Search Console.
Returns site URLs and permission levels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. It specifies that it lists 'verified properties' and returns 'site URLs and permission levels', which adds useful context about scope and output. However, it doesn't mention potential limitations like pagination, rate limits, or authentication needs, leaving gaps in behavioral understanding for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that directly state the purpose and output without any fluff. It is front-loaded with the core action ('Lists all verified properties'), making it efficient and easy to parse. Every sentence adds value, justifying a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is reasonably complete. It explains what the tool does and what it returns, and the output schema will handle return value details. However, it could improve by adding usage context or behavioral traits like rate limits, slightly reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately avoids discussing parameters, focusing instead on the tool's function and output. This aligns with the baseline for zero parameters, earning a high score for not adding unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('all verified properties in Google Search Console'), making the purpose immediately understandable. It distinguishes from siblings like 'list_sitemaps' (which lists sitemaps) and 'query_search_analytics' (which queries analytics data). However, it doesn't explicitly mention sibling differentiation, keeping it at a 4 rather 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.
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 'list_sitemaps' or 'query_search_analytics'. It lacks context about prerequisites (e.g., needing verified properties) or exclusions, leaving the agent to infer usage based on tool names alone. This minimal guidance warrants a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_search_analyticsA
Query Google Search Console search analytics data.
This is the main keyword research tool. Returns rows with clicks,
impressions, CTR, and average position.
Args:
site_url: The site URL as it appears in Search Console
(e.g. "https://mychefai.com" or "sc-domain:mychefai.com").
start_date: Start date in YYYY-MM-DD format.
end_date: End date in YYYY-MM-DD format.
dimensions: List of dimensions to group by. Options: query, page,
date, country, device, searchAppearance. Defaults to ["query"].
row_limit: Max rows to return (1-25000, default 1000).
start_row: Starting row offset for pagination (default 0).
dimension_filters: Optional list of filter objects. Each filter has:
- dimension: the dimension to filter on (e.g. "query", "page")
- operator: one of "contains", "equals", "notContains",
"notEquals", "includingRegex", "excludingRegex"
- expression: the filter value
Example: [{"dimension": "query", "operator": "contains",
"expression": "keto"}]
search_type: Type of search results. One of: web, image, video,
news, discover, googleNews. Default "web".
aggregation_type: How to aggregate results. One of: auto, byPage,
byProperty. If omitted, the API auto-selects.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | ||
| start_date | Yes | ||
| end_date | Yes | ||
| dimensions | No | ||
| row_limit | No | ||
| start_row | No | ||
| dimension_filters | No | ||
| search_type | No | web | |
| aggregation_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what data is returned (rows with clicks, impressions, CTR, average position) and mentions pagination behavior via start_row. However, it doesn't disclose important behavioral traits like rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though 'Query' implies reading).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with a clear purpose statement followed by detailed parameter documentation. Every sentence earns its place, though the parameter section is quite lengthy (which is necessary given the complexity). It could be slightly more front-loaded with key usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations, but with output schema), the description is quite complete. It thoroughly documents all parameters and their semantics. The presence of an output schema means the description doesn't need to explain return values. However, it could better address behavioral aspects like rate limits or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation. It explains all 9 parameters with examples, default values, valid options (e.g., dimensions options, search_type values), and even includes a complete example for dimension_filters. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query Google Search Console search analytics data' with specific verb ('Query') and resource ('search analytics data'). It distinguishes this as 'the main keyword research tool' and specifies the returned metrics (clicks, impressions, CTR, average position), making it distinct from sibling tools like list_sitemaps and list_sites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by identifying this as 'the main keyword research tool,' which implicitly suggests when to use it. However, it doesn't explicitly state when to use alternatives like list_sites or list_sitemaps, nor does it provide exclusion criteria or prerequisites for usage.
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. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
list_sitemaps - First observed
list_sites - First observed
query_search_analytics
TDQS
Each tool has a clearly distinct purpose with no overlap: list_sitemaps handles sitemap management, list_sites provides property overview, and query_search_analytics focuses on search performance data. The descriptions reinforce these boundaries, making misselection unlikely.
All tools follow a consistent verb_noun pattern (list_sitemaps, list_sites, query_search_analytics) with clear, descriptive names. There are no deviations in style or convention across the set.
With only 3 tools, the set feels thin for a Search Console MCP server, lacking operations like sitemap submission/deletion, property verification, or detailed configuration management. While the tools cover core areas, the scope seems limited compared to typical API capabilities.
The tool surface has significant gaps for Search Console functionality: no create/update/delete operations for sitemaps or properties, missing tools for URL inspection, mobile usability, or security issues, and incomplete coverage of the API's core features like indexing status or rich results testing.
Maintenance
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
Read-only Search Console analytics, URL inspection, indexing diagnostics, and sitemaps.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Read Search Console performance, keyword opportunities and annotations for your sites.
Real SEO data for AI assistants: page audits, Keyword Planner volumes, Search Console history.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides AI agents with read-only access to Google Search Console data, including search analytics, index coverage, and sitemap status. It enables users to query clicks, impressions, and ranking performance or check URL indexing status through natural language.785MIT
- FlicenseNot gradedqualityFmaintenanceEnables interacting with Google Search Console via natural language, supporting search analytics, URL inspection, sitemap management, and site listing.25-
- AlicenseAqualityCmaintenanceConnects Google Search Console to AI assistants, enabling natural language analysis of SEO data. Provides read-only tools for properties, search analytics, URL inspection, and sitemaps.15MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to query and manage Google Search Console data, including search analytics, URL indexing status, and sitemap management, for SEO and LLMO analysis directly from a conversation.154,053MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/chrishart0/searchconsole-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server