A side-by-side look at the Seo Performance MCP and GEO MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Seo Performance MCP for marketing work as a local process; choose GEO MCP for marketing over a hosted endpoint. You can also run both side by side in one mcpServers block.
posts_list, posts_snapshot, posts_decay_curve.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 60/100 · Good | 48/100 · Fair |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3 | 5,361 |
| Directory activity | 4 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 9 | Not listed |
| Full listing | View Seo Performance MCP | View GEO MCP |
posts_listDiscover posts via an XML sitemap (POSTS_SITEMAP_URL or the sitemap_url arg), a JSON override list (POSTS_LIST), or - if configured - the Ghost Admin API. Pass an explicit urls[] to skip discovery entirely.
Returns metadata: url, title, published_at, age_days, tags. Filter by minimum age or published-after date.
When to use: discover which URLs are eligible for snapshot / verdict / cohort analysis. Works with any CMS that exposes a sitemap.posts_snapshotPull a 30/60/90-day snapshot across every configured signal source for one post: GSC clicks/impressions/CTR/position + top queries, Matomo visits + dwell, GA4 pageviews, Clarity scroll/rage clicks, AI-citation counts.
Each source is best-effort: if its env vars are missing the field is omitted. Returns whatever is available.
Read-only. No third-party writes. Optionally persists to the local DuckDB cache when persist=true.posts_decay_curveBucket GSC clicks/impressions/avg-position into ~weekly windows for the last N weeks (default 12) and classify the trend: decay / plateau / growth.
Underpins the verdict engine's decay rules. Read-only GSC query.posts_verdictRun the rule-based verdict engine on a single post: combine snapshot + decay curve and emit a verdict with reason codes and a 0-1 confidence score.
Reason codes are deterministic. The mapping reasons -> verdict lives in src/verdict/rules.ts and can be inspected.
Reporting only - does NOT mutate anything. To act on the verdict, hand the brief to a writer or to an AI rewrite tool.posts_refresh_briefProduce a markdown brief for a human (or downstream LLM) editor: verdict + reasons + raw numbers + top queries + suggested actions.
Use this as the hand-off artefact when verdict is refresh / expand / merge / double_down.cohort_reportRun the verdict engine across a cohort (filtered by tag and/or min-age) and return a ranked table sorted by verdict priority then confidence.
Practical use: 'which three posts should I refresh this week?' - the top three rows with verdict=refresh and highest confidence are the answer.posts_cite_lossReturn the list of LLMs that previously cited this URL but no longer do, with the prior query and last-seen date. Optionally includes the URL that replaced ours.
Requires a configured citation-intelligence MCP endpoint (CITATION_INTELLIGENCE_URL). Otherwise returns an empty list.gsc_quick_winsScan GSC for (page, query) pairs sitting in positions 5-15 with non-trivial impressions and a CTR below their position-expected curve. These are the fastest title-rewrite wins.
Returns top results sorted by impressions desc. Pure GSC pull - platform-agnostic.bing_quick_winsScan Bing Webmaster Tools for queries sitting in positions 5-15 with non-trivial impressions. Bing's index backs Copilot, ChatGPT search, and Perplexity grounding, so a Bing rank gap is an LLM-citation gap.
Query-level only: Bing has no single page+query API, so - unlike gsc_quick_wins, which returns (page, query) pairs - these carry no url. Sorted by impressions desc.
Requires BING_WEBMASTER_API_KEY (Bing Webmaster Tools -> Settings -> API Access). Best-effort: returns config_missing if unset.No tool names declared yet. Check the project README from the listing page.
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"automatelab-tech-seo-performance-mcp": {
"command": "npx",
"args": [
"-y",
"@automatelab/seo-performance-mcp"
]
}
}
}
{
"mcpServers": {
"google-ads-meta-ads-seo-geo-mcp": {
"url": "https://connector.get-ryze.ai/mcp"
}
}
}