Skip to content

Latest commit

 

History

History

mcp

README.md

slop-detect-mcp

MCP server that lets AI coding agents scan landing pages for AI-design-slop and pull a ready-to-paste fix prompt — straight from the chat.

Part of slop-detect: the versioned fingerprint that catches Cursor / v0 / Lovable template slop in the wild (live catalogue: /api/patterns). This package wraps the live slop-detect.com API as a Model Context Protocol server, so Claude Code, Cursor, and Windsurf can audit and de-slop pages without a browser or API key.

Tools

Tool Input What it does
scan_page { url } Scans the page and returns a grade, a 0-100 score (lower is better), the slop tier, a verdict, the triggered patterns, and a shareable result URL.
check_aeo { url } Checks whether a page can be fetched and read. Returns an AEO score 0-100 (higher is better), a tier (Eligible / Partially Eligible / Restricted), and which checks failed. The scanner does not impersonate vendor crawlers.
check_design_system { url, design_md_url? } Checks whether the page honors its own DESIGN.md. Returns a compliance score 0-100 (higher is better), a tier (Aligned / Drifting / Off-system / No system / No data), and named drift. Default file is <origin>/DESIGN.md; pass design_md_url to override. No system means no parseable DESIGN.md tokens; No data means nothing observable to check.
fix_prompt { url } Returns a copy-paste prompt that tells a coding agent exactly how to de-slop the page.
lint_design_md { design_md } Lints DESIGN.md text locally (broken refs, contrast below 4.5:1, orphaned tokens, specVersion). No page fetch and no score change.
diff_design_md { base_design_md, head_design_md } Diffs two DESIGN.md documents. A removed or changed token is breaking. No page fetch.

Score polarity: slop 0 = clean (Clean 0–9, Mild 10–27, Heavy 28+). AEO and design-system scores are inverted: higher is better.

Example asks: "scan https://example.com for slop", "can AI engines cite https://example.com?", "does https://example.com honor its DESIGN.md?", "give me a fix prompt for https://example.com".

Install

No global install needed — clients run it on demand via npx:

npx -y slop-detect-mcp

Or install it explicitly:

npm install -g slop-detect-mcp

Configure your client

All MCP clients use the same config shape. Add the server, restart the client, and ask it to "scan https://example.com for slop".

Claude Code

Add to .mcp.json in your project root (or claude_desktop_config.json for Claude Desktop):

{
  "mcpServers": {
    "slop-detect": {
      "command": "npx",
      "args": ["-y", "slop-detect-mcp"]
    }
  }
}

Or one-liner from the Claude Code CLI:

claude mcp add slop-detect -- npx -y slop-detect-mcp

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "slop-detect": {
      "command": "npx",
      "args": ["-y", "slop-detect-mcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "slop-detect": {
      "command": "npx",
      "args": ["-y", "slop-detect-mcp"]
    }
  }
}

Configuration

Env var Default Purpose
SLOP_DETECT_API https://slop-detect.com API base URL. Point it at a local dev build (e.g. http://localhost:8788) when hacking on the web app. Ignored in --local mode.
SLOP_DETECT_LOCAL unset Set to 1 for the same behavior as --local.

Local mode

The hosted API rejects loopback addresses. Start the server with --local to score http://localhost, http://127.0.0.1, and file:// on this machine:

npx -y slop-detect-mcp --local

That needs the optional slop-detect package (Playwright) installed beside this one. Local mode does not call https://slop-detect.com/api/*. The same runner is what hooks/scan-local.mjs uses from a Claude Code PostToolUse or Stop hook. Set SLOP_LOCAL_URL to the dev server. A scored page exits 0. A scan that cannot run exits 2. That exit is not a Clean score.

{
  "mcpServers": {
    "slop-detect": {
      "command": "npx",
      "args": ["-y", "slop-detect-mcp", "--local"]
    }
  }
}
{
  "mcpServers": {
    "slop-detect": {
      "command": "npx",
      "args": ["-y", "slop-detect-mcp"],
      "env": { "SLOP_DETECT_API": "http://localhost:8788" }
    }
  }
}

Notes

  • No captcha, but rate-limited. Non-browser callers skip the Turnstile challenge, so this server works headless — but the API rate-limits per IP. If you see a rate-limit message, wait a bit before scanning again.
  • Errors come back as tool content, never as crashes — a flaky page or a 429/502 returns a clear message the agent can act on.

License

MIT © Ravindra Kumar