SEO Performance MCP
The triage layer for content teams who ship with AI. SEO Performance MCP scores every post you have already published from Google Search Console, GA4, Matomo, Clarity, and AI-citation data, then tells your agent exactly what to refresh, expand, merge, or kill this week. No more reading three dashboards to pick one URL.
npx -y @automatelab/seo-performance-mcp
What it does
Most SEO tools tell you which keywords you should be ranking for. SEO Performance MCP tells you what to do about the posts you have already shipped. It looks at every URL on your site, pulls performance signals from the analytics tools you already pay for, and ranks the content worth your editor's time this week.
Per post, the MCP emits a single verdict (refresh, expand, merge, kill, double down, or hold) with the reasons spelled out in plain text. No black-box ranking, no opaque AI score. Deterministic rules over real numbers, so your agent can act on the call instead of asking you to interpret a dashboard.
It never edits or publishes anything. The output is a clean hand-off brief for a writer, an editor, or a downstream rewrite tool. You stay in control of what ships.
What makes it different
One verdict per post, not a chart
Most SEO dashboards make you read three graphs to decide one thing. This MCP runs the rules for you and returns a single call per URL, with the reason codes that drove it.
Built on the analytics you already pay for
Google Search Console, GA4, Matomo, and Microsoft Clarity. Every source is optional. Plug in what you have and the rest is skipped silently.
AI citations are first-class signals
Tracks which LLMs cite your content and which used to. When a citation disappears, the MCP can name the URL that replaced yours so the next refresh actually targets the right answer.
Read-only by design
The MCP never writes to your CMS, never publishes, never touches a third-party platform with anything other than a read. The verdict is an artifact for a human editor. The decision to ship stays with you.
Cohort report finds your top three in seconds
Run cohort.report on posts older than 90 days and get a ranked list sorted by impact and confidence. Pick this week's editorial focus in one prompt.
Works with any MCP agent
Claude Code, Claude Desktop, Cursor, Cline, or any MCP-compatible harness. Same JSON config. Three discoverable prompts ship with the server, so no skill loader is required.
Tool surface
Eight tools, organised as a dot-notation tree: posts.* for per-URL analysis,
cohort.* for cross-post roll-ups, and gsc.* for direct Search Console scans.
| Tool | Family | What it returns |
|---|---|---|
posts.list |
posts | Discover indexable posts via XML sitemap, JSON override list, or Ghost Admin API. Returns url, title, published_at, age_days, and tags. Filter by minimum age or published-after date. |
posts.snapshot |
posts | 30, 60, or 90-day snapshot across every configured source: GSC clicks, impressions, CTR, position, top queries; Matomo visits and dwell; GA4 pageviews; Clarity scroll and rage-clicks; AI-citation counts. |
posts.decay_curve |
posts | Bucket GSC clicks, impressions, and average position into weekly windows and classify the trend: decay, plateau, or growth. Underpins the verdict engine's decay rules. |
posts.verdict |
posts | Run the rule-based verdict engine on one post. Combines snapshot and decay curve, emits a verdict with reason codes and a 0-1 confidence score. Deterministic and inspectable. |
posts.refresh_brief |
posts | Produce a markdown brief for a human or downstream LLM editor: verdict, reasons, raw numbers, top queries, and suggested actions. The hand-off artifact when the verdict is refresh, expand, merge, or double down. |
posts.cite_loss |
posts | Return the list of LLMs that previously cited a URL but no longer do, with the prior query and last-seen date. Optionally identifies the URL that replaced yours. Requires a citation-intelligence endpoint. |
cohort.report |
cohort | Run the verdict engine across a cohort filtered by tag and minimum age and return a ranked table sorted by verdict priority then confidence. Answers "which three posts should I refresh this week?" |
gsc.quick_wins |
gsc | Scan GSC for (page, query) pairs at positions 5-15 with non-trivial impressions and a CTR below the position-expected curve. The fastest title-rewrite wins. Platform-agnostic, pure GSC pull. |
Install in 3 steps
-
Install the npm package (requires Node 20+)
npx -y @automatelab/seo-performance-mcp -
Add the server to your MCP host config (
~/.cursor/mcp.jsonfor Cursor,claude_desktop_config.jsonfor Claude Desktop,.mcp.jsonfor Claude Code){ "mcpServers": { "seo-performance": { "command": "npx", "args": ["-y", "@automatelab/seo-performance-mcp"], "env": { "GSC_SERVICE_ACCOUNT_JSON": "/abs/path/to/gsc-service-account.json", "GSC_SITE_URL": "sc-domain:example.com", "MATOMO_BASE_URL": "https://example.com/analytics", "MATOMO_TOKEN": "...", "MATOMO_SITE_ID": "1", "GA4_PROPERTY_ID": "123456789", "CLARITY_PROJECT_ID": "...", "GHOST_ADMIN_KEY": "id:secret" } } } }Every signal source is optional. Provide credentials for the platforms you use; the rest are skipped silently. Discovery falls back to a sitemap if Ghost is not configured. -
Restart your MCP host. The eight tools appear in the MCP panel, alongside three discoverable prompts (
audit_cohort,find_quick_wins,citation_loss_sweep).
Works with Claude Desktop, Claude Code, Cursor, Cline, and any MCP-compatible agent harness. Full env reference: the GitHub readme.
FAQ
What is the SEO Performance MCP?
How is this different from a normal SEO dashboard?
Do I need to plug in every data source?
Does it write to my CMS or publish anything?
Which agents does SEO Performance MCP work with?
audit_cohort, find_quick_wins, citation_loss_sweep) ship with the server.What does it cost?
Want it wired into your content stack?
We run SEO Performance MCP weekly across our own blog and our clients' sites. If you want it set up, env-tuned, and folded into your editorial loop, we can do that.
Get in touch