
I built an MCP server that gives AI assistants the real source of state-complete React components (instead of letting them hallucinate UI)
Ibirdui is a shadcn-style React registry (you own the code) where every component handles loading/empty/error/success and ships an axe a11y test. This week I added an MCP server so AI assistants build with the real components instead of guessing. Open source.
I kept hitting the same wall with AI coding: ask for "a users list with loading, empty and error states" and you get markup that looks right but is subtly wrong and not accessible. The model has no idea what's actually in your library.
So over the last 5 days I shipped:
ibirdui-mcp (Model Context Protocol server) — three tools for an assistant:
- search_components — rank the catalog against a plain-language need
- list_components — filter by async state (loading/empty/error/optimistic/offline)
Add it in one line:
claude mcp add ibirdui -- npx -y ibirdui-mcp
Then "use ibirdui to build a save button with a loading state" pulls the real async-button source and composes with it.
Also new this week:
- ibirdui doctor — read-only health check (flags components you've edited locally or that have updates available)
- live, interactive previews on the docs site
The thesis (shadcn's ownership idea, taken further): you own the code and it's state-complete + accessibility-tested out of the box.
Repo + live docs: https://github.com/Geekles007/ibirdui
website: https://ui.ibird.dev
Install a component: npx ibirdui add async-button
It's a solo open-source project and I'd genuinely love feedback — especially on the MCP tool design: are search/get/list the right primitives? What would you want an assistant to be able to query?