cygnix-seo
OfficialProcesses Google Search Console CSV exports (Query + Page dimensions) to detect keyword cannibalization, ranking competing pages as HIGH/MEDIUM/LOW and suggesting canonical targets, merges, or de-optimization actions.
Click on "Deploy 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., "@cygnix-seoHere is my GSC export (query + page). Find keyword cannibalization and tell me what to merge."
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.
Cygnix SEO MCP: free SEO tools for Claude, Cursor & any MCP client
5 no-API-key SEO tools that work on your data: paste keywords, a Google Search Console export or your titles, and get clusters, intent, cannibalization fixes, CTR checks and content briefs. Everything is deterministic and runs locally. No accounts, no tracking, and no made-up search volumes.
Built by Cygnix Labs.
Tool | What it does |
| Groups a keyword list into topical clusters and picks a pillar keyword per cluster (one cluster ≈ one page) |
| Labels keywords informational / commercial / transactional / navigational, with the matching signal |
| Reads GSC CSV (Query + Page) and flags queries where your own pages compete, ranked HIGH/MEDIUM/LOW, with a fix |
| Scores title tags and meta descriptions (0–100): char + pixel truncation, keyword placement, CTR hooks |
| Builds a brief from your keyword: intent, title options, meta draft, slug, H2 outline, questions to answer, on-page checklist |
Install
Requires Node.js 18+.
Claude Desktop
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"cygnix-seo": { "command": "npx", "args": ["-y", "cygnix-seo-mcp"] }
}
}Restart Claude Desktop.
Cursor
Settings → MCP → Add new server, or add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"cygnix-seo": { "command": "npx", "args": ["-y", "cygnix-seo-mcp"] }
}
}Claude Code
claude mcp add cygnix-seo -- npx -y cygnix-seo-mcpOther clients (VS Code, Windsurf, Cline, Zed…)
Any MCP client that supports stdio: command npx, args -y cygnix-seo-mcp.
From source
git clone https://github.com/cygnixlabs-cmd/cygnix-seo-mcp && cd cygnix-seo-mcp
npm install && npm test
node dist/index.jsRelated MCP server: Google SEO MCP
Example prompts
"Cluster these 80 keywords and tell me which page each cluster should target:" (paste list)
"Classify the search intent of these keywords and flag the commercial ones."
"Here is my GSC export (query + page). Find keyword cannibalization and tell me what to merge."
"Check the titles and meta descriptions for these 10 URLs against their target keywords."
"Write a content brief for 'technical seo audit' using these related keywords: …"
Example output (cannibalization)
## [HIGH] "seo audit checklist" (2 pages, #2 page share 38%)
| Page | Clicks | Impr | Avg pos |
| https://site.com/a | 30 | 1000 | 4.2 |
| https://site.com/b | 5 | 600 | 9.1 |
Action: Pick https://site.com/a as canonical target; merge/301 or de-optimize the others...Getting GSC data: Search Console → Performance → Search results → add the Page dimension alongside Query (or use the Looker Studio / API export) → Export CSV → paste the text.
Honest limits
Intent and clustering are rule-based/lexical, so treat them as a fast first pass and confirm with the live SERP.
Title pixel widths are approximations of Google's SERP rendering.
No tool estimates search volume or difficulty. Use your own data source for that.
Want the full workflow?
These tools are the free starter layer of the Cygnix SEO Toolkit: full agent skills, prompts and sheets for keyword research → briefs → audits → content refresh.
🔎 SEO Toolkit Vol. 1: Keyword Research → Content Refresh (Agensi)
👤 All Cygnix Labs skills on Agensi · Gumroad store · Medium · X
Keywords
MCP server, Model Context Protocol, SEO MCP, keyword research, keyword clustering, search intent classifier, keyword cannibalization, Google Search Console, title tag checker, meta description length, CTR optimization, content brief generator, Claude SEO, Cursor SEO, AI SEO tools, free SEO tools, no API key.
License
MIT © Cygnix Labs
Available Tools
5 toolscheck_title_metaB
Check title tags and meta descriptions for length/pixel truncation, keyword placement and CTR hooks. Returns a 0-100 score with fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the output shape (a 0-100 score with fixes), but is silent on how items are processed (e.g., whether urls are fetched or only provided title/meta are analyzed), batch behavior, or any auth/rate limits, leaving meaningful behavioral gaps.
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?
Two tight sentences, front-loaded with the check criteria and closed with the return summary. No filler, though it stops short of a genuinely efficient 5 by omitting any routing or scoping clause.
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?
For a structured-input tool with no output schema and no annotations, the description covers purpose and rough return value but leaves parameter semantics and usage context unaddressed. Adequate but with clear gaps relative to the tool's complexity.
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 description coverage is 0% on a nested array-of-objects parameter (title required; url, meta, keyword optional; max 100 items). The description adds no parameter meaning at all, so an agent must infer the required title field and the 100-item cap purely from the raw 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?
States a specific verb (Check) and resource (title tags and meta descriptions) plus the concrete criteria examined: length/pixel truncation, keyword placement, CTR hooks. This is clearly distinguishable from siblings like cluster_keywords or content_brief_outline, though it never explicitly names an alternative.
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 implies an SEO meta-audit but gives no when-to-use, when-not-to-use, or alternative guidance. It does not say whether to call this before or after content_brief_outline, or how it relates to the other SEO siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_search_intentC
Classify keywords as informational, commercial, transactional or navigational using modifier rules.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Keywords, one per line or comma separated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It hints at method ('using modifier rules') but says nothing about the return format, whether one label is returned per keyword, how ambiguous keywords are handled, or any limits. For a classifier with zero structured coverage of behavior, this is a notable gap.
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?
A single efficient sentence with the core action and output categories front-loaded and no filler. It could still be slightly richer without becoming verbose.
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?
The tool is simple (one required param) and there is no output schema, so the description should at least sketch the response shape — it does not. No annotations exist to cover safety or behavior either, leaving the return contract undefined.
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% and the single parameter's format ('one per line or comma separated') is already documented in the schema. The description adds nothing beyond that, so the baseline 3 for high coverage applies.
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?
States a specific verb (classify) and resource (keywords) and enumerates the four output labels, so the agent knows exactly what the tool produces. It does not explicitly differentiate itself from siblings like cluster_keywords, but the verb+resource is specific enough to be unambiguous.
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 when-to-use guidance, no prerequisites, and no mention of when another sibling (e.g., cluster_keywords) would be preferred instead. Usage is only implied by the SEO context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cluster_keywordsB
Group a pasted keyword list (newline/comma separated) into topical clusters with a suggested pillar keyword per cluster. Deterministic; no search volumes.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Keywords, one per line or comma separated | |
| min_shared_terms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two real behavioral traits: the operation is deterministic and returns no search-volume data. However it says nothing about side effects, size/rate limits, or the shape of the returned cluster structure, leaving notable gaps for an unannotated tool.
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?
Two tight sentences: the core input/output contract is front-loaded, and the caveat clause follows. No filler or redundant restatement of the name.
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?
For a stateless transform with no output schema and no annotations, the description partially covers the contract (input format, output concept, determinism) but omits the tuning parameter's semantics, output structure, and any size limits. Adequate but with clear holes.
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 only 50%: 'keywords' is documented in both places (the description merely restates the newline/comma format), while 'min_shared_terms' is undocumented in the schema and completely unexplained in the description. The description does not compensate for the coverage gap, so the second parameter's meaning must be guessed.
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 names a specific verb+resource ('Group a pasted keyword list ... into topical clusters') and even specifies the output artifact ('a suggested pillar keyword per cluster'). It does not reference any sibling tool to differentiate itself, but the siblings (search intent, cannibalization, title/meta, brief outline) are far enough apart that confusion is unlikely.
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 by the input description (pasted keyword list) rather than explicitly stated, and no alternative tool is named. 'Deterministic; no search volumes' faintly signals a when-not (not for data-enriched analysis), but the agent gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_brief_outlineB
Generate a content brief (intent, title options, meta draft, H2 outline, questions, on-page checklist) for a target keyword plus optional related keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| audience | No | ||
| word_count | No | ||
| related_keywords | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the content of the generated artifact, which is meaningful behavioral context given there is no output schema. However, it says nothing about determinism, cost/latency, permissions, or whether related_keywords changes the output shape.
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?
A single front-loaded sentence with no filler, and the parenthetical list of outputs is information-dense rather than padding. Slightly heavy nesting, but every element 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?
The output enumeration usefully compensates for the missing output schema, and no safety annotations are needed for a generation tool. But with 0% parameter coverage and no usage routing against four siblings, the definition is only minimally adequate.
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 description coverage is 0%, so the description must compensate for all four parameters. It only accounts for keyword and related_keywords (and marks the latter optional); audience and word_count are never mentioned, and word_count's 300-10000 bounds go unexplained.
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?
States a specific verb ("Generate") and resource ("content brief") and enumerates the concrete deliverables (intent, title options, meta draft, H2 outline, questions, on-page checklist). This clearly separates it from narrower siblings like check_title_meta or classify_search_intent, though it never names them explicitly.
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 only scoping cue is "for a target keyword plus optional related keywords," which is parameter guidance rather than when-to-use guidance. There is no statement of when this tool is preferred over classify_search_intent (whose intent output overlaps) or the other siblings, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_keyword_cannibalizationB
Find queries where 2+ of your pages compete, from a Google Search Console export (CSV/TSV text with Query and Page columns; clicks, impressions, position optional).
| Name | Required | Description | Default |
|---|---|---|---|
| gsc_csv | Yes | Pasted GSC CSV text including header row | |
| min_impressions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It usefully defines the trigger condition (2+ pages competing on one query) and the accepted input format (CSV/TSV with Query and Page columns, optional clicks/impressions/position), but says nothing about what analysis is returned or how competing pages are reported.
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?
A single, front-loaded sentence with no filler; the parenthetical efficiently packs the input format and column requirements. Dense but readable, with the core purpose stated first.
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?
With no output schema and no annotations, the description is expected to carry more. It covers the input contract well but omits any indication of the return shape (e.g., list of cannibalized queries with competing URLs) and leaves min_impressions undefined, so it is only minimally complete for invocation.
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 50%: gsc_csv is documented and the description usefully expands it with required vs. optional columns and accepted delimiters. However, min_impressions is undocumented in both the schema and the description, so the second parameter's meaning and default behavior remain unclear.
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?
States a specific verb ('Find') plus a precisely defined resource ('queries where 2+ of your pages compete'), which is a distinct concept from the sibling tools (clustering, intent classification, title/meta checks). An agent can identify the output concept immediately. It doesn't explicitly distinguish itself from any named sibling, keeping it short of 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?
Use context is implied by the required input ('from a Google Search Console export') — an agent infers you need GSC data to call it. However, there is no explicit when-to-use, when-not-to-use, or routing to/away from siblings like cluster_keywords or classify_search_intent.
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.
5 tool updates
v1.0.0- First observed
check_title_meta - First observed
classify_search_intent - First observed
cluster_keywords - First observed
content_brief_outline - First observed
find_keyword_cannibalization
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: clustering keywords, classifying intent, finding cannibalization, checking title/meta tags, and generating a content brief. cluster_keywords and classify_search_intent both take keyword lists but perform clearly different transformations, so boundaries are easy to draw.
Nearly all tools use a consistent snake_case verb_noun pattern (cluster_keywords, classify_search_intent, find_keyword_cannibalization, check_title_meta). content_brief_outline breaks the verb-first pattern by using noun_noun, a minor deviation but still readable and predictable overall.
Five tools is well-scoped for a focused keyword/content SEO toolkit, and each one earns its place in the workflow. No redundancy or filler tools.
The surface covers a coherent pipeline: keyword clustering, intent classification, cannibalization detection, content briefs, and on-page title/meta checks. Minor gaps exist (no rank/serp tracking or backlink/site-audit capabilities), but core keyword-and-content workflows are covered end to end.
Maintenance
Related MCP Connectors
Turn Search Console data into SEO actions, content, publishing, indexing, and AI insights.
AI-powered SEO and marketing: keyword research, SERP analysis, and content optimization tools.
Turns SEO insight into page changes: keyword research, SERP and rank data, rewrites you approve.
Programmatic SEO as callable tools: research, generate, audit and publish landing pages.
Related MCP Servers
- AlicenseBqualityCmaintenanceAdvanced content gap analysis using Query Decomposition and Keyword Fan-Out (Google's patented methodology). Tells you exactly what user queries your content covers - and what it misses. Built on academic research because I needed to understand how AI search engines actually evaluate content.1122 npm12Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console and Google Analytics 4 through natural language, with tools for SEO analysis like anomaly detection, cannibalization detection, and opportunity scoring.13 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language analysis of Google Search Console data through Claude, with pre-built tools for quick wins, cannibalization detection, content decay, and more.Apache 2.0
- AlicenseBqualityCmaintenanceProvides technical SEO tools for AI agents, including structured data generation, meta tag creation, robots.txt validation, and SERP previews, all offline with no API key or account.1818 PyPIMIT