Skip to main content
Glama
emirhanyenici

SEO Optimizer MCP Server

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, and cheerio.

What it provides

Tools (deterministic, no LLM):

Tool

Purpose

fetch_page(url)

Fetch a URL → cleaned, readable HTML

pagespeed(url, strategy)

PageSpeed/Lighthouse summary (Core Web Vitals + opportunities)

serp(keyword, location?, numResults?)

Organic search results — SerpAPI if SerpAPI_KEY is set, else a key-less DuckDuckGo lookup

Promptstechnical-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

npx installs 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 user makes it available in all your projects (use -s local for just the current one, or -s project to write a shared .mcp.json).

  • Add optional keys with -e SerpAPI_KEY=… -e GOOGLE_PAGESPEED_API_KEY=….

  • Verify with claude mcp list, or /mcp inside 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

SerpAPI_KEY

serp

With it: SerpAPI (richer, location-aware). Without it: automatic DuckDuckGo fallback.

GOOGLE_PAGESPEED_API_KEY

pagespeed

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 tools
fetch_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to fetch

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page URL to measure
strategyNoDevice strategymobile

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch keyword
locationNoCountry code, e.g. "us", "tr" (default "us")
numResultsNoNumber of results (max 10)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv1.0.0
    • First observedfetch_page
    • First observedpagespeed
    • First observedserp

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clear, non-overlapping purpose: fetch_page retrieves HTML, pagespeed provides performance metrics, and serp fetches search results. No ambiguity.

Naming Consistency4/5

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.

Tool Count4/5

3 tools is reasonable for a focused SEO server, covering core functionalities without being overly minimal or excessive.

Completeness3/5

Covers essential SEO tasks (page fetch, performance, rankings) but lacks tools for backlinks, keyword suggestions, or site audits, leaving notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides AI agents with professional-grade SEO capabilities including on-page analysis, technical audits, PageSpeed insights, and Ahrefs data integration.
    13
    8 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Lets 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.
    29
    868 npm
    123
    Apache 2.0
  • A
    license
    C
    quality
    C
    maintenance
    Enables 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.
    20
    MIT