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
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools