
Kiyas
io.github.saiffmirza由 GitHub 账号 saiffmirza 发布v1.4.0更新于 Oct 24, 2026
AI design fidelity — compare Figma designs or screenshots against rendered UI. No API keys.
概览
将 Figma 设计稿或设计截图与已渲染的 UI 组件进行对比,并返回 AI 生成的视觉差异清单。
- 可以做什么
- Kiyas 执行设计还原度对比:获取设计图(从 Figma 链接导出或使用本地图片),在代码库中定位对应组件,用无头 Chromium 截图,再把两张图片交给视觉模型做语义差异分析。它提供三个 MCP 工具:compare(执行对比并返回 reportId 与摘要)、get_diff_report(以 HTML 或 JSON 获取已保存的报告)、list_issues(列出差异,可按严重程度筛选)。报告保存在项目目录下的 .kiyas/reports/ / 中。
- 适用场景
- 适合让助手检查已实现的界面是否与设计稿一致,并获得具体可读的反馈,例如 border-radius 或间距数值不一致。适用于组件能在本地开发服务器上访问的前端工作流,也可作为 CLI 或 macOS 桌面应用运行。
- 运行要求
- 通过 npx 运行的本地进程(npm 包 kiyas-cli);需要 Node.js 20+ 并安装 Playwright Chromium。AI 调用委托给 Claude Code CLI(需已登录的 Pro、Max 或 Team 订阅)或用于 OpenAI 的 Codex CLI。仅在与 Figma 链接对比时需要具备 File content 只读权限的 Figma 个人访问令牌;截图对比无需令牌。实现截图需要一个开发服务器或可访问的 URL。
安装
在 SourceWeft 中
- 打开 控制台中的 Kiyas,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
AI-Powered Design Fidelity — MCP Server & CLI
"comparison" — pronounced "key-AHS"
A developer-first MCP server (also runnable as a CLI) that compares Figma designs against rendered UI components and surfaces an AI-powered semantic diff. Plugs into Claude Code, Cursor, Codex CLI, and any other MCP-compatible client.
Unlike pixel-diff tools, kiyas uses vision AI to understand what is different and why it matters — outputting actionable, human-readable feedback like:
- "border-radius is 8px in implementation but 12px in design"
- "spacing between title and subtitle is 16px tighter than the design"
Just describe the component by name. kiyas finds it in your codebase, screenshots it, and compares it against the Figma design.
Prefer an app over a terminal? There's also a desktop app.
Desktop App
A native macOS app for running the same comparisons point-and-click — built for designers and anyone who'd rather not touch a terminal. Pick a project, paste a Figma link (or drop in a screenshot), describe the component, and get the full report in-app. It uses the same engine and the same subscription-based auth: AI calls go through the Claude Code or Codex CLI on your machine, never an API key.
⬇ Download the latest release (Apple Silicon)
- Download the
.dmg, drag Kiyas to Applications. - Preview builds aren't notarized yet — on first launch, right-click → Open (or run
xattr -dr com.apple.quarantine /Applications/Kiyas.app). - Sign in to Claude Code or Codex in any terminal once; the app picks it up from there.
Highlights: project sidebar with dev-server detection, capture preview + crop before comparing, built-in terminal, full dark mode, and a Liquid Glass icon on macOS 26.
To build from source instead:
How It Works
Step-by-step:
- Authenticate — kiyas delegates AI calls to the Claude Code or Codex CLI. Your existing subscription handles everything — no API keys needed.
- Get the design image — Parses the Figma URL, calls the Figma REST API to export the frame as a PNG (at the same scale as the screenshot — adaptive, see
--scale), and fetches node metadata (colors, fonts, spacing). Or skip Figma entirely: pass--design <path-or-url>with your own design image and no Figma token is needed. - Resolve component — An AI agent scans your codebase (file tree, routes, components) and maps your natural-language description to a URL on your dev server + a CSS selector.
- Screenshot implementation — Playwright launches headless Chromium, navigates to the resolved URL, and captures the component.
- AI comparison — Both PNGs are passed to the Claude Code CLI with a structured prompt. The AI identifies every discrepancy with specific CSS properties and values.
- Report — Results are formatted into an HTML report with side-by-side image comparison, severity badges, and interactive filters. A file link is printed to the terminal for easy access.
Use as an MCP Server
kiyas exposes its comparison engine as an MCP server over stdio. Three tools, all with Zod-typed input schemas:
Reports are persisted under .kiyas/reports/<reportId>/ in your project directory, so the same reportId stays valid across calls and across CLI/MCP usage.
Install
Wire it up
Claude Code
kiyas is also listed in the official MCP Registry as io.github.saiffmirza/kiyas, so registry-aware clients can install it directly from their MCP catalog.
Cursor — edit ~/.cursor/mcp.json:
Codex CLI — edit ~/.codex/config.toml:
Staying up to date
The configs above use kiyas-cli@latest so npx picks up new releases on every launch — the tradeoff is a registry check per start, and launches can fail offline. If you'd rather pin a version ([email protected]) or use a global install, that's safe too: kiyas checks npm once at startup (non-blocking) and logs a notice to stderr when a newer version is available.
Figma access for MCP users
The compare tool needs Figma access only when you pass a figma URL. Three ways to provide it:
1. Pass your token via the server config (recommended):
or in .mcp.json / mcp.json / config.toml, add an env block:
2. A .kiyasrc file in the project root or home directory: { "figmaAccessToken": "..." }
3. No token at all — pair with the Figma MCP server. If the agent already has Figma's own MCP server connected, it can export the frame as an image itself and pass the file path (or image URL) as designImage instead of a figma URL. kiyas never touches the Figma API in this mode:
Export node 1:234 from the Figma file as a PNG, then use kiyas to compare it against the primary button on the login page.
If a figma URL is used with no token configured, the tool fails fast with these instructions rather than hanging.
Once connected, you can ask the agent things like:
Compare the Figma frame at
<url>against the primary button on the login page, then list only the high-severity issues.
The agent will call compare to produce a reportId, then list_issues with severity: "high" against that ID.
Quick Start (CLI)
Prerequisites
- Node.js 20+
- Claude Code installed and signed in (Pro, Max, or Team subscription), or Codex for OpenAI
- A Figma personal access token (generate one here) — only needed for
--figma; comparing against a local screenshot with--designrequires no token
Install
Setup
This walks you through:
- Figma token — creates a read-only personal access token and saves it to
.env - AI provider — checks for Claude Code or Codex and sets the default
Run
CLI Reference
*Provide either --component or --target. When using --component, kiyas uses AI to find the component in your codebase and resolve it to a URL.
**Provide either --figma or --design. With --design, the Figma export is skipped entirely and no Figma token is required.
Authenticated screenshots
Most real designs live behind a login. kiyas accepts a Playwright storageState JSON file (cookies + localStorage) and reuses it for the screenshot session — the same format Playwright tests use, so any auth-state file your tests already produce works as-is.
The MCP compare tool exposes the same option as authState — pass the path and the agent screenshots authenticated views with no further setup.
Authentication
kiyas leverages your existing AI subscriptions — no separate API keys needed. It delegates all AI calls to the Claude Code or Codex CLI, which handle their own authentication.
Claude (default): Requires Claude Code installed and signed in with a Pro, Max, or Team subscription. kiyas spawns the claude CLI for AI calls, so usage counts against your existing subscription quota.
OpenAI (alternative): Requires Codex installed and signed in. Use --model openai to select it.
If no CLI is found, kiyas prompts you to install and sign in:
Figma: Requires a personal access token with File content → Read only scope. Run kiyas setup to configure it, or set FIGMA_ACCESS_TOKEN in .env manually.
Accuracy & Reproducibility
kiyas is a harness around vision AI, and a harness is only useful if its results are consistent. What it controls:
- Pinned models — the comparison and resolver models are pinned (
claude --model/codex -m) instead of drifting with CLI defaults. Configure withkiyas set claudeModel <id>/kiyas set codexModel <id>. - Isolated AI context — comparisons run in an empty working directory so your project's
CLAUDE.md/AGENTS.md, hooks, and MCP servers can't influence the output. - Frozen capture environment — animations and transitions disabled, fonts awaited, UTC timezone, fixed locale, full-page screenshots, and the Figma export scale always matches the screenshot's device scale factor. Component-sized captures default to 2x — measured on the eval set, that raised subtle-mutation recall from 75% to 90%.
- Validated output — model responses are schema-validated (malformed findings are dropped with a warning; a majority-invalid response fails the run instead of producing a quietly wrong report).
- Run manifest — every report's JSON records the viewport, scale, threshold, pinned model, CLI version, prompt version hash, and how a
--componentdescription was resolved, so any two reports can be meaningfully compared. - Multi-run voting —
--runs 3runs the comparison three times concurrently and keeps only majority-vote findings, each tagged with a confidence score. Higher consistency at N× cost; off by default. - Measured, not vibed —
npm run eval(repo only, not shipped) runs a golden eval set: fixture pages with known injected CSS mutations plus zero-mutation pairs, scored deterministically for recall, precision, severity agreement, false-positive floor, and run-to-run stability. Prompt and pipeline changes are validated against it.
Config File
For teams running repeated comparisons, create a kiyas.config.json:
The target field accepts both component descriptions (resolved by AI) and direct URLs. Each comparison takes either figma (a URL) or design (a local image path) as its design source. Run with:
Project Structure
Tech Stack
License
MIT
来源:README.md,提交 4b43708
工具
0版本历史
1- v1.4.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分