mcp-gsc-advanced
Provides tools for detecting keyword cannibalization, analyzing page-level queries, and tracking rank changes in Google Search Console.
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., "@mcp-gsc-advanceddetect keyword cannibalization on my site"
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.
mcp-gsc-advanced
Built by Artur Ferreira @ The GEO Lab · 𝕏 @TheGEO_Lab · LinkedIn · Reddit
MCP server for advanced Google Search Console analysis — keyword cannibalization detection, page-level query deep dive, and rank change tracking.
Extends basic GSC data into actionable SEO intelligence.
Tools
Tool | Description |
| Find queries where 2+ pages compete — severity scoring, impressions split, consolidation recommendations |
| All queries driving traffic to a specific page — sorted by impressions with CTR and position |
| Period-over-period position changes — finds significant gains and losses |
Related MCP server: gsc-mcp
Features
✅ GEO-native — built alongside the GEO Brand Citation Index, tracking brand visibility across ChatGPT, Perplexity, and Gemini
Install
# Claude Code (service account key file)
claude mcp add gsc-advanced \
-e GOOGLE_SERVICE_ACCOUNT_KEY=/path/to/service-account.json \
-e GSC_SITE_URL=https://yoursite.com/ \
-- npx mcp-gsc-advanced
# Or in .mcp.json
{
"mcpServers": {
"gsc-advanced": {
"command": "npx",
"args": ["mcp-gsc-advanced"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "/path/to/service-account.json",
"GSC_SITE_URL": "https://yoursite.com/"
}
}
}
}Authentication
Requires a Google service account with Search Console access.
Option A: Set GOOGLE_SERVICE_ACCOUNT_KEY to the path of your service account JSON file.
Option B: Set GOOGLE_CLIENT_EMAIL and GOOGLE_PRIVATE_KEY env vars directly.
Then add the service account email as a Full user in Google Search Console.
Usage
> detect keyword cannibalization on my site
> what queries drive traffic to /geo-stack/ page?
> show rank changes in the last 7 daysAttributions & Licence
Built and maintained by Artur Ferreira @ The GEO Lab.
Email: artur@thegeolab.net
Best Practice Attribution
This MCP server was built following the open source Best Practice Approach — reading community work for inspiration, then writing original content, and crediting every source.
Based on:
Model Context Protocol specification by Anthropic
MCP SDK (MIT)
GSC analysis concepts inspired by:
Google Search Console API — official documentation
Aleyda Solís — GSC cannibalization detection methodology
Kevin Indig / Growth Memo — GSC query analysis for AI search
Dependencies:
googleapis — Google APIs Node.js client (Apache 2.0)
All server code is original writing. No files were copied or adapted from any source. MIT licence.
Found this useful? ⭐ Star the repo and connect: 🌐 thegeolab.net · 𝕏 @TheGEO_Lab · LinkedIn · Reddit
Related Repos
claude-code-mcps — All 5 MCP servers in one collection
mcp-seo-auditor — On-page SEO audit + JSON-LD validation
mcp-serp-intel — SERP weak spots, PAA trees, intent comparison
mcp-common-crawl — Free backlink discovery via Common Crawl
mcp-gsc-advanced — GSC cannibalization, rank changes
mcp-wordpress-setup — WordPress MCP server setup guide
Licence
MIT — see LICENSE
Built and maintained by Artur Ferreira @ The GEO Lab · MIT License
Available Tools
3 toolsdetect_cannibalizationA
Detect keyword cannibalization — finds queries where 2+ pages compete for the same keyword. Shows impressions split, severity (Critical/Warning/Minor), and recommends which page to keep.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | No | GSC site URL (default: from env) | |
| days | No | Lookback days (default 28) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full behavioral burden. It describes the tool as a read-like analysis (finds, shows, recommends), but does not explicitly state it is read-only or has no side effects. The description adds some behavioral context (output types) but falls short of complete transparency for a tool that likely only reads data.
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 two concise sentences with no filler. It front-loads the core purpose and lists key outputs efficiently. Every word adds value.
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 no output schema, the description compensates by outlining the output elements: impressions split, severity levels, and a recommendation. However, it does not specify the exact structure or whether the output is a list of items. Still, it provides enough context for an agent to understand what the tool returns.
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?
Schema coverage is 100% (both parameters have descriptions in the input schema). The description does not add any additional meaning or usage notes for the parameters beyond what the schema already provides. Baseline score of 3 is appropriate.
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 specific function: detecting keyword cannibalization. It explains what the tool does: identifies queries where multiple pages compete, and details the outputs (impressions split, severity levels, recommendation). This is a specific verb+resource that distinguishes it from sibling tools like page_queries and rank_changes.
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?
No explicit guidance on when to use this tool versus its siblings (page_queries, rank_changes). While the name and description imply it's for detecting cannibalization, there is no direct comparison or exclusion of alternatives. This leaves the agent without clear direction on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_queriesA
Get all GSC queries driving traffic to a specific page — sorted by impressions. Shows clicks, CTR, position for each query.
| Name | Required | Description | Default |
|---|---|---|---|
| page_url | Yes | Full page URL to analyze | |
| days | No | Lookback days (default 28) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks explicit disclosure of behavioral traits such as being read-only or any side effects. Since no annotations are provided, the description carries the full burden but does not state that the operation is non-destructive. It could be improved by clarifying that no data is modified.
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 a single, focused sentence that delivers the core purpose first and then provides supporting details. No unnecessary words or repetition.
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 and lack of output schema, the description covers the return data (clicks, CTR, position) and ordering (by impressions). However, it does not specify that results are sorted descending or if there are any limits. Most context is provided for this type of search analytics tool.
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?
Schema coverage is 100%, so baseline is 3. The description adds output field details (clicks, CTR, position) but does not add new information about the parameters beyond what the schema already provides.
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 'Get' and specifies the resource 'GSC queries driving traffic to a specific page'. It lists the output fields (clicks, CTR, position) and mentions sorting by impressions. This distinguishes it from sibling tools like detect_cannibalization and rank_changes, which have different focuses.
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?
Usage is implied for analyzing queries for a specific page, but there is no explicit guidance on when to use this tool versus alternatives. No exclusion conditions or when-not-to scenarios are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_changesB
Compare position changes between two periods. Finds queries that gained or lost significant positions.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | No | GSC site URL | |
| days | No | Period length in days (default 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It states it compares periods and finds significant changes, but does not explain how periods are defined, whether the operation is read-only, or any impacts. The description is too minimal to convey important behavioral traits.
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 at two short sentences with no wasted words. It is front-loaded with the main action and then details the result. Every word earns its place.
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 no output schema and no annotations, the description should provide more context about the return format (e.g., list of queries with change metrics) and how the two periods are determined. The current description only covers the basic purpose, leaving significant gaps for a tool with 2 optional parameters.
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?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that the tool compares 'two periods' (implying the 'days' parameter defines the length of each period or the lookback window), which goes beyond the schema's description of 'days' as 'period length'. This contextualizes the parameter meaning.
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 compares position changes between two periods and finds queries that gained or lost positions. The verb 'compare' and resources 'position changes' and 'queries' are specific. It distinguishes from siblings like 'detect_cannibalization' and 'page_queries' by focusing on rank shifts over time, though no explicit differentiation is given.
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?
No guidance is provided on when to use this tool vs alternatives (siblings). There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from purpose alone.
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.
3 tool updates
v1.0.0- First observed
detect_cannibalization - First observed
page_queries - First observed
rank_changes
TDQS
Scored across 3 tools
Each tool targets a distinct function: detect_cannibalization finds competing pages, page_queries lists queries for a page, rank_changes compares period positions. No overlap in purpose.
All names use snake_case with two tokens, but detect_cannibalization is verb_noun while page_queries and rank_changes are noun_verb. Still clear and predictable.
Three tools is reasonable for an advanced GSC server focused on keyword analysis. It covers core needs without being too sparse or cluttered.
The set covers key SEO analysis tasks (cannibalization, page queries, rank changes). Minor gaps like aggregate search analytics or filtering are acceptable given the specialized scope.
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
- CalmSEOOAuthcom.calmseo
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
SEO MCP server — backlinks, domain authority, tech stack, and 18+ tools via Common Crawl.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
- Prowl MCPOAuthchat.prowl
MCP server: 447 pay-as-you-go research tools (SEO, ads, SERP) + verified prowl_analyze reports
Related MCP Servers
- AlicenseBqualityBmaintenanceSEO audit and Google Search Console MCP server with 23 tools. Search analytics, URL inspection, Indexing API, Core Web Vitals (CrUX), striking distance keywords, keyword cannibalization detection, branded query analysis, and automated site audits.302MIT
- AlicenseAqualityAmaintenanceMCP server for Google Search Console, URL Inspection & Indexing API — search analytics, sitemap management, and batch indexing132037MIT
- AlicenseBqualityDmaintenanceProfessional Google Search Console MCP server providing 40+ SEO tools for performance analysis, content decay, CTR opportunities, and more, enabling real search data in clients like Cursor and Claude.40126MIT
- AlicenseCqualityCmaintenanceAn SEO analysis MCP server integrating Google Search Console, Bing Webmaster Tools, and GA4 with custom grain analysis tools for content decay, traffic drops, CTR benchmarking, and actionable recommendations.1001MIT