Skip to main content
Glama
emirhanyenici

SEO Optimizer MCP Server

README.md
# SEO Optimizer — MCP Server

An [MCP](https://modelcontextprotocol.io) 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 |

**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).

## Install

Requires **Node.js 18+**. Pick whichever you prefer — both are one command, no
clone, no file paths:

```bash
# 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

```bash
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/…`):

```json
{
  "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`):

```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:

```bash
# in the main project's mcp/ folder
npm run build      # esbuild → dist/index.js (self-contained)
```

Then publish/push the bundle:

```bash
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:…`
```

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