Whoogy MCP Server
Officialby whoogydotcom
README.md
# Whoogy MCP Server — Figma to Website Design QA for Claude
[](./LICENSE)
[](https://modelcontextprotocol.io)
[](https://claude.ai)
**Fastest Figma-to-website design QA, powered by AI.** This MCP server connects Claude to Whoogy to auto-detect pages, run automated visual regression and UI comparison scans, and deliver a full design QA report in minutes — catching spacing, typography, color, and layout drift before launch, without leaving your conversation.
## What is Whoogy MCP?
Whoogy compares a **Figma design against its live website** and reports exactly where the build has drifted from the design — pixel-level spacing errors, wrong fonts, mismatched colors, missing sections, broken layouts. This repository is the **Model Context Protocol (MCP) server** that exposes that Figma vs. live-site comparison as tools Claude can call directly, so a full design QA scan runs and reports back inside your AI chat instead of a separate app or browser plugin.
If you're searching for **Figma to code QA**, **design QA automation**, **visual regression testing for Figma**, or a **Claude MCP server for design review**, this is it.
## Why an MCP server instead of a Figma plugin?
Most Figma-to-live-site QA tools are overlay plugins — you open Figma, open the live site, and eyeball the difference manually, page by page. Whoogy MCP flips that:
- **Automatic page discovery** — give it a Figma file and a live root URL; it matches Figma frames to live routes on its own.
- **No context switching** — ask Claude to run the scan, review the report, and re-run it, all in the same conversation.
- **Structured findings, not just screenshots** — every issue is categorized by severity (critical → low) and type (spacing, typography, color, layout, missing element), not just a visual diff image.
- **Minutes, not hours** — a full multi-page comparison report comes back in minutes, so design QA can run on every deploy, not just before a big launch.
## Connect it to Claude
This is a **remote** MCP server — no install, no API key to copy around. Claude authenticates you through Whoogy's own sign-in (OAuth 2.1 + PKCE), so it only ever acts on the Whoogy account you approve.
**Claude.ai / Claude Desktop** — Settings → Connectors → Add custom connector, then paste:
```
https://mcp.whoogy.com/mcp
```
Claude will open a Whoogy sign-in/consent page; approve it once and you're connected.
**Other MCP clients** (Cursor, VS Code Copilot, etc.) that support remote HTTP + OAuth connectors can point at the same URL.
## What it can do
| Tool | What it does |
|---|---|
| `check_credits` | Remaining Whoogy credit balance on the connected account |
| `list_projects` | Lists the account's Whoogy projects (a live site + Figma file pairing) |
| `list_recent_scans` | Recent QA scans — jobId, live URL, Figma file, status, date |
| `check_figma_tier` | Checks whether a Figma file needs the plugin-ingest flow (free/rate-limited team) |
| `start_scan` | Starts comparing a Figma file against a live site; returns a jobId |
| `get_scan_status` | Polls a scan/discovery job |
| `list_discovered_pages` | Lists matched Figma-frame ↔ live-URL pairs for a discovery job |
| `run_selected_pages` | Runs the actual visual + content comparison on chosen pages (spends credits) |
| `get_report` | Structured findings for a completed comparison: similarity score + issues by severity |
| `get_visual_diff` | Side-by-side (Figma vs. live) image for one page |
| `create_plugin_session` / `check_plugin_ingest` / `run_scan_from_ingest` | Fallback flow for Figma files on a free/rate-limited team, via the Whoogy Figma plugin |
| `duplicate_figma_file` | Copies a rate-limited Figma file into a Whoogy-owned team so it can be scanned directly |
Typical flow: `start_scan` → poll `get_scan_status` → `list_discovered_pages` → confirm with the user → `run_selected_pages` → poll `get_scan_status` → `get_report` → `get_visual_diff`.
## How auth works
Claude registers itself as an OAuth client (RFC 7591) and runs a standard authorization-code + PKCE flow against this server. `/authorize` redirects your browser to Whoogy's own consent page; once you approve with your normal Whoogy sign-in, the long-lived Whoogy JWT that flow mints becomes the MCP access token, verbatim — there's no separate token system to manage. There are no refresh tokens: the access token is a 60-day JWT, and Claude re-runs the (fast) authorization flow once it expires.
## Frequently asked questions
**What does this MCP server actually compare?**
A Figma file (or specific frames) against a live website's rendered pages — layout, spacing, typography, color, and content, page by page.
**How is this different from a pixel-overlay Figma plugin?**
An overlay plugin needs a human to look at each page and spot differences. This server discovers pages automatically and returns a structured, severity-ranked report Claude can read, summarize, and act on.
**How long does a scan take?**
Discovery and comparison run as background jobs; a typical multi-page report comes back within minutes of confirming which pages to run.
**Is my data shared with other users?**
No. Every tool call runs as your signed-in Whoogy account via OAuth — reports, credits, and projects are scoped to your account only.
**Which AI assistants can use this?**
Any MCP client that supports remote, OAuth-authenticated HTTP servers — Claude.ai, Claude Desktop, and other MCP-compatible tools (Cursor, VS Code Copilot, etc.).
**Does it cost anything to run a scan?**
Comparisons spend Whoogy credits (one per page compared). `check_credits` reports your balance before you commit to a run.
## Self-hosting
This server is stateless per request (a fresh `McpServer` + transport per HTTP call) and talks to the main Whoogy REST API over HTTP as the signed-in user — it holds no product data of its own. It shares its OAuth-grant and device-code collections with the main Whoogy API's MongoDB, so it isn't meant to be pointed at a different backend; self-hosting only makes sense if you're running the rest of Whoogy yourself too.
```bash
npm install
cp .env.example .env # fill in MONGODB_URI, JWT_SECRET, MCP_API_BASE, FRONTEND_URL
npm run dev
```
See `.env.example` for what each variable does. `MCP_PUBLIC_URL` must be a publicly reachable HTTPS URL for any remote client (claude.ai, etc.) to connect — plain HTTP only works for purely local testing.
## Learn more
- Whoogy: [https://whoogy.com](https://whoogy.com)
- Model Context Protocol: [https://modelcontextprotocol.io](https://modelcontextprotocol.io)
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues