@kintsugi-ai/mcp
v0.2.0
Published
Kintsugi MCP server: Playwright browser tools (wrapped from @playwright/mcp) + kintsugi flow recording tools
Readme
@kintsugi-ai/mcp
The kintsugi MCP server — one stdio server that gives AI coding agents (claude / codex / agy) everything they need to set up and verify Kintsugi visual regression flows.
Tool groups (single kintsugi alias)
Browser tools — reused from the official @playwright/mcp:
browser_navigate, browser_click, browser_type, browser_snapshot,
browser_take_screenshot, ... (the full upstream set is passed through
unchanged, over an in-memory MCP bridge).
Flow tools — implemented here on top of @kintsugi-ai/core:
| Tool | What it does |
| --- | --- |
| save_flow | Saves a user flow as ordered steps (navigate/click/type/scroll/wait/screenshot) with stable selectors |
| capture_baseline | Replays a flow headlessly and stores the reference screenshots + aria snapshots |
| list_flows | Lists recorded flows with step counts |
| check_flows | Replays flow(s) and pixel-diffs every step against the baseline |
Running
kintsugi mcp # via the CLI (what agents are configured with)or programmatically:
import { startKintsugiMcpServer } from '@kintsugi-ai/mcp';
await startKintsugiMcpServer({ headless: false });- The agent-driven browser is headed by default so users can watch the
agent explore; set
KINTSUGI_MCP_HEADLESS=1for headless. - The browser viewport matches
.kintsugi/config.json, so what the agent validates visually is pixel-identical to the captured baselines. - Project root resolves from
KINTSUGI_PROJECT_DIRorcwd.
Registration
kintsugi init registers this server with each detected agent:
- Claude Code →
.mcp.json(project scope, tools appear asmcp__kintsugi__*) - Codex CLI →
.codex/config.toml([mcp_servers.kintsugi]) - Antigravity →
.agents/mcp.json
The launch command defaults to npx -y @kintsugi-ai/cli@latest mcp; override with
KINTSUGI_MCP_COMMAND="node /path/to/dist/index.js mcp" for local development.
E2E verification
pnpm -r build
node scripts/e2e-stdio.mjsDrives the server over stdio exactly like an MCP client: initialize →
tools/list (asserts both tool groups) → real browser_navigate +
browser_snapshot → full save_flow → capture_baseline → list_flows →
check_flows setup loop.
