ndekoui
Server Details
Search, read and install ndekoui React components, blocks and templates with the shadcn CLI.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- NdekoCode/ndekoui
- GitHub Stars
- 3
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
The tools split cleanly along browse (list_categories, list_items), find (search_items), fetch (get_item) and reference-doc (get_design_guidelines, get_theme, get_install_command) lines, and the descriptions explicitly chain them (search before list_items, categories feed list_items). The only real overlap is that get_item could return the theme item that get_theme specialises, and both get_design_guidelines and get_theme return prose about styling, so an agent may occasionally pick the wrong lookup.
All seven tools follow a strict verb_noun snake_case pattern (get_*, list_*, search_*), with verbs that match the operation: get for a single entity, list for enumerations, search for ranked queries. No casing or style deviations anywhere in the set.
Seven tools is well-scoped for a component-registry server: discovery, retrieval, styling guidance and install command each occupy one clearly earned slot. There is no redundancy that a larger set would normally introduce, and no obvious missing capability that would require another tool.
The surface covers the full read path of a shadcn registry: catalogue map, filtered listing, search, per-item source with file drill-down, theme tokens and a generated install command, plus the design guidelines needed before writing UI. Gaps are minor — there is no way to fetch an arbitrary registry file, check versions/changelogs, or verify a project's existing installs, though agents can work around these via get_item's file parameter.
Available Tools
7 toolsget_design_guidelinesGet design guidelinesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | A section number or title ("7", "motion"), or "all" for the whole design system |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavior: the section parameter selects one section "in full" versus "all" delivering the entire document, which tells the agent the response size is caller-controlled. It does not warn that "all" may be large or describe the response shape, keeping it below a 5.
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 sentences, front-loaded with what the content is and then how to call it. Every clause carries information: the topic list tells the agent whether the resource is relevant, and the second sentence covers the only parameter. No filler.
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?
With one optional parameter, full schema coverage, no output schema, and annotations carrying the safety profile, the description supplies everything needed to invoke correctly. The only residual gap is any hint about the volume or structure of the return when section is "all".
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% and the schema already documents that section takes a number, a title like "motion", or "all". The description's worked examples ("7", "motion") repeat the schema rather than adding new semantics such as accepted casing, partial matches, or error behavior for unknown sections. Baseline 3 is correct.
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 names a concrete resource (the ndekoui design rules) and enumerates its contents — surfaces/hairlines, radius, colour, type, Base UI primitive composition, motion signatures and timing, anti-patterns. That enumeration clearly separates it from siblings like get_theme or get_item, which an agent can rule out without opening a schema.
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?
"Call it once before writing UI" gives an explicit trigger and a call-frequency rule, and the section guidance implies the two modal workflows (read one section vs. read everything). It stops short of naming an alternative or saying when not to call it, so it lands just above the bar rather than at it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_install_commandGet install commandARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | ||
| packageManager | No | npm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld=false and non-destructive, so safety is covered. The description goes beyond them by disclosing the actual return shape — two command variants, one with full registry URLs and a shorter @ndeko form gated on components.json declaring the namespace — which matters because no output schema exists.
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 tight sentences, front-loaded with the action and artifact, followed by the return-value nuance. No filler and nothing that repeats the schema verbatim.
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 read-only two-parameter tool with no output schema, the description covers purpose, the package-manager dimension, and the two return forms. It stops short of stating whether names are validated against the registry or how invalid input surfaces, which would be the last piece an agent needs.
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 reported at 0%, so the description must carry weight, and it partly does: it enumerates npm, pnpm, yarn and bun for packageManager and clarifies 'one or more' items for the names array. It adds no mapping detail beyond that — no mention of the npm default, the 30-item cap, or what happens with an unknown item name.
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?
States a specific verb and artifact: 'Build the shadcn CLI command that installs one or more ndekoui items'. This is unmistakably distinct from siblings like get_item (fetch one item) and list_items (enumerate), and the agent knows the output is a command string, not data.
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?
Usage is implied by the purpose — call it when you need an install command — but there is no explicit when-to-use framing or routing versus get_item/list_items. The only conditional guidance given ('works in any shadcn project' vs 'the shorter @ndeko form for projects whose components.json declares the namespace') describes which output form applies, not when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itemGet itemARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path of one file from a previous get_item answer, to read only that file | |
| name | Yes | Registry name of an item, such as button, accordion-01 or heroes-02 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds real behavioral value by disclosing truncation behavior for large templates and the follow-up retrieval path, but it says nothing about error behavior for a missing item or whether names are case-sensitive.
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 sentences, front-loaded with the verb and resource, then the return payload, then the truncation caveat and remedy. The five-item enumeration in the first sentence is dense but each element is information the agent needs to decide whether to call it; no filler wording.
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?
With no output schema, the description carries the burden of describing return values, and it does so concretely while also explaining the truncated-template case. The main remaining gap is item-name discovery and error behavior, which matters because the tool is keyed entirely on a name the agent must already possess.
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%, so both the name (registry name plus examples) and the file (path from a previous answer) are already documented at the schema level. The description restates the file-parameter contract and mentions 'full source' for name without adding format, casing, or scoping detail beyond the schema. Baseline 3 is correct.
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?
States a specific verb and resource ('Get one ndekoui item by name') and enumerates exactly what comes back: file source, npm dependencies, registry items pulled in, the shadcn install command, and a docs URL. The singular name-based lookup implicitly contrasts with the list_items and search_items siblings, but neither is named, so the differentiation is left to inference.
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?
There is genuine usage guidance for the two-step pattern: large templates return only the first files, and the caller should pass a path from that list via the file parameter. However, nothing says when to reach for get_item versus search_items or list_items, nor what to do when the name is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_themeGet themeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety and side effects are covered. The description adds value beyond them by disclosing the shape of the payload (token categories, light/dark pairs, specific utility names), which no annotation conveys. It says nothing about response format or size, which keeps it from a 5.
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?
One sentence, front-loaded with the verb and resource, followed by the contents and the usage trigger. The parenthetical utility list is long but each item is concrete information an agent can act on, so it earns its space; a minor trim would still preserve 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?
There is no output schema, so the description carries the burden of telling the agent what comes back, and it does so by category. For a no-parameter, read-only lookup with strong annotations this is close to complete; only the return structure (e.g. flat map vs. nested token groups) is left implicit.
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?
The tool takes zero parameters, so there is no parameter meaning to explain and the baseline is 4. The description correctly implies a parameterless whole-theme read rather than suggesting any filtering options.
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?
Names a specific verb and resource ('Summarise the theme item') and then enumerates exactly what the resource contains: colour tokens with light/dark values, radius and easing tokens, and a named list of utilities. That enumeration is what separates it from siblings like get_item or get_design_guidelines, so an agent can identify it without opening the schema.
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?
'Read it before changing colours or writing new styles' gives a concrete condition for invoking the tool, which is the main usage decision an agent faces here. It stops short of naming alternatives (e.g. get_design_guidelines) or stating when it is not needed, so it is clear context rather than a full when/when-not rule set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds behavioral value by disclosing that results carry counts and that the returned slugs are the canonical identifiers consumed by other tools. It does not describe size, ordering, or caching behavior.
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 sentences, zero padding, with the content enumeration front-loaded and the actionable instruction last. The first sentence is a slightly awkward colon-list but every element carries 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?
With no parameters and annotations covering the safety profile, the remaining burden is what comes back and how to use it. The description enumerates the returned groupings, notes that counts are included, and explains the slug handoff to list_items. Only the exact response shape is unspecified, which is a minor gap.
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?
The tool takes zero parameters, so the baseline is 4. The description correctly implies a parameterless full dump and redirects the only meaningful input decision (the category slug) to the sibling that needs it.
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 names the resource concretely: a map of the catalogue with counts, enumerating the groupings it covers (primitive groups, component families, block groups, template groups, motion groups, library items). Combined with the name 'list_categories' an agent can tell this is the taxonomy endpoint rather than the item-fetching siblings. It stops short of a crisp verb, and the brand term 'ndekoui' adds no disambiguation.
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?
There is one explicit downstream routing instruction: use the returned slugs as the category argument of list_items. That is genuinely useful guidance for sequencing calls. However, it never says when to call this first versus going straight to list_items or search_items, nor any preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_itemsList itemsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| offset | No | ||
| category | No | A category or group slug (accordion, heroes, application) or a component family (forms, overlays) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds the pagination model and the semantic content of each kind, but says nothing about response shape, ordering, or what happens when a category matches nothing.
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?
Three sentences, front-loaded with the core action, then the kind glossary, then filtering and paging. The kinds sentence is long but each clause defines a distinct value, so little is wasted.
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?
There is no output schema and no description of what a listed item contains or how pagination metadata is returned, which leaves an agent guessing about the result shape. For a simple read-only listing the description is otherwise adequate, but that gap keeps it at minimum-viable.
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 only 25% (category alone is described inline), so the description carries real weight. It supplies the meaning of every kind enum value and clarifies that category accepts a category slug, a group slug, or a component family, which the bare string schema does not convey.
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?
States a specific verb and resource ("List ndekoui registry items of one kind") and then enumerates the six kinds, which lets an agent map directly onto the required kind parameter. It does not explicitly contrast itself with search_items or get_item, so it stops short of full sibling differentiation.
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?
Usage is implied rather than stated: narrow a listing with category, page with offset and limit. There is no explicit guidance on when to prefer search_items instead, or when to follow up with get_item for details, which is the main ambiguity given similarly named siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_itemsSearch itemsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only return items of this kind | |
| limit | No | ||
| query | Yes | Words that describe the piece, such as "date range picker" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the description's burden is lighter. It adds useful non-annotation context: the relevance ranking order across fields and the kind-filter dimension. It stops short of describing result shape or what happens on zero matches, which is a minor gap for a search tool.
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 tight sentences, front-loaded with the action and resource, then the usage routing. Every clause carries information; nothing is redundant with the title.
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 a read-only search with three flat parameters, no output schema, and annotations covering safety, the description covers purpose, ranking behavior, and the main filter. The main omission is any hint about returned items or truncation, which the agent would otherwise have to infer.
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?
With 67% schema coverage, the description adds meaning to 'query' by framing it as free words that match titles, names, groups and descriptions, and it enumerates the kind values. The limit parameter (1-50, default 10) is left entirely to the schema, which is the only real gap.
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?
States a specific verb and resource ('Search the ndekoui registry by words') and explicitly contrasts with the sibling list_items. The ranking rule ('titles first, then names, groups and descriptions') further distinguishes it from any browse/list tool.
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?
Explicitly says 'Use it before list_items when you know what you need' and supplies concrete example queries, so the agent knows exactly when this tool is the right pick. The kind filter enumerates all valid values, closing off a common misuse path.
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.
7 tool updates
- First observed
get_design_guidelines - First observed
get_install_command - First observed
get_item - First observed
get_theme - First observed
list_categories - First observed
list_items - First observed
search_items
Related MCP Connectors
Search, read and install ReUI shadcn components, examples, blocks and icons from your coding agent.
Search shadcn registry items, read props and get exact install commands for React components.
Search, read and install agent-ready React components, screens and blocks for AI products.
Find, read and install shadcn components with Salesforce Lightning's look, for Radix and Base UI.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables agents to search a fully local catalog of 21st-style shadcn components via full-text search, inspect individual records, generate reusable build prompts, retrieve install steps, and fetch design tokens for aesthetic keywords. Runs entirely offline over stdio with no API keys, paywalls, or rate limits.Apache 2.0
- FlicenseAqualityDmaintenanceProvides AI assistants with direct access to shadcn/ui components and blocks, enabling real-time fetching of component source code, documentation, and implementation examples.415 npm4-
- AlicenseAqualityBmaintenanceSearch, inspect and install Ballmac UI React + Tailwind components, blocks and templates, with props, keyboard notes and the exact shadcn install command, and plan whole pages from blocks.811MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to discover, install, and generate code examples for shadcn/ui components, providing installation commands and usage examples for 37+ React UI components.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.