seo-mcp

Six tools for SEO and AI-readability audits. 91 checks, 11 score modules.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
78%
Naming quality
100%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin run_audit_anonymous

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~719Tokens (tool definitions)
~385 BTypical response size
Moderate attention impact (0.56% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "seo-mcp": {
      "command": "npx",
      "args": [
        "@metricspot/mcp-server"
      ]
    }
  }
}

Runnable packages

npm@metricspot/mcp-server0.1.1stdio

Remote endpoints

https://mcp.metricspot.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢run_audit_anonymous(url)

Run a one-shot SEO + AI-readability audit on any public URL. Returns scores across 11 modules and ~90 checks, plus actionable findings with rule docs. Limited to 1 audit per IP per 24 hours — for higher volume, get an API key at https://app.metricspot.com/settings/api-keys and use `run_audit`. Synchronous: blocks until the audit completes. Does NOT include Core Web Vitals (use `run_audit` for full PSI scoring). No auth required.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2000
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
⚪run_audit(url)

Queue a full SEO + AI-readability audit (includes Core Web Vitals from Google PSI and organic traffic if Google is linked). Returns the audit envelope immediately with `status: queued` and an `audit_id`. Poll `get_audit` with the returned `audit_id` until `status` becomes `complete` (typical 10-30s). Counts against the user's plan allowance. Requires an API key as a Bearer token. Quota and per-domain cooldowns mirror the dashboard.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2000
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
🟢get_audit(audit_id)

Fetch a previously-run audit by id. Returns module scores (0-100), total score, all findings with severity, recommendation text, and links to the HTML report. Use this to poll a queued `run_audit` until `status: complete`. Requires an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "audit_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "audit_id"
  ],
  "additionalProperties": false
}
🟢list_audits(limit)

List the user's audits (most recent first, deduplicated by URL). Returns `audit_id`, `url`, `status`, `total_score`, `created_at`. Default limit 24, max 100. Use the returned `audit_id` with `get_audit` for full findings. Requires an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "additionalProperties": false
}
🟢get_audit_pdf(audit_id)

Return a signed download URL for the branded PDF report for a given audit id. If no PDF has been rendered yet, queues a render and returns `status: queued` — poll the same tool again, or fetch the URL directly once ready. Requires an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "audit_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "audit_id"
  ],
  "additionalProperties": false
}
🟢get_organic_traffic(audit_id)

If the user has linked GA4 + Google Search Console, return the 28-day organic traffic snapshot for an audit: session count, daily trend, top landing pages, top queries, and indexing health. Returns `connected: false` if Google is not linked. Cached 24h server-side. Requires an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "audit_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "audit_id"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools