A UI library and MCP built for Claude Code.
Claude Code gets a Skill that says how to build, an MCP server that searches 233 screens, 446 sections, 13 flows and 89 component groups, and a CLI that installs the source it picks. Free, MIT licensed, no account.
Four pieces that work together
The Skill sets the rules, the MCP finds the right screen, and the CLI installs it.
The Skill
A
SKILL.mdin.claude/skills/properuiand a short pointer inCLAUDE.md. It tells Claude Code to check the project withinfo --json, search the registry before writing markup, install with the CLI, and keep the token and accessibility rules.agent initThe MCP server
Four search tools return ranked results with thumbnails, docs links and what each entry is built from. A search that finds nothing says so.
search_screens, search_sections, search_flows, search_componentsCompare and plan
compare_screenssets two to five candidates side by side.get_install_planlists the files, the npm packages and the exact CLI command, before anything is written.compare_screens, get_install_planThe CLI
addcopies real source into the project, resolves registry dependencies and rewrites imports to your alias. Claude Code runs it through its own shell tool, so each write goes through the approval Claude Code already asks for.add
Set up in two commands
Run the first in your project. The second registers the MCP server with Claude Code.
Install the Skill
Writes
.claude/skills/properui/SKILL.mdand appends a pointer toCLAUDE.md. It also merges the local MCP server into.mcp.json; add--no-mcpto skip that.Run in your projectnpx @properui/cli@latest agent init --client claudeAdd the MCP server
The remote endpoint needs nothing installed. Add
--scope userto make it available in every project. Then run/mcpinside Claude Code to confirmproperuishows as connected.Remote (HTTP)claude mcp add --transport http properui https://properui.dev/api/mcpOr local (stdio), so add_component can install for youclaude mcp add properui -- npx -y @properui/mcp
Prefer another client? See setup for Codex, Cursor, ChatGPT and more.
A real recording, not a mockup
One prompt in Claude Code, recorded against the actual site and the app Claude Code built.
What happened in it
- Reads the Skill in the project, then checks the project's Proper UI setup. The first step in the Skill is
npx @properui/cli@latest info --json. - Searches the registry for billing, settings and confirm dialog entries.
- Installs the
settings-13example and theconfirm-dialogcomponent withadd, then reads the installed source. - Writes the billing route from them, builds the app and runs the token check. The recording ends on the finished page and its confirmation dialog.
The prompt
Build a billing settings page at /settings/billing: current plan with usage, payment method on file, an invoice history table, and a cancel-subscription confirmation dialog. Use Proper UI components only, keep it production quality, then run next build.
Real screens, installed as source
Both frames below are live pages rendered from the registry, not screenshots. Claude Code installs one with add and edits it like any other file in your repository.
Limits, plainly
- The components are React 19 only. For Vue, Angular, Svelte, Astro or plain HTML you get the tokens,
@properui/htmland@properui/elements, a smaller curated set. See Frameworks. - Examples ship with placeholder data and demo assets. Replace them before anything reaches a user.
- The MCP over HTTP cannot write files, because it cannot see your project. Claude Code runs the CLI, or you use the local package, whose
add_componenttool installs for you. - Zero axe violations in the test suites is not the same as fully accessible. Automated checks miss things such as focus order and screen reader wording. See Accessibility.
Frequently asked questions
Do I need an account or an API key?+
No. There is no sign-in and no key. Proper UI is MIT licensed, the MCP is part of it, and there is no paid tier.
What does `agent init --client claude` change in my repository?+
It writes .claude/skills/properui/SKILL.md, appends a short pointer to CLAUDE.md between marker comments (the rest of the file is not touched, and running it again updates that block in place), and merges a properui entry into .mcp.json. An existing properui entry in .mcp.json is left alone unless you pass --overwrite. Pass --no-mcp to skip the MCP registration.
Remote or local MCP in Claude Code?+
The remote URL needs nothing installed and can search, inspect and plan. The local package, npx -y @properui/mcp, runs inside your project, so it also has add_component, get_project_info and check_tokens. The .mcp.json entry that agent init writes is the local one. Register the remote one instead when you do not want a local process.
Does Claude Code write files through the MCP?+
Only with the local package. Over HTTP the server searches, inspects and plans, and Claude Code runs npx @properui/cli@latest add <name> itself, so each write goes through the approval Claude Code already asks for.
Does it work with other agents?+
Yes. agent init also takes --client codex, --client cursor and --client lovable, or --client all. The MCP works in any client that supports MCP; the MCP page lists setup for each.
Give Claude Code a library to search.
Add the Skill and the MCP once. Then ask for a screen and install the one you pick.