PluginBench
MCP Server
Active
MIT

UI Verify MCP Server

io.github.igrlk/uiverify

Visual regression testing for coding agents: catch unintended UI changes on every PR.

What is the UI Verify MCP server?

UI Verify is a hosted visual-testing service that captures your UI, diffs it against a baseline in the cloud, and lets coding agents triage real regressions vs. cosmetic noise over MCP. It integrates with Storybook, Playwright, Vitest, or finished screenshots from native/mobile projects, and gates PRs on visual verdicts.

UI Verify automates visual regression testing by rendering components in the cloud, comparing them against baselines, and reporting results as GitHub checks. Coding agents can review diffs, accept new baselines, and triage changes without leaving the terminal via the MCP server.

How to install UI Verify

Copy-paste configuration for popular MCP clients.

transport: http
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • Authorization
    required
    secret

    Bearer token: your UIVERIFY_API_KEY from your uiverify.ai project setup page.

~/.cursor/mcp.json
{
  "mcpServers": {
    "uiverify": {
      "url": "https://uiverify.ai/api/mcp"
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • list_builds — List recent UI Verify builds
  • get_build — Get what changed in a build
  • list_build_stories — Page through a build's stories by status
  • get_pr_changeset — Get what a PR does to the UI vs its base branch
  • list_pr_stories — Page through the PR-vs-base changeset by kind
  • get_diff — Per-story diff detail with image URLs
  • render_diff_image — Fetch the actual pixels of a story image
  • review_diff — Accept, deny, or ignore one story's change
  • accept_build — Accept every changed story in a build

Use cases

  • Automatically detect unintended UI regressions on pull requests
  • Let coding agents review and triage visual diffs without manual inspection
  • Capture UI from Storybook, Playwright, Vitest, or native/mobile screenshots
  • Gate PRs on visual verdicts with GitHub checks
  • Accept new baselines in bulk from your coding agent

UI Verify MCP server FAQ

What is UI Verify?

UI Verify is a hosted visual-testing service that renders your UI components in the cloud, diffs them against a baseline, and reports the verdict as a GitHub check. Coding agents can review the diffs and triage changes over MCP.

Is UI Verify free?

The README does not specify pricing. Visit uiverify.ai for details.

How do I install the MCP server in Cursor or Claude?

Run `claude mcp add --scope project --transport http uiverify https://uiverify.ai/api/mcp --header 'Authorization: Bearer ${UIVERIFY_API_KEY}'` with your API key. The server is remote (streamable HTTP) and requires no local installation.

What authentication is required?

You need a UIVERIFY_API_KEY from uiverify.ai. Set it as an environment variable or pass it in the MCP header.

What capture methods does UI Verify support?

Storybook stories (via `upload --static-dir`), Playwright tests (with @uiverify/playwright SDK), Vitest browser-mode tests (with @uiverify/vitest SDK), or finished screenshots from native/mobile/React Native projects (via `upload --screenshots`).

Can I use UI Verify while editing code?

Yes. Run `uiverify check --story <pattern> --static-dir <dir>` to render only the stories you're touching and diff them against the CI baseline without posting a check or moving a baseline.

README (reference)

Source of truth, from the repository.

<div align="center"> <a href="https://uiverify.ai"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://uiverify.ai/brand/logo-mark-dark.png" /> <img src="https://uiverify.ai/brand/logo-mark-light.png" alt="UI Verify" width="96" height="96" /> </picture> </a>

UI Verify

Visual testing for agents

Catch unintended UI changes on every pull request. UI Verify renders your components in the cloud, diffs them against a baseline, and lets a coding agent triage what actually changed.

uiverify @uiverify/playwright @uiverify/vitest License: MIT

uiverify.ai  ·  GitHub  ·  CLI  ·  Playwright SDK  ·  Vitest SDK  ·  Skills

</div>

What is UI Verify?

UI Verify is a hosted visual-testing service that plugs into your CI. On each PR it:

  1. Captures your UI, from Storybook stories, from your existing Playwright or Vitest browser-mode tests via a drop-in capture SDK, or from finished screenshots your own harness already produces (native, mobile, React Native) uploaded straight for diffing.
  2. Renders & diffs every state in the cloud against the baseline from your default branch.
  3. Reports the verdict back as a GitHub check, and gates the PR on it.
  4. Triages: a coding agent (Claude Code, Codex, and others) buckets real regressions vs. cosmetic noise and can accept new baselines in bulk, all over MCP.

This repository holds the open-source client packages, everything that runs in your repo. All rendering, diffing, and judging happens server-side; these packages only build a bundle, upload it over HTTP, and read back status, so each is safe to read, fork, and self-host against.

Quickstart

# 1. Install the CLI in your project
npm i -D uiverify

# 2. Point it at your account
export UIVERIFY_API_KEY=...        # from uiverify.ai

# 3. Build your Storybook, then upload; the exit code reflects the visual verdict
npm run build-storybook
npx uiverify upload --static-dir storybook-static

Already have screenshots? If your harness already produces them (Detox, Maestro, native snapshot tests, anything), upload the PNGs directly, no Storybook and no rendering required. UI Verify diffs, judges, and baselines them just the same:

npx uiverify upload --screenshots ./screenshots

This is how native, mobile, and React Native projects use UI Verify: each image is keyed by its path under the directory, so a screen maps to the same baseline every build, and you can upload only the screens you changed and carry the rest forward.

Prefer to drive it from your agent? Install the skills (below) and run /uiverify:setup-visual-testing. It detects your capture path, wires CI, and writes the first stories for you.

Mid-edit checks for coding agents: uiverify check

While an agent is editing, it can render just the stories it is touching and diff them against the real CI baseline on the fleet - a "would this pass" answer without waiting for CI:

npm run build-storybook
npx uiverify check --story 'components-button--*' --static-dir storybook-static

It renders only the stories you name (repeatable --story, globs or exact ids), posts no PR check, and never moves a CI baseline. A changed result is informational (exit 0) - review the pixels over the UI Verify MCP (get_build / render_diff_image) and accept in the dashboard or with accept_build to set a branch-scoped preview baseline, so your own accepted changes stop re-flagging on the next check. CI stays the only path to a main baseline.

Packages

PackageInstallWhat it does
uiverifynpm i -D uiverifyThe CLI. uiverify upload is the CI uploader (Storybook bundle, Playwright/Vitest archive, or a directory of finished screenshots) - streams render progress and reflects the visual verdict in its exit code. uiverify check is the agent edit-loop check - renders just the stories you name against the real CI baseline, without posting a check or moving a baseline.
@uiverify/playwrightnpm i -D @uiverify/playwrightThe Playwright capture SDK. Swap @playwright/test for it and each test archives its final UI state (serialized DOM + resource bytes) for UI Verify to replay and diff.
@uiverify/vitestnpm i -D @uiverify/vitestThe Vitest capture SDK. Add uiverifyPlugin() to your Vitest config and each browser-mode test archives its final DOM (serialized DOM + resource bytes) for UI Verify to replay and diff; takeSnapshot() takes named snapshots instead.
@uiverify/skillsnpx skills add, see belowAgent skills: SKILL.md workflows a coding agent runs in your repo to set up visual testing, author economical + deterministic stories, and triage builds.

Agent skills

Install the skills into any coding agent with one command (skills.sh):

npx skills add uiverify/uiverify

Works in Claude Code, Cursor, Codex, Copilot, Gemini, and any agent that reads a skills folder. Add --list to pick individual skills, and run npx skills update to pull the latest.

Or, on Claude Code, install as a plugin so updates arrive automatically:

/plugin marketplace add uiverify/uiverify
/plugin install uiverify@uiverify

Either way, invoke them by name: /uiverify:setup-visual-testing, /uiverify:triage-visual-changes, and more. See packages/skills for the full list and a copy-in-by-hand alternative.

Triage over MCP

Connect the UI Verify MCP server and your coding agent (Claude Code, Cursor, Codex, and others) can pull a pull request's UI changes into the conversation, look at each diff, read the AI judge's verdict, and accept the intended baselines - without leaving the terminal.

claude mcp add --scope project --transport http uiverify https://uiverify.ai/api/mcp \
  --header 'Authorization: Bearer ${UIVERIFY_API_KEY}'

--scope project writes it to your committed .mcp.json so the whole team gets it; the key is referenced as the UIVERIFY_API_KEY env var, never baked in. Your project setup page has this command with the key filled in. Full guide: Triage visual changes from your coding agent.

The server is remote (streamable HTTP) - there is nothing to install or run. It exposes:

ToolWhat it does
list_buildsList recent UI Verify builds
get_buildGet what changed in a build
list_build_storiesPage through a build's stories by status
get_pr_changesetGet what a PR does to the UI vs its base branch
list_pr_storiesPage through the PR-vs-base changeset by kind
get_diffPer-story diff detail with image URLs
render_diff_imageFetch the actual pixels of a story image
review_diffAccept, deny, or ignore one story's change
accept_buildAccept every changed story in a build

Examples

Complete, runnable projects under examples/ — one per capture path. Copy a folder, add a project API key, and it works.

ExampleCapture path
examples/storybookStorybook stories (no SDK, upload --static-dir)
examples/vitestVitest browser-mode tests with @uiverify/vitest
examples/playwrightPlaywright end-to-end tests with @uiverify/playwright
examples/react-nativeFinished screenshots (native / mobile / React Native) with upload --screenshots

The first three capture a slice of the same Shoppy storefront; the React Native one is a small Expo app driven by Maestro. Each folder has its own CI workflow.

Development

pnpm install
pnpm -r build        # CLI builds dist/uiverify.js, playwright builds dist/
pnpm -r test
pnpm -r typecheck

The CLI requires UIVERIFY_API_KEY and talks to https://uiverify.ai by default (override with --api-url / UIVERIFY_API_URL for self-host or local dev). See each package's README and DEVELOPMENT.md for internals.

License

MIT © UI Verify

Related MCP servers

Express.js HTTP 402 payment middleware for AI agent micropayments

View repository →

Autonomous HTTP 402 Web Scraping Mesh on Base for $0.02 USDC.

0
JavaScript
View repository →

Programmatic web-scraping MCP server powered by x402 micro-transactions on Base.

0
JavaScript
MIT
View repository →

Resolve sourced merchant facts and safe actions before an agent acts.

0
TypeScript
MIT
View repository →

Privacy-respecting web search for AI assistants using SearXNG with pagination, URL reading, and browser solver support.

1.1k
TypeScript
MIT
View repository →

Repo-native task continuity for AI coding agents: a reviewed task-state ledger served over MCP.

17
TypeScript
MIT
View repository →