impeccable-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@impeccable-mcpScan https://example.com for design slop and quality issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
$ impeccable-mcp
An MCP server wrapping impeccable's design-lint engine — headless Chrome plus 59 deterministic anti-pattern rules — so any agent can scan a URL and get back structured findings, no per-agent setup required. No LLM, no API key needed for the scan itself; the engine is pure detection.
[ what it does ]
Takes
impeccable's public library exports (detectUrl,detectHtml,ANTIPATTERNS,createBrowserDetector) — an official npm dependency, not a fork — and exposes them as MCP toolsRuns one long-lived headless Chromium instance, each scan in its own incognito context
Serves MCP over streamable HTTP on port 8000, same shape as gsd-browser-mcp
Lets any MCP client (Claude Code, Fred, Billy, whatever's next) scan a website's design without local setup
Related MCP server: scribe-me
[ tools ]
Tool | Needs a browser | What it does |
| yes | Loads a URL in headless Chrome, runs all detector rules, returns findings grouped by |
| no | Runs the static detector against a raw HTML/CSS string. No browser launched — use this to check generated markup before it's written to disk. |
| yes | Returns a PNG of the rendered page as MCP image content. |
| no | Returns the full rule registry (id, name, category, description) from |
Header/cookie values you pass to
scan_urlwill appear in the calling agent's transcript. That's a deliberate tradeoff for reaching authenticated pages, not an oversight — seeCONTRIBUTING.md. Don't pass anything you wouldn't want logged.
The private-target guard
scan_url and screenshot refuse RFC1918, loopback, and link-local targets by default. This
service's whole job is "fetch whatever URL an agent hands it" — without the guard, a
prompt-injected agent could turn it into a LAN port scanner or point it at Portainer/Home
Assistant from inside the trusted network. Set IMPECCABLE_ALLOW_PRIVATE=1 only if you specifically
need to scan an internal site and understand the tradeoff.
[ quick start ]
1. pull and run
$ docker run -d \
-p 8000:8000 \
--shm-size=512mb \
-e IMPECCABLE_MCP_TOKEN=$(openssl rand -hex 32) \
ghcr.io/jemplayer82/impeccable-mcp:latest2. connect your mcp client
http://localhost:8000/mcpwith Authorization: Bearer <IMPECCABLE_MCP_TOKEN>.
[ docker compose ]
services:
impeccable-mcp:
image: ghcr.io/jemplayer82/impeccable-mcp:latest
restart: unless-stopped
shm_size: "512mb"
mem_limit: 1536m
init: true
ports:
- "8000:8000"
environment:
IMPECCABLE_MCP_TOKEN: your-token-here # pragma: allowlist secret — doc placeholder
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8000/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s[ environment variables ]
Variable | Required | Description |
| Yes | Bearer token clients must send. Server refuses to start if unset. |
| No | Listen port inside the container. Default |
| No | Set to |
| No | Max concurrent browser-backed scans. Default |
| No | Close the idle browser after this long with no scans. Default |
[ how it works ]
A single Node/ESM process:
@modelcontextprotocol/sdk'sStreamableHTTPServerTransportover rawnode:http— stateless, a fresh server + transport per request, no session bookkeeping.src/scan.mjsholds one Chromium viaimpeccable'screateBrowserDetector, relaunching on crash and closing afterBROWSER_IDLE_TIMEOUT_MSof inactivity. Each scan gets its own incognito browser context so headers/cookies from one call never leak into another.Findings come back in
impeccable's stable shape (antipattern,name,description,severity,category,snippet), grouped by category with a count summary.
impeccable itself needs no LLM and no API key — it's a deterministic rule engine. This server
doesn't add one either; it's transport, auth, browser lifecycle, and a URL guard around a library.
[ related ]
impeccable — the underlying detection engine (don't file issues/PRs there from this project; see
CONTRIBUTING.md)gsd-browser-mcp — the sibling MCP this repo's transport, auth, and Dockerfile pattern were cloned from
Impeccable Chrome extension — same rule engine, for a human looking at DevTools directly. This server exists for agents; the extension is still the right tool for eyeballing a page yourself.
[ license ]
Apache License 2.0 — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceMCP server that extracts accessibility tree, design tokens, screenshots, Claude DSL, and Figma JSON from any URL using a persistent Chromium browser with zero LLM cost.MIT
- Flicense-qualityDmaintenanceMCP server to scrape web pages to clean Markdown via headless Chromium, with support for single or batch URLs.
- AlicenseAqualityBmaintenanceMCP server for axe-core accessibility audits. Enables scanning URLs or HTML for WCAG violations with impact levels and fix guidance.4301MIT
- Alicense-qualityAmaintenanceVisual frontend accessibility inspector MCP server. WCAG contrast checking, touch target validation, heading hierarchy audits, responsive screenshots, and S+ grading across mobile and desktop viewports.MIT
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Scans MCP servers for tool poisoning, prompt injection and supply chain risks.
Conformance checker for MCP servers. Free, no key, verdicts recomputable and re-measured daily.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Jemplayer82/impeccable-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server