uikit-registry
Enables searching, retrieving details (source code and props), and comparing Ant Design UI components via MCP tools.
Enables searching, retrieving details, and comparing Chakra UI components via MCP tools.
Enables searching, retrieving details, and comparing DaisyUI components via MCP tools.
Enables searching, retrieving details, and comparing Mantine components via MCP tools.
Enables searching, retrieving details (with props from TypeScript definitions), and comparing MUI components via MCP tools.
Enables searching, retrieving details, and comparing NextUI components via MCP tools.
Enables searching, retrieving details, and comparing PrimeReact components via MCP tools.
Enables searching, retrieving details, and comparing Radix UI components via MCP tools.
Enables searching, retrieving details (with source code and CVA props), and comparing shadcn/ui components via MCP tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@uikit-registrycompare button between shadcn and mui"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
uikit-registry ๐จ
Registry 13 UI library + MCP server untuk AI.
Cari, bandingin, dan dapetin detail komponen UI dari 13 library populer โ langsung dari AI agent (OpenCode, Claude, dll).
npm run mcp-server โ search_component + get_component + compare_componentsโจ Fitur
Fitur | Tools MCP |
๐ Cari komponen di semua library |
|
๐ฆ Ambil detail komponen + source code + props |
|
โ๏ธ Bandingin komponen antar library |
|
13 library UI | shadcn, MUI, Chakra, Antd, Mantine, NextUI, Radix, DaisyUI, PrimeReact, Neobrutalism, Aceternity, Magic UI, Origin UI |
Props real dari TypeScript | MUI โ , shadcn โ |
0 runtime dependencies | Node.js aja |
Related MCP server: MCP Server Starter Template
๐ Quick Start
1. Clone & Setup
git clone https://github.com/captainy7/uikit-registry.git
cd uikit-registry
npm install
npm run build2. Jalankan MCP Server
npm run mcp-serverOutput:
๐ uikit-registry MCP server v2 (data: ./data)
Tools: search_component, get_component, compare_components
Libraries: 133. Daftarin di OpenCode / Claude
Edit ~/.config/opencode/opencode.json:
{
"mcpServers": {
"uikit-registry": {
"command": "node",
"args": ["/home/satria/Development/uikit-registry/dist/mcp-server.js"],
"env": {
"UIKIT_DATA_DIR": "/home/satria/Development/uikit-registry/data"
}
}
}
}Restart OpenCode, langsung bisa pake tools uikit-registry.
๐ฆ Data
Library | Komponen | Props | Version |
shadcn/ui | 358 | โ source code + CVA props | โ |
MUI | 131 | โ
14+ props dari | v9.1.2 |
Chakra UI | 115 | โ | v3.36.0 |
Ant Design | 80 | โ | v6.4.5 |
Mantine | 114 | โ | v9.4.0 |
NextUI / Heroui | 85 | โ | v3.2.1 |
Radix UI | 59 | โ | โ |
DaisyUI | 46 | โ | v5.5.23 |
PrimeReact | 124 | โ | โ |
Aceternity UI | 88 | โ | โ |
Magic UI | 47 | โ | โ |
Origin UI | 76 | โ | โ |
Neobrutalism | 16 | โ | โ |
Total | 1339 | โ | โ |
๐ ๏ธ Usage Examples (via AI Agent)
Cari komponen:
search_component("button")
โ 11 library punya buttonLihat detail:
get_component("shadcn", "button")
โ import, 4 props (variant, size, className, asChild), source codeBandingkan:
compare_components("dialog", "shadcn,mui")
โ shadcn: 0 props
โ mui: 20 props (transition, paper, container, backdrop, ...)๐ Scraping Manual
# Scrape semua library
npm run scrape
# Scrape satu library aja
tsx src/scraper.ts --lib shadcn
# Output: data/{library}/{component}.json
# Index: data/index.jsonScraping otomatis tiap minggu via GitHub Actions (.github/workflows/scrape.yml).
๐งช Tests
npm test
# 125 tests, 0 failnpm run typecheck
# TypeScript strict, 0 errors๐๏ธ Arsitektur
src/
โโโ scrapers/ # 13 scraper, masing-masing file sendiri
โโโ mcp/ # MCP server + tools
โโโ data/ # Data access layer (ComponentStore)
โโโ shared/ # Types, constants, utilsTypeScript strict โ semua tipe aman
Zero runtime deps โ cuma node.js
100% local โ gak perlu GitHub API / internet
Parallel scraper โ 13 library selesai ~1 menit
๐ License
MIT
Available Tools
3 toolscompare_componentsA
Bandingkan komponen yang sama dari dua atau lebih library. Melihat perbedaan props, import path, dan source code.
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | Nama komponen (contoh: button, dialog, card) | |
| libraries | No | Daftar library pisah dengan koma (contoh: "shadcn,mui" atau "shadcn,mui,chakra"). Kosongkan untuk membandingkan semua library yang punya komponen ini. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains what the tool returns (differences in props, import path, source code), but it does not disclose whether the operation is read-only, any side effects, authorization requirements, or performance implications. The description gives moderate transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and to the point. It uses active voice and front-loads the core action. There is no redundant information, and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return value adequately by listing what differences are shown (props, import path, source code). It covers the essential information for a comparison tool. However, it could be slightly more comprehensive by including an example or note about the optional libraries parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters having descriptions in the schema. The description adds no new meaning beyond the schema; it uses the same terms. The baseline score of 3 is appropriate since the schema already adequately documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: comparing the same component across two or more libraries. It specifies the aspects compared (props, import path, source code), distinguishing it from sibling tools like get_component (which presumably fetches a single component) and search_component (which searches for components). The verb 'compare' and resource 'components' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when one needs to compare a component across different libraries, but it does not explicitly state when to use it vs. alternatives. No exclusions or prerequisites are mentioned. With sibling tools like get_component and search_component, the usage context is somewhat clear but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentA
Ambil detail komponen dari library tertentu. Dapat source code (shadcn) atau props + contoh (MUI, Chakra, dll).
| Name | Required | Description | Default |
|---|---|---|---|
| library | Yes | Library UI: mui, chakra, shadcn, antd, mantine, nextui, radix, daisyui, primereact, neobrutalism, aceternity, magic-ui, origin-ui | |
| component | Yes | Nama komponen (contoh: button, dialog, pagination) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It hints at differencing output based on library (source code vs props+examples), but does not disclose response format, side effects, prerequisites, or error handling. Adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The key information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain return values. It partially does by distinguishing output types per library, but lacks details on structure, errors, or edge cases. For a simple 2-parameter tool, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds value by explaining that for shadcn it returns source code, while for other libraries it returns props+examples, which enriches the semantic understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Ambil' (get) and resource 'detail komponen' from a specific library. It distinguishes the type of details by library (source code for shadcn, props+examples for others), which helps differentiate from sibling tools like compare_components and search_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting component details from a specific library, but does not explicitly state when to use this tool versus the siblings. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_componentA
Cari komponen UI di semua library. Return daftar library yg punya komponen itu.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Nama komponen yg dicari (contoh: button, dialog, pagination, card, modal, table, form, input, select, navbar, sidebar, dll) | |
| library | No | Filter hasil hanya dari library tertentu (contoh: shadcn, mui) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the return is a list of libraries, but doesn't specify search behavior like case sensitivity, partial matching, or result limits. Adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences clearly stating purpose and return value. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 2 parameters and no output schema, the description is largely complete. It explains what it does and what it returns, though it lacks notes on empty results or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions for both parameters (query with examples, library filter). The tool description adds that the result is a list of libraries, complementing the schema well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Cari' meaning search) and resource ('komponen UI'), and clearly distinguishes from siblings (compare_components, get_component) by stating it searches across all libraries and returns a list of libraries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool (to find which libraries have a UI component), but lacks explicit exclusions or alternatives. However, the sibling tools provide context for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v2.0.0- First observed
compare_components - First observed
get_component - First observed
search_component
TDQS
Each tool has a distinct purpose: search finds components across libraries, get retrieves details from a specific library, compare contrasts same component across libraries. No overlap.
All tool names follow a consistent verb_noun pattern (compare_components, get_component, search_component) with snake_case.
Three tools is appropriate for a focused UI component registry, covering search, retrieval, and comparison without unnecessary bloat.
Covers core operations well, but a tool to list all libraries or components directly might be missing; however, search can approximate this.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for building and testing AI agents with multi-model experimentation and insights.
AI agent registry โ search, discover, register, and connect agents via MCP.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseCqualityDmaintenanceA Model Context Protocol server that enables AI agents to generate, fetch, and manage UI components through natural language interactions.3287ISC
- AlicenseNot gradedqualityDmaintenanceA comprehensive template for building MCP servers that expose UI component registries and design systems to AI assistants. It enables users to browse, fetch, and retrieve implementation details from registries following the shadcn/ui format.892MIT
- AlicenseAqualityAmaintenanceMCP server for Aceternity UI components, enabling AI assistants to discover, search, install, and generate page layouts with 106 components.121MIT
- AlicenseAqualityFmaintenanceAn MCP server that enables AI assistants to search, discover, and install Aceternity UI components programmatically.537523MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/captainy7/uikit-registry'
If you have feedback or need assistance with the MCP directory API, please join our Discord server