SEO Optimizer MCP Server
Provides organic search results retrieval via DuckDuckGo as a fallback when SerpAPI key is not set.
Provides PageSpeed Insights analysis for web pages, including Core Web Vitals and optimization opportunities.
Provides Lighthouse performance audit data as part of PageSpeed analysis.
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., "@SEO Optimizer MCP Serverrun a full SEO analysis on https://example.com"
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.
SEO Optimizer — MCP Server
An MCP server that exposes a multi-agent SEO
analysis toolkit to your own Claude client (Claude Code, Claude Desktop,
Cursor, …): 12 specialist agents as prompts plus crawl/data tools
(fetch_page, pagespeed, serp).
The reasoning runs on your own Claude (your subscription / login). You invoke
a prompt, your Claude performs the analysis using these tools. No
ANTHROPIC_API_KEY for the server, no central billing, no per-URL cost.
Ships as a single self-contained bundle (
dist/index.js) — the only runtime dependencies are@modelcontextprotocol/sdk,zod, andcheerio.
What it provides
Tools (deterministic, no LLM):
Tool | Purpose |
| Fetch a URL → cleaned, readable HTML |
| PageSpeed/Lighthouse summary (Core Web Vitals + opportunities) |
| Organic search results — SerpAPI if |
Prompts — technical-auditor, page-speed, meta-optimizer,
internal-link, semantic-content, cannibalization, competitor-gap,
ai-visibility, company-intelligence, feedback-analyzer, geo,
blog-writer, and seo-full-analysis (gathers evidence once, runs all 11
analysis lenses, then outputs a prioritized report).
Related MCP server: SEO Content Analysis MCP
Install
Requires Node.js 18+. Pick whichever you prefer — both are one command, no clone, no file paths:
# From npm (after the package is published)
npx -y seo-optimizer-mcp
# …or straight from GitHub, no npm publish needed
npx -y github:emirhanyenici/SEO-Optimizer-MCP
npxinstalls the three deps on first run and caches them.
Claude Code
claude mcp add seo-optimizer -s user -- npx -y seo-optimizer-mcp
# or: ... -- npx -y github:emirhanyenici/SEO-Optimizer-MCP-s usermakes it available in all your projects (use-s localfor just the current one, or-s projectto write a shared.mcp.json).Add optional keys with
-e SerpAPI_KEY=… -e GOOGLE_PAGESPEED_API_KEY=….Verify with
claude mcp list, or/mcpinside a session. The prompts appear as slash commands like/mcp__seo-optimizer__seo-full-analysis; the tools are available automatically.
Claude Desktop
Edit claude_desktop_config.json
(Windows %APPDATA%\Claude\…, macOS ~/Library/Application Support/Claude/…):
{
"mcpServers": {
"seo-optimizer": {
"command": "npx",
"args": ["-y", "seo-optimizer-mcp"],
"env": { "SerpAPI_KEY": "optional", "GOOGLE_PAGESPEED_API_KEY": "optional" }
}
}
}Cursor
Add to .cursor/mcp.json (or global ~/.cursor/mcp.json):
{
"mcpServers": {
"seo-optimizer": { "command": "npx", "args": ["-y", "seo-optimizer-mcp"] }
}
}Environment variables (both optional)
Var | Used by | Notes |
|
| With it: SerpAPI (richer, location-aware). Without it: automatic DuckDuckGo fallback. |
|
| Works without a key (public quota); a key raises the rate limit. |
The server runs and every tool works with no env at all.
Usage
In your Claude client, pick a prompt — e.g. Full SEO Analysis — and pass
url (required), keyword and competitorUrls (optional). Your Claude runs the
analysis and returns an overall score + a prioritized action table + per-lens
findings. All inference is billed to your account. For a single lens, invoke
that specialist's prompt instead (e.g. page-speed); for an SEO article, invoke
blog-writer.
Maintainers — building & releasing
The TypeScript source lives in the main SEO Optimizer project (it reuses that project's agent prompts and helpers). To cut a new release of this distributable:
# in the main project's mcp/ folder
npm run build # esbuild → dist/index.js (self-contained)Then publish/push the bundle:
npm publish # to npm → users get `npx -y seo-optimizer-mcp`
# and/or push dist + package.json + README to the public repo for `npx github:…`Available Tools
3 toolsfetch_pageFetch page HTMLA
Fetch a URL and return cleaned, readable HTML (scripts/styles/attributes stripped). Use for the target page, competitor pages, robots.txt, sitemap.xml, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to fetch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It discloses that output is cleaned HTML (scripts, styles, attributes stripped). However, it does not mention potential limitations like size limits, encoding handling, or error 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 concise, consisting of two sentences with no unnecessary words. It front-loads the primary action and includes useful examples efficiently.
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 low complexity (single parameter, no output schema, no annotations), the description is fairly complete. It explains the tool's purpose and output. It could be improved by specifying the return format (e.g., 'returns a string of cleaned HTML') but is 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 100%, so the description does not need to add much. The tool description just says 'Fetch a URL' which repeats the schema's 'The URL to fetch' without adding additional meaning or constraints.
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 'Fetch', the resource 'URL', and the output 'cleaned, readable HTML' with specifics of stripping scripts, styles, attributes. It gives examples of use cases (target page, competitor pages, robots.txt, sitemap.xml), distinguishing it from siblings like 'pagespeed' and 'serp'.
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 for when to use the tool, listing common use cases. It does not explicitly state when not to use it or compare to alternatives, but the examples imply usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pagespeedPageSpeed InsightsB
Google PageSpeed Insights / Lighthouse summary: Core Web Vitals (LCP, CLS, INP, TTFB, FCP) plus the biggest performance opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL to measure | |
| strategy | No | Device strategy | mobile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only states the output content (metrics and opportunities). No information on whether it runs a live test, caching behavior, authentication needs, or rate limits.
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?
Single sentence efficiently conveys purpose and key details. No unnecessary words, front-loaded with main function.
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 simple tool with two parameters and no output schema, the description covers basic intent. However, it lacks details on return format or how results are structured, which would aid an agent.
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 no extra meaning beyond the schema; the schema already describes url and strategy well.
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 provides a PageSpeed Insights/Lighthouse summary including specific Core Web Vitals and performance opportunities. It distinguishes implicitly from siblings (fetch_page, serp) by focusing on performance, but lacks explicit differentiation.
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 on when to use this tool vs siblings. The description only explains output; no context on prerequisites, when not to use, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serpSearch results (SERP)A
Organic search results for a keyword (top ranking URLs, titles, descriptions, positions). Uses SerpAPI if SerpAPI_KEY is set, otherwise falls back to a key-less DuckDuckGo lookup. The "source" field in the output says which was used.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Search keyword | |
| location | No | Country code, e.g. "us", "tr" (default "us") | |
| numResults | No | Number of results (max 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the two backends (SerpAPI with key, DuckDuckGo fallback) and the 'source' field in output. However, lacks details on rate limits, key availability consequences, or error cases. Without annotations, the description does a reasonable job but could be more thorough.
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 sentences with no filler. Front-loaded with core purpose, then adds behavioral detail. Every sentence 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?
Output is described (URLs, titles, descriptions, positions, source field), which is adequate given no output schema. Missing details on result limit enforcement, pagination, or data format, but the tool is simple and the description covers the essentials.
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 100%, so the schema already documents each parameter. The description adds no additional parameter-specific meaning beyond the schema. Baseline 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?
Description clearly states it returns organic search results (URLs, titles, descriptions, positions) for a keyword, distinguishing it from sibling tools fetch_page (single page content) and pagespeed (performance metrics).
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 fetch_page or pagespeed. The fallback behavior is mentioned but not contextualized as a consideration. The agent is left to infer usage from the description 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
fetch_page - First observed
pagespeed - First observed
serp
TDQS
Scored across 3 tools
Each tool has a clear, non-overlapping purpose: fetch_page retrieves HTML, pagespeed provides performance metrics, and serp fetches search results. No ambiguity.
Names mostly follow verb_noun (fetch_page) but pagespeed is a proper noun and serp is an acronym, causing slight inconsistency. However, they are still readable.
3 tools is reasonable for a focused SEO server, covering core functionalities without being overly minimal or excessive.
Covers essential SEO tasks (page fetch, performance, rankings) but lacks tools for backlinks, keyword suggestions, or site audits, leaving notable gaps.
Maintenance
Related MCP Connectors
Live SEO workflow tools for Claude Code, Codex, and AI agents.
- VibeSEOOAuthdev.vibeseo
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
- MotiBlogOAuthai.motiblog
Agent-first SEO research and publishing: competitors, SERPs, internal links, and Search Console.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI agents with professional-grade SEO capabilities including on-page analysis, technical audits, PageSpeed insights, and Ahrefs data integration.138 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude to perform full SEO audits on unpublished HTML, Markdown, or Word documents, including keyword analysis, meta tag suggestions, readability scoring, and heading structure validation.8 npmMIT
- AlicenseAqualityAmaintenanceLets you ask Claude questions about your Google Search Console data and get real analysis, not raw API rows. Provides 20 tools for analysis, indexing, and safety.29868 npm123Apache 2.0
- AlicenseCqualityCmaintenanceEnables Claude Code to read Google Search Console and GA4 data locally with read-only access, and provides combined SEO analysis tools for comparing datasets and identifying opportunities.20MIT