DEV Community

Cover image for Making a component library agent-ready: the ReUI MCP server
Faizal Sukaimi
Faizal Sukaimi

Posted on Originally published at faizalsukaimi.hashnode.dev

Making a component library agent-ready: the ReUI MCP server

Coding agents are good at writing React. They are bad at knowing your component library. Ask one to "add a data grid with sorting" and it will happily invent a sortable prop that has never existed, or install a package name it made up. The code looks right and fails on the first render.

We hit this with ReUI, our set of components and blocks for shadcn/ui, so we built an MCP server that gives agents the real registry instead of their memory of it.

What it does

The ReUI MCP server runs at https://mcp.reui.io over Streamable HTTP, so any MCP-capable agent can use it. It does discovery and guidance only:

  • Find: search components, examples, blocks and icons in plain language.
  • Read: return each component's real API inline, so the agent never has to scrape a docs page.
  • Plan and validate: plan a whole page from an intent, and check planned props before any code is written.
  • Install: return the exact shadcn CLI command for an item, after checking that it exists.

It never serves source code. Installation stays with the shadcn CLI, which is also where a license key lives for premium items.

Catching invented props before they ship

The tool I like most is validate_usage. The agent sends the component and props it plans to use, and gets a verdict per prop, checked against the indexed API docs. No model, no guessing.

Here is a real call. The agent plans a data grid with table, recordCount, isLoading and sortable, and wants to install c-data-grid-12 and data-grid-pro:

{
  "ok": false,
  "components": [{
    "name": "data-grid",
    "exists": true,
    "props": [
      { "prop": "table", "documented": true },
      { "prop": "recordCount", "documented": true },
      { "prop": "isLoading", "documented": true },
      { "prop": "sortable", "documented": false, "near": ["table", "sortingStrategy"] }
    ]
  }],
  "items": [
    { "name": "c-data-grid-12", "exists": true, "type": "example", "free": true },
    { "name": "data-grid-pro", "exists": false,
      "suggestions": [{ "name": "data-grid-advanced-7", "type": "block" }, { "name": "data-grid", "type": "component" }] }
  ]
}
Enter fullscreen mode Exit fullscreen mode

sortable was the invented prop, and data-grid-pro was the invented package. Both are caught before a single file changes, with a nudge toward what actually exists.

Planning a page, not just a component

compose_page takes an intent like "SaaS billing settings page" and returns an ordered plan: an app shell, a settings block, a form, a dialog, each with a top pick, alternates, preview links and the install sequence. Pass surface: "card" and every section comes from the same design-system surface, so the page doesn't end up as a patchwork of styles.

The four picks from that run:

app-shell-22

settings-7

form-5

dialog-10

If a section has no good match, it is listed under unavailableSections instead of being filled with the closest wrong thing. That rule matters more than any ranking: an agent that admits a gap is easier to work with than one that papers over it.

Setup

Claude Code, from your project root:

claude mcp add --transport http reui https://mcp.reui.io
Enter fullscreen mode Exit fullscreen mode

Then run /mcp, pick reui, and approve the sign-in in your browser.

Cursor, in .cursor/mcp.json:

{
  "mcpServers": {
    "reui": { "url": "https://mcp.reui.io" }
  }
}
Enter fullscreen mode Exit fullscreen mode

The first tool call opens a browser to sign in; a free account is created if you don't have one. For CI, create a personal token at Account → MCP and send it as Authorization: Bearer reui_pat_....

A free account covers all the free components and c-* examples. A Pro license adds the premium blocks to search, page plans and installs.

Pair it with the skill

The server answers questions. The ReUI Agent Skill tells the agent which questions to ask, and in what order: plan, find, install, read the API, adapt by reuse, then check. Install it with:

curl -fsSL https://mcp.reui.io/install | node -
Enter fullscreen mode Exit fullscreen mode

In Claude Code it lands in .claude/skills/reui and adds /mcp__reui__build, /mcp__reui__add, /mcp__reui__fix and /mcp__reui__improve.

Try it

Docs and setup for other agents (VS Code, Gemini CLI and more): https://reui.io/docs/mcp?utm_source=devto&utm_medium=social&utm_campaign=mcp-article

I'd like to hear where it falls short for you, especially props it still lets through.

Top comments (1)

Collapse
 
susanacharya profile image
Susan Acharya •

validate_usage catching the invented prop is the part i like most, since the failure mode is code that looks right and breaks on first render. the 'near' suggestions are smart too, the agent can fix itself instead of guessing again. does it also check prop types or just whether the prop exists?