Read the design from any agent
drepo mcp is a Model Context Protocol server over stdio. Claude Code, or any MCP client, can list boards, read a frame's spec and screenshot, look up a component and check render health, from the app repo where the code is written.
Start the server
Inside a design repo, or anywhere with CANVAS_REPO set. It speaks MCP on stdin and stdout, logs to stderr, and never writes to the repo: every tool is read-only, and screenshots and health PNGs go to a temp folder.
$ drepo mcp # waits for an MCP client on stdio; Ctrl-C to stop
Wire it into Claude Code
From the app repo, add it once and point it at the design repo. Claude Code starts it when a session needs it.
$ claude mcp add designrepo -e CANVAS_REPO=$HOME/acme/storefront-design -- drepo mcp $ claude mcp list # designrepo is listed and connected
Or check it in, so everyone on the team gets it. Point CANVAS_REPO at the design repo's checkout; a relative path is read from the folder Claude Code starts in.
{ "mcpServers": { "designrepo": { "command": "drepo", "args": ["mcp"], "env": { "CANVAS_REPO": "../storefront-design" } } } }
Tools
Boards, frames and components come from the committed manifest.json, so run drepo manifest after editing boards. A tool that fails answers with an error; the server keeps running.
A session
In the app repo, Claude builds the payment step from the frame instead of a screenshot in a ticket.
Build the checkout payment step from the design: 03 Checkout, frame 3a, with a screenshot.
Frame 3a is a two-column payment step: a 640px form and a 360px order summary, in three states (default, card declined, Apple Pay unavailable). I'll build PaymentStep from its spec and reuse OrderSummary's props.
Troubleshooting
Claude Code doesn't list the tools
Run claude mcp list. If designrepo is missing, add it from the app repo's root; .mcp.json is read from the folder Claude Code starts in.
get_frame returns no screenshot
Screenshots need Node and Playwright, as drepo shoot does. If drepo shoot frame "01 Home" 1a works in the design repo, so does get_frame with screenshot: true.
It reads the wrong design repo, or none
drepo mcp uses CANVAS_REPO, else the design repo at or above the folder it starts in. In an app repo, set CANVAS_REPO to the design repo's path, as above.
A board or frame is missing
The tools read the committed manifest.json. Run drepo manifest in the design repo after adding or renaming boards.
Note the design repo's commit in the commit or PR that builds the frame (Copy for dev puts it first), so a later design change can't move the target.