tavero mcp
Provides an MCP server configuration for Windsurf (Codeium) so the agent can query Tavero findings, inspect individual findings with evidence, rescan the app, and verify fixes against resolved/new finding diffs.
Provides an MCP server configuration for GitHub Copilot in VS Code, giving the agent tools to read the design-system context, list and inspect UI drift findings, rescan routes, and confirm fixes via finding diffs.
Click on "Deploy 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., "@tavero mcpscan my React app for UI drift and show the worst findings"
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.
Tavero scans your running React app, finds drift in buttons, cards, colors and spacing, and gives your coding agent each fix with the file, the line and the token to use. It runs on your machine, as a CLI, an MCP server for Claude Code, Cursor, Codex and other agents, and a local panel where you decide what is intended.
A real finding from the Acme demo in this repository (demo/acme): six pages scanned at three widths.
How it works
Scan. Tavero opens your dev server in Chromium at mobile, tablet and desktop widths, with your login if the app needs one. If the project styles a dark theme, it adds one dark pass.
Attribute. Every visible element is mapped to the React component and the source line that rendered it, from React's own dev-mode data. Nothing is added to your project.
Find. Four rules compare what renders with your tokens and with itself: buttons, cards, colors and scales.
Fix. Each finding is a task: what, where (file:line), the current value, and the token or component expected. Your agent fixes it, rescans one route in seconds, and checks that the finding is resolved.
Related MCP server: Rams
Quick start
Node 20 or later, a Vite or Next app on React 19 that runs in dev mode.
npm i -D tavero
npx playwright install chromium # once per machine
npx tavero login --url http://localhost:5173/login # once, if the app has a login
npx tavero scan --url http://localhost:5173
npx tavero findingsid sev rule decision title evidence
f_c75ac3d6a2 high buttons 7 text button styles 7
f_36cb934b5e high scales 13 distinct padding values, 1 declared 12
f_94269275c1 medium buttons Two text button styles differ only in radius, paddingY, pa… 2
f_057122e1f9 medium buttons 4 place(s) write <button> directly in page or section mark… 4
… 30 more, use --page 2npx tavero finding f_ff30adc07c # evidence: file:line, current value, expected token, crops
npx tavero context # a ~1,500-token brief of the design system for an agent
npx tavero report # a self-contained HTML reportTavero writes only to <project>/.tavero/. Every read command takes --json, and text output is capped at 20 rows so it fits an agent's context.
Use it from your agent
tavero mcp is an MCP server on stdio with nine tools. Print the config for your client and paste it where it says:
npx tavero mcp --print-config claude # Claude Code: .mcp.json
npx tavero mcp --print-config cursor # .cursor/mcp.json
npx tavero mcp --print-config codex # .codex/config.toml
npx tavero mcp --print-config gemini # .gemini/settings.json
npx tavero mcp --print-config antigravity # .agents/mcp_config.json
npx tavero mcp --print-config vscode # .vscode/mcp.json (GitHub Copilot)
npx tavero mcp --print-config windsurf # ~/.codeium/windsurf/mcp_config.jsonThen paste docs/AGENTS.snippet.md into AGENTS.md, CLAUDE.md or GEMINI.md, so the agent reads the design context before writing UI. SKILL.md is an Agent Skill with the full workflow.
A recorded run of Claude Code on the Acme demo, with no shell, 29 seconds:
› tavero_context
Action button is Button from src/components/Button.tsx (props: variant)
› tavero_findings rule=colors
f_ff30adc07c Color #4263eb is not a project token
› tavero_finding f_ff30adc07c
src/app.css:33 literal #4263eb in source
expected --acme-primary #3b5bdb (ΔE 3.5)
edit src/app.css:33 background: #4263eb → var(--acme-primary)
› tavero_scan routes=/billing rules=colors
› tavero_diff
resolved f_ff30adc07c Color #4263eb is not a project token
resolved f_18862a0332 Hardcoded color #4263eb in 1 place(s)
new 0Tool | Use |
| design-system brief; call before writing UI |
| problems, worst first; one problem with evidence, the expected value and the exact rescan call |
| scan the app; after a fix, only the touched |
| resolved, new and unchanged findings since the previous scan |
| inventory, crop paths, tokens |
Rules
Rule | Reports |
| distinct text and icon button styles with the components that render them, near-duplicate pairs, |
| distinct card styles, near pairs, card-like containers built inline |
| colors outside your tokens with the nearest token and ΔE, Tailwind default colors in a project with its own palette, near-identical pairs, hardcoded literals with file and line; in a dark theme, backgrounds that stay light, dark text on a dark page and dark-only colors without a token |
| radius, padding, gap, font size, weight and shadow values off the scale your tokens declare |
Decide what is intended
npx tavero ui --open # http://127.0.0.1:4747A local panel for the person behind the agent. Go through the findings with the keyboard and decide. The agent sees each decision on its next call, without a rescan.
Decision | What the agent sees |
Fix | the finding comes first, marked as confirmed work |
Intended | hidden until the finding gains new places |
Canonical | on button and card variants: the reference variant and allowed ones, optionally named ("primary", "ghost"); the others get it as |
Note | a message delivered with the finding |
Decisions are stored in .tavero/decisions.json, keyed by stable finding ids. Commit it to share them with your team and its agents. npx tavero ui --export ./panel writes a static, read-only copy of the panel.
Requirements and limits
React 19 in dev mode, on Vite or Next (App Router, Turbopack). React 18 keeps different debug data and is not supported yet.
Tokens are read from CSS custom properties and Tailwind 3 or 4 themes.
Card detection is heuristic, so the
cardsrule is marked preliminary.Tavero runs locally and sends nothing anywhere. There is no account and no telemetry.
Development
npm ci
npx playwright install chromium
npm test # unit and Playwright runtime tests; starts the test apps itself
npm run typecheck
npm run buildThe website lives in site/ (Next.js static export). npm run site:install && npm run site:dev runs it; npm run site:audit runs its gates: Tavero on the site itself with 0 high and medium findings, Lighthouse, axe and three widths.
src/
core/ scan orchestration, aggregates, query API, decisions, diff, stable ids
project/ framework detection
static/ tokens, Tailwind theme and palette, hardcoded colors, component index
runtime/ dev server, session, crawl, in-page collector, attribution, crops
rules/ signatures and the four rules
context/ the agent-facing brief
report/ HTML report
mcp/ MCP server, tools, client configs
ui/ local panel and static export
cli/ the command line
demo/acme/ a small dashboard with deliberate drift, used by tests and the website
test/ unit and runtime tests with mini Vite and Next apps
design/ design tokens shared by the panel and the website
site/ the websiteSee CONTRIBUTING.md before opening a pull request.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
On-demand drift checks: declared CSS color, radius, spacing & type vs your own tokens or a pack
Serves your design system and coding standards to coding agents, so they stop guessing.
Give your agent a real design system: tokens, measured WCAG contrast, and rules to follow.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to query a workspace's design system before writing UI and validate generated code against the same system afterward, using configurable token and component sources.13 npm1MIT
- AlicenseNot gradedqualityCmaintenanceDesign review for UI code, inside your coding agent. Reviews React, Vue, Svelte, CSS and SwiftUI against 313 rules and returns scored findings with file:line fixes your agent can apply and verify.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI coding agents to inspect a project's design tokens and component catalog, audit React/Tailwind files against seven static UI quality rules, score overall UI health, and apply auto-fixes that are re-audited and reverted on regression. It works both locally over filesystem access and remotely on raw TSX/JSX or CSS snippets passed directly as strings.-
- AlicenseNot gradedqualityBmaintenanceEnables coding agents and CI to verify rendered web UIs against design token usage, layout constraints, and accessibility rules, returning concise pass/fail verdicts with actionable findings.MIT