SEO Performance MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MATOMO_URL | No | URL of the Matomo analytics server | |
| POSTS_LIST | No | JSON array of posts with url, title, published_at, tags, word_count | |
| GSC_SITE_URL | No | Google Search Console site URL (e.g., sc-domain:example.com) | |
| MATOMO_TOKEN | No | Matomo API token | |
| MATOMO_SITE_ID | No | Matomo site ID | |
| GA4_PROPERTY_ID | No | Google Analytics 4 property ID | |
| CLARITY_API_TOKEN | No | Microsoft Clarity API token | |
| POSTS_SITEMAP_URL | No | URL to the sitemap or sitemap index for post discovery | |
| CLARITY_PROJECT_ID | No | Microsoft Clarity project ID | |
| GHOST_ADMIN_API_KEY | No | Ghost Admin API key | |
| GHOST_ADMIN_API_URL | No | Ghost Admin API URL for richer metadata | |
| GA4_SERVICE_ACCOUNT_JSON | No | Base64-encoded GA4 service account JSON | |
| GSC_SERVICE_ACCOUNT_JSON | No | Base64-encoded Google Search Console service account JSON | |
| CITATION_INTELLIGENCE_URL | No | URL for AI citation tracking service |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| posts.listA | Discover 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.snapshotA | Pull 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_curveA | Bucket 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.verdictA | Run 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_briefA | Produce 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.reportA | Run 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_lossA | Return 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_winsB | Scan 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| audit_cohort | Run cohort.report on posts >=90 days old, then generate refresh briefs for every URL whose verdict is refresh / expand / merge. |
| find_quick_wins | Pull pages at positions 5-15 with low CTR and propose query-verbatim title/H1 rewrites. |
| citation_loss_sweep | Find URLs that lost LLM citations and generate refresh briefs targeted at recovering them. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AutomateLab-tech/seo-performance-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server