Metadata-Version: 2.4
Name: autorank-mcp
Version: 0.1.0
Summary: Technical SEO MCP server — structured data, meta tags, robots directives and SERP checks for AI agents. No API key.
Project-URL: Homepage, https://autorank.so
Project-URL: Documentation, https://autorank.so/free-tools
Project-URL: Repository, https://github.com/RyanKramer/autorank-mcp
Author-email: AutoRank <hello@autorank.so>
License-Expression: MIT
License-File: LICENSE
Keywords: agent,ai,json-ld,mcp,robots-txt,schema,seo,structured-data
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: fastmcp>=2.0.0
Description-Content-Type: text/markdown

<!-- mcp-name: io.github.RyanKramer/autorank-mcp -->

# AutoRank MCP

Technical SEO tools for AI agents. Generate and validate structured data, build
meta tags and crawl directives, check how a result will actually render in
Google, and analyse copy — all from inside Claude, Cursor, or any MCP client.

**No API key. No account. No network calls.** Every tool is a pure function, so
the server does its job offline and installs in one line.

Browser versions of these tools live at
[autorank.so/free-tools](https://autorank.so/free-tools).

## Install

Claude Desktop — add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "autorank": {
      "command": "uvx",
      "args": ["autorank-mcp"]
    }
  }
}
```

Or with pip:

```bash
pip install autorank-mcp
```

Then point your client at the `autorank-mcp` command. No environment variables
are required.

## Tools

### Structured data
| Tool | What it does |
|---|---|
| `generate_faq_schema` | FAQPage JSON-LD from question/answer pairs |
| `generate_article_schema` | Article JSON-LD with author and dates |
| `generate_breadcrumb_schema` | BreadcrumbList JSON-LD |
| `generate_local_business_schema` | LocalBusiness JSON-LD with postal address |
| `validate_json_ld` | Parses a block, checks required fields per type, flags risky patterns |

### Meta and crawl directives
| Tool | What it does |
|---|---|
| `generate_meta_tags` | Full head block: title, description, canonical, OG, Twitter Card |
| `generate_robots_meta` | Robots meta tag from directives, with a plain-English explanation |
| `generate_robots_txt` | robots.txt, optionally blocking the major AI crawlers |
| `validate_robots_txt` | Validates syntax and surfaces the mistakes that cause real damage |
| `generate_hreflang` | hreflang tags, with the return-link requirement spelled out |

### SERP and copy
| Tool | What it does |
|---|---|
| `check_title_length` | Pixel-width truncation check for titles |
| `check_description_length` | Pixel-width truncation check for descriptions |
| `serp_preview` | How the whole result renders, breadcrumb included |
| `keyword_density` | Word and phrase frequency with a stuffing warning |
| `readability_score` | Flesch Reading Ease and grade level |

### Utilities
| Tool | What it does |
|---|---|
| `build_utm_link` | UTM-tagged tracking URLs, warns on case-inconsistency |
| `slugify` | Clean URL slugs from titles |
| `autorank_free_tools` | Lists the web-only tools that need live crawling |

## Design notes

**Title checks measure pixels, not characters.** Google truncates on rendered
width, and character counts mislead badly — sixty capital `W`s and sixty `i`s
occupy very different space. Titles are the most common cause of a rewritten
snippet, so the check approximates width instead.

**The schema tools will not help you lie.** `validate_json_ld` flags
`aggregateRating` whenever it appears, because fabricated ratings are a
documented cause of manual actions, and `generate_faq_schema` states plainly
that the answers must already be visible on the page. Structured data that
disagrees with rendered content is a spam signal, not a shortcut.

**Some tools are deliberately absent.** Anything needing live crawling or a
keyword corpus — broken-link checking, keyword difficulty, sitemap extraction,
duplicate-content detection — is not a pure function, so it stays on the web
where it belongs. `autorank_free_tools` lists those.

**robots.txt controls crawling, not indexing.** `validate_robots_txt` says so in
its output, because conflating the two is the single most common way sites
accidentally leave pages in the index.

## Development

```bash
git clone https://github.com/RyanKramer/autorank-mcp
cd autorank-mcp
pip install -e .
autorank-mcp
```

## About

Built by [AutoRank](https://autorank.so) — AI SEO content automation. The web
versions of these tools, plus about thirty more, are free at
[autorank.so/free-tools](https://autorank.so/free-tools).

MIT licensed.
