Skip to main content
Glama
EzequielPereirae

shadcn-ui-mcp-server

Shadcn UI v4 MCP Server

npm version License: MIT

Trust Score

πŸš€ The fastest way to integrate shadcn/ui components into your AI workflow

A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to shadcn/ui v4 components, blocks, demos, and metadata. Seamlessly retrieve React, Svelte, Vue, and React Native implementations for your AI-powered development workflow.

✨ Key Features

  • 🎯 Multi-Framework Support - React, Svelte, Vue, and React Native implementations

  • πŸ“¦ Component Source Code - Latest shadcn/ui v4 TypeScript source

  • 🎨 Component Demos - Example implementations and usage patterns

  • πŸ—οΈ Blocks Support - Complete block implementations (dashboards, calendars, forms)

  • πŸ“‹ Metadata Access - Dependencies, descriptions, and configuration details

  • πŸ” Directory Browsing - Explore repository structures

  • ⚑ Smart Caching - Efficient GitHub API integration with rate limit handling

  • 🌐 SSE Transport - Server-Sent Events support for multi-client deployments

  • 🐳 Docker Ready - Production-ready containerization with Docker Compose

Related MCP server: shadcn-ui MCP Server

πŸš€ Quick Start

# Basic usage (60 requests/hour)
npx @jpisnice/shadcn-ui-mcp-server

# With GitHub token (5000 requests/hour) - Recommended
npx @jpisnice/shadcn-ui-mcp-server --github-api-key ghp_your_token_here

# Switch frameworks
npx @jpisnice/shadcn-ui-mcp-server --framework svelte
npx @jpisnice/shadcn-ui-mcp-server --framework vue
npx @jpisnice/shadcn-ui-mcp-server --framework react-native

# Use Base UI instead of Radix (React only)
npx @jpisnice/shadcn-ui-mcp-server --ui-library base

🎯 Get your GitHub token in 2 minutes: docs/getting-started/github-token.md

πŸ“¦ One-Click Installation (Claude Desktop)

Download and double-click the .mcpb file for instant installation:

  1. Download shadcn-ui-mcp-server.mcpb from Releases

  2. Double-click the file - Claude Desktop opens automatically

  3. Enter your GitHub token (optional, for higher rate limits)

  4. Click Install - tools are available immediately

Manual install: Claude Desktop β†’ Settings β†’ MCP β†’ Add Server β†’ Browse β†’ Select .mcpb file

References: Anthropic Desktop Extensions | Building MCPB

🌐 SSE Transport & Docker Deployment

Run the server with Server-Sent Events (SSE) transport for multi-client support and production deployments:

Quick Start with SSE

# SSE mode (supports multiple concurrent connections)
node build/index.js --mode sse --port 7423

# Docker Compose (production ready)
docker-compose up -d

# Connect with Claude Code
claude mcp add --scope user --transport sse shadcn-mcp-server http://localhost:7423/sse

Transport Modes

  • stdio (default) - Standard input/output for CLI usage

  • sse - Server-Sent Events for HTTP-based connections

  • dual - Both stdio and SSE simultaneously

Docker Examples

# Basic container
docker run -p 7423:7423 shadcn-ui-mcp-server

# With GitHub API token
docker run -p 7423:7423 -e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token shadcn-ui-mcp-server

# Docker Compose (recommended)
docker-compose up -d
curl http://localhost:7423/health

Environment Variables

  • MCP_TRANSPORT_MODE - Transport mode (stdio|sse|dual)

  • MCP_PORT - SSE server port (default: 7423 - SHADCN on keypad!)

  • MCP_HOST - Host binding (default: 0.0.0.0)

  • MCP_CORS_ORIGINS - CORS origins (comma-separated)

  • GITHUB_PERSONAL_ACCESS_TOKEN - GitHub API token

  • UI_LIBRARY - UI primitive library: radix (default) or base (React only)

πŸ“š Documentation

Section

Description

πŸš€ Getting Started

Installation, setup, and first steps

βš™οΈ Configuration

Framework selection, tokens, and options

πŸ”Œ Integration

Editor and tool integrations

πŸ“– Usage

Examples, tutorials, and use cases

🎨 Frameworks

Framework-specific documentation

πŸ› Troubleshooting

Common issues and solutions

πŸ”§ API Reference

Tool reference and technical details

🎨 Framework Support

This MCP server supports four popular shadcn implementations:

Framework

Repository

Maintainer

Description

React (default)

shadcn/ui

shadcn

React components from shadcn/ui v4

Svelte

shadcn-svelte

huntabyte

Svelte components from shadcn-svelte

Vue

shadcn-vue

unovue

Vue components from shadcn-vue

React Native

react-native-reusables

Founded Labs

React Native components from react-native-reusables

UI Library (React only)

shadcn/ui v4 supports two primitive libraries for React: Radix UI (default) and Base UI.

# Radix UI (default)
npx @jpisnice/shadcn-ui-mcp-server --framework react --ui-library radix

# Base UI
npx @jpisnice/shadcn-ui-mcp-server --framework react --ui-library base

# Or via environment variable
UI_LIBRARY=base npx @jpisnice/shadcn-ui-mcp-server

Claude Desktop config example:

{
  "args": ["--framework", "react", "--ui-library", "base"]
}

πŸ› οΈ Essential Setup

# Visit: https://github.com/settings/tokens
# Generate token with no scopes needed
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here

2. Run Server

# React (default)
npx @jpisnice/shadcn-ui-mcp-server

# Svelte
npx @jpisnice/shadcn-ui-mcp-server --framework svelte

# Vue  
npx @jpisnice/shadcn-ui-mcp-server --framework vue

# React Native
npx @jpisnice/shadcn-ui-mcp-server --framework react-native

3. Integrate with Your Editor

πŸ’» Claude Code Integration

Quick Add (CLI)

# Add the shadcn-ui MCP server
claude mcp add shadcn -- bunx -y @jpisnice/shadcn-ui-mcp-server --github-api-key YOUR_TOKEN

SSE Transport

For production deployments with SSE transport:

# Start server in SSE mode
node build/index.js --mode sse --port 7423

# Connect with Claude Code
claude mcp add --scope user --transport sse shadcn-mcp-server http://localhost:7423/sse

Framework-Specific Commands

See Claude Code Integration Guide for framework-specific commands (React, Svelte, Vue, React Native).

Reference: Claude Code MCP Documentation

🎯 Use Cases

  • AI-Powered Development - Let AI assistants build UIs with shadcn/ui

  • Multi-Client Deployments - SSE transport supports multiple concurrent connections

  • Production Environments - Docker Compose ready with health checks and monitoring

  • Component Discovery - Explore available components and their usage

  • Multi-Framework Learning - Compare React, Svelte, Vue, and React Native implementations

  • Rapid Prototyping - Get complete block implementations for dashboards, forms, etc.

  • Code Generation - Generate component code with proper dependencies

πŸ“¦ Installation

# Global installation (optional)
npm install -g @jpisnice/shadcn-ui-mcp-server

# Or use npx (recommended)
npx @jpisnice/shadcn-ui-mcp-server

πŸ”¨ Building from Source

Prerequisites

  • Node.js >= 18.0.0

  • npm or pnpm

Build Steps

# Clone the repository
git clone https://github.com/Jpisnice/shadcn-ui-mcp-server.git
cd shadcn-ui-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
node build/index.js --github-api-key YOUR_TOKEN

Run Locally

# After building, run with options
node build/index.js --github-api-key YOUR_TOKEN
node build/index.js --framework svelte

Building MCPB Package

The project includes a manifest.json following the MCPB specification. The .mcpb file is a ZIP archive containing the server, dependencies, and configuration.

See CONTRIBUTING.md for detailed packaging instructions.

Reference: Building Desktop Extensions with MCPB

πŸ“„ License

MIT License - see LICENSE for details.

πŸ™ Acknowledgments

  • shadcn - For the amazing React UI component library

  • huntabyte - For the excellent Svelte implementation

  • unovue - For the comprehensive Vue implementation

  • Founded Labs - For the React Native implementation

  • Anthropic - For the Model Context Protocol specification


Made with ❀️ by Janardhan Polle

Star ⭐ this repo if you find it helpful!

Available Tools

10 tools
apply_themeC
Destructive

Apply a TweakCN theme preset to the project

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query for theme (e.g., 'cyberpunk', 'modern')
dryRunNoIf true, returns preview instead of writing files
presetIdNoSpecific preset ID if known
tailwindVersionNoTailwind CSS version (default: '4')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as destructive, but the description adds no additional behavioral context. It doesn't indicate what files are modified, whether the operation is reversible, or what the impact of applying a theme is. Given the destructive hint, the description could have explained the scope of modifications but remains silent, leaving the agent under-informed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no fluff. It effectively communicates the core purpose without unnecessary words, making it easy to parse quickly. It earns its place by stating the action and target, though it is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive action with multiple optional parameters and no output schema, the description is underspecified. It fails to explain what 'apply' does to the project (e.g., which files change, whether dryRun prevents all changes), what the preview in dryRun looks like, or how presetId relates to query. The lack of detail makes it inadequate for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions in the schema. The tool description adds no extra parameter context. Since the schema fully documents parameters (query, dryRun, presetId, tailwindVersion), the baseline of 3 applies; the description does not hinder or enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Apply') and resource ('TweakCN theme preset') and specifies the target ('to the project'). It distinguishes from sibling tools like get_theme or list_themes, which are read-only, but does not detail what 'apply' entails. It avoids tautology and is clear but could be more specific about the nature of the application.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or side effects. It simply states the action without context. There's no mention of when to choose this over get_theme or list_themes, nor any caution about destructive consequences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blockA
Read-only

Get source code for a specific shadcn/ui v4 block (e.g., calendar-01, dashboard-01)

ParametersJSON Schema
NameRequiredDescriptionDefault
blockNameYesName of the block (e.g., "calendar-01", "dashboard-01", "login-02")
includeComponentsNoWhether to include component files for complex blocks (default: true)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true, and the description aligns with that. It adds useful context about the block being v4 and examples, but does not disclose what the returned source code looks like or any edge-case behavior. Since annotations cover the safety profile, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that provides key details and examples without waste. It is well-front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters and no output schema, the description covers the core purpose and usage. It could mention the return format or includeComponents behavior, but the schema already covers the parameter. Overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters well-described. The description adds example values for blockName but does not add meaning beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('source code for a specific shadcn/ui v4 block'), with clear example values. It distinguishes itself from sibling tools like list_blocks and get_component by focusing on fetching a single block's source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you need source code for a specific block) and provides examples. However, it does not explicitly name alternatives or state when not to use it, though the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_componentA
Read-only

Get the source code for a specific shadcn/ui v4 component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the shadcn/ui component (e.g., "accordion", "button")

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint: true, so the description doesn't need to cover safety. It adds the detail that it returns source code, which is consistent and slightly more specific than the tool name. No contradictions, though it could mention return format or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that is direct and free of redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with one parameter and no output schema, the description adequately conveys the tool's purpose. Sibling differentiation is implicit through 'source code', and the annotations cover safety. No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with a clear description and example for componentName. The description adds no extra parameter semantics, but the schema handles it well, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('source code for a specific shadcn/ui v4 component'), clearly distinguishing it from sibling tools like get_component_demo and get_component_metadata by emphasizing 'source code'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies usage via 'source code' but doesn't name siblings or provide exclusion criteria. Given the cluster of similar tools (demo, metadata), this is a missed opportunity to clarify when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_demoA
Read-only

Get demo code illustrating how a shadcn/ui v4 component should be used

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the shadcn/ui component (e.g., "accordion", "button")

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the readOnlyHint annotation and adds useful version/scope context ('shadcn/ui v4'). However, it does not disclose return format, output size, or behavior details beyond what the annotation already signals about safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the tool's exact purpose. Every word earns its place, with no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool without an output schema, the description plus annotation provides adequate context: what it returns (demo code), for what (shadcn/ui v4), and safety (readOnlyHint). It could briefly mention the demo format or relationship to get_component, but the low complexity makes the description mostly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single componentName parameter, so the schema already documents the expected input. The description adds no parameter-specific meaning beyond what the schema provides, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-object pair ('Get demo code') and names the target resource ('shadcn/ui v4 component'). It clearly separates this tool from siblings like get_component and get_component_metadata by emphasizing its purpose is showing usage examples rather than fetching the component itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied by 'demo code illustrating how a shadcn/ui v4 component should be used,' but no explicit guidance is given about when to choose this over get_component or get_component_metadata. Sibling tools exist, so some direct differentiation would strengthen this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_metadataA
Read-only

Get metadata for a specific shadcn/ui v4 component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the shadcn/ui component (e.g., "accordion", "button")

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already indicates a safe read operation, and the description does not contradict it. However, the description adds no additional behavioral context (e.g., no side effects, no data mutability), so it relies on the annotation. It is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It directly and efficiently conveys the tool's purpose, earning top marks for brevity and clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of sibling tools, the description is sufficient for basic understanding. However, it omits usage guidance and does not hint at what metadata contains, which could leave ambiguity in richer contexts. It is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a clear description of componentName with examples, fully covering the parameter semantics. The tool description adds no extra detail, so it neither improves nor degrades the parameter understanding. Thus, it meets the baseline for a schema-covered parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves metadata for a specific shadcn/ui v4 component, which is a specific action on a specific resource. It distinguishes from sibling tools like get_component (likely fetching the component code) and list_components (listing all), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not specify when to use this tool over alternatives. It merely states functionality without explaining scenarios (e.g., 'use this when you need only metadata, not the full component'), nor does it mention any exclusions among siblings. This lack of guidance leaves the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_directory_structureB
Read-only

Get the directory structure of the shadcn-ui v4 repository

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath within the repository (default: v4 registry)
repoNoRepository name (default: "ui")
ownerNoRepository owner (default: "shadcn-ui")
branchNoBranch name (default: "main")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, so the description does not need to repeat that. However, it adds no behavioral detail beyond a literal restatementβ€”there is no mention of the tree format, recursion behavior, or how the result is structured, leaving the agent to infer the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, succinct sentence conveys the core purpose with no filler or redundancy. It is optimally concise for a simple read-only tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too minimal for a tool with four optional parameters and no output schema. It fails to explain what a 'directory structure' entails (e.g., files, folders, nesting) or how the response is represented, leaving significant gaps in the agent's understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter has a clear description with defaults. The tool description adds nothing new about parameters, but since the schema already handles explanations, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a clear resource ('directory structure of the shadcn-ui v4 repository'), clearly distinguishing it from sibling tools that fetch components, blocks, or themes. It avoids tautology and precisely states the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_component or list_components. There is no mention of scenarios where examining repository structure is appropriate or when it should be avoided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_themeB
Read-only

Get details of a specific tweakcn theme

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNameYesName or ID of the theme to retrieve

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint: true, which already signals a safe read operation. The description adds no behavioral context beyond that, but doesn't contradict the annotation. It doesn't mention error handling, response format, or any special behavior, leaving the annotations to carry the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single lean sentence with no redundant words. It is appropriately sized for a simple getter tool and earns its place without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, readOnly annotation, no output schema), the description is minimally adequate. However, it doesn't specify what 'details' include or the return value structure, which would be helpful since no output schema exists. It's not incomplete enough to be confusing, but lacks rich context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes the single parameter themeName as 'Name or ID of the theme to retrieve' with 100% coverage, so the schema fully handles parameter semantics. The description itself adds no extra meaning beyond what the schema provides, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves details of a specific tweakcn theme, using a specific verb ('Get') and resource ('theme'). It distinguishes from list_themes by implying a single specific theme, but doesn't explicitly contrast with siblings like get_component or get_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. It does not mention that list_themes should be used to find themes first, or that apply_theme is for modifying, providing no context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_blocksB
Read-only

Get all available shadcn/ui v4 blocks with categorization

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category (calendar, dashboard, login, sidebar, products)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read. The description adds 'with categorization', hinting at output structure, but does not disclose response format, pagination, or other behavioral details. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that communicates the core purpose and scope without any filler. Every word contributes meaning, and the structure is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one optional parameter, no output schema, and clear annotations, the description is nearly sufficient. It could mention what the returned list looks like or that it returns categorized data, but overall it is adequate for the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for the category parameter, including valid values. The description adds no further meaning beyond the schema, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('all available shadcn/ui v4 blocks'), and adds the scope 'with categorization'. It distinguishes from sibling tools like get_block (singular) and list_components (different resource type), though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention when to prefer list_blocks over list_components or get_block, nor any exclusions. The only implied usage is that it lists blocks, which is already obvious from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_componentsB
Read-only

Get all available shadcn/ui v4 components

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint: true, so the description isn't required to restate that. It adds no additional context (e.g., return format, scope, rate limits), but it doesn't contradict the annotation. The description is adequate but adds no extra behavioral disclosure beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence: 'Get all available shadcn/ui v4 components.' It is front-loaded and contains no fluff, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and adequate for a simple listing tool, but since there is no output schema, it could benefit from specifying what information is returned (e.g., component names, IDs, or metadata) and how it relates to sibling tools like get_component. Without these details, an agent might not know what to expect from the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is trivially 100%. The baseline for zero-parameter tools is 4, and the description doesn't need to explain any parameters. This score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all available shadcn/ui v4 components. It uses a specific verb and resource, and the 'all available' phrasing implies a listing function, which distinguishes it from sibling tools like get_component that retrieve individual components. However, it doesn't explicitly contrast with siblings, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While 'all available' hints at an overview purpose, the description doesn't explicitly mention using it over get_component or other siblings, nor does it state when not to use it. This is a notable gap given the rich sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_themesA
Read-only

List available tweakcn themes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds no extra behavioral details (e.g., pagination, sorting, or response format), but for a simple parameterless list operation this does not create a significant gap. The description neither contradicts annotations nor enriches them beyond the basic read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, using exactly the words needed to convey the purpose. There is no fluff or repetition, making it optimally concise and well-structured for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, basic list operation), the description is complete enough for an agent to understand the function. It does not specify the return format, but the practical nature of a theme list makes this self-evident, so minimal detail is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and schema coverage is trivially 100%. Per rubric, a baseline of 4 applies when no parameters exist; the description correctly adds no parameter explanations since there are none to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and names the resource 'tweakcn themes', clearly indicating it enumerates available themes. It naturally distinguishes from sibling tools like get_theme, which retrieves a single theme, without needing explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_theme or list_components. The description only states what it does, with no context on typical use cases, prerequisites, or exclusions. It is not misleading but lacks any usage direction.

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.

  1. 10 tool updatesv2.0.0
    • First observedapply_theme
    • First observedget_block
    • First observedget_component
    • First observedget_component_demo
    • First observedget_component_metadata
    • First observedget_directory_structure
    • First observedget_theme
    • First observedlist_blocks
    • First observedlist_components
    • First observedlist_themes

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource (component, block, theme, directory) and action (list, get, apply). The three component-specific getters are clearly separated by what they return: source, demo, or metadata, so an agent is unlikely to confuse them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case: list_* for enumeration, get_* for retrieval, and apply_theme for the one mutation. Singular get_* versus plural list_* is a standard and predictable convention.

Tool Count5/5

Ten tools is well-scoped for the server's purpose. The three resource domains (components, blocks, themes) each have a small, focused set of tools, and no tool feels redundant or unnecessary.

Completeness4/5

The tool surface covers the core workflows: discovering components and blocks, retrieving their source/demo/metadata, and exploring/applying themes. Minor gaps exist (e.g., no search/filtering across components, no block demos or metadata), but an agent can accomplish most expected tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers