Search, read and install ndekoui React components, blocks and templates with the shadcn CLI.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The rules for writing UI that looks and moves like ndekoui: surfaces and hairlines, radius, colour, type, how to compose the Base UI primitives, the motion signatures and their timing, and what to avoid. Call it once before writing UI. Pass section with a number or a title ("7", "motion") to read one section of the design system in full, or "all" for the whole document.
A section number or title ("7", "motion"), or "all" for the whole design system
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http ndekoui https://ui.ndekocode.dev/mcp
The rules for writing UI that looks and moves like ndekoui: surfaces and hairlines, radius, colour, type, how to compose the Base UI primitives, the motion signatures and their timing, and what to avoid. Call it once before writing UI. Pass section with a number or a title ("7", "motion") to read one section of the design system in full, or "all" for the whole document.
| Argument | Type | Description |
|---|---|---|
| section | string | A section number or title ("7", "motion"), or "all" for the whole design system |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"section": {
"type": "string",
"maxLength": 80,
"description": "A section number or title (\"7\", \"motion\"), or \"all\" for the whole design system"
}
}
}Build the shadcn CLI command that installs one or more ndekoui items, for npm, pnpm, yarn or bun. Returns the command with full registry URLs, which works in any shadcn project, and the shorter @ndeko form for projects whose components.json declares the namespace.
| Argument | Type | Description |
|---|---|---|
| names* | array | |
| packageManager | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"names"
],
"properties": {
"names": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Registry name of an item, such as button, accordion-01 or heroes-02"
},
"maxItems": 30,
"minItems": 1
},
"packageManager": {
"enum": [
"npm",
"pnpm",
"yarn",
"bun"
],
"type": "string",
"default": "npm"
}
}
}Get one ndekoui item by name: the full source of its files, its npm dependencies, the registry items it pulls in, the shadcn command that installs it and its page on ui.ndekocode.dev. Large templates return the source of their first files and list the rest; pass file with a path from that list to read one file.
| Argument | Type | Description |
|---|---|---|
| file | string | Path of one file from a previous get_item answer, to read only that file |
| name* | string | Registry name of an item, such as button, accordion-01 or heroes-02 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"file": {
"type": "string",
"maxLength": 300,
"description": "Path of one file from a previous get_item answer, to read only that file"
},
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Registry name of an item, such as button, accordion-01 or heroes-02"
}
}
}Summarise the theme item every ndekoui piece depends on: the colour tokens with their light and dark values, the radius and easing tokens, and the utilities it adds (hairlines, chip-3d, keycap-3d, gem-plate, surface-raised, surface-brand). Read it before changing colours or writing new styles.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The map of the ndekoui catalogue with counts: primitive groups, component families and their categories, block groups, template groups, motion groups and library items. Use the slugs it returns as the category of list_items.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List ndekoui registry items of one kind. Kinds: primitive (Base UI building blocks such as button or dialog), component (ready compositions such as accordion-01), block (product sections such as heroes-01), template (whole pages), motion (animation components) and lib (theme, utilities, icons, sample images, hooks). Narrow with category: a category or group slug such as accordion, heroes or application, or a component family such as forms or overlays. Paged with offset and limit.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| limit | integer | |
| offset | integer | |
| category | string | A category or group slug (accordion, heroes, application) or a component family (forms, overlays) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"primitive",
"component",
"block",
"template",
"motion",
"lib"
],
"type": "string"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0
},
"category": {
"type": "string",
"maxLength": 80,
"description": "A category or group slug (accordion, heroes, application) or a component family (forms, overlays)"
}
}
}Search the ndekoui registry by words, ranked like the search on ui.ndekocode.dev: titles first, then names, groups and descriptions. Use it before list_items when you know what you need ("pricing", "date range", "kanban"). Filter by kind: primitive, component, block, template, motion or lib.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only return items of this kind |
| limit | integer | |
| query* | string | Words that describe the piece, such as "date range picker" |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"kind": {
"enum": [
"primitive",
"component",
"block",
"template",
"motion",
"lib"
],
"type": "string",
"description": "Only return items of this kind"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Words that describe the piece, such as \"date range picker\""
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 6, 2026.