magnusrodseth/shadcn-mcp-server
If you are the rightful owner of shadcn-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Shadcn MCP Server is a tool that connects AI assistants with the shadcn/ui component library, providing real-time access to component source code, documentation, and examples.
shadcn/ui MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with direct access to shadcn/ui components and blocks. This server enables AI assistants like Claude (via Cursor) to fetch real-time component source code, documentation, and implementation examples.
โก Quick Install
Get started instantly without any setup:
# Run directly with npx (no installation required)
npx @magnusrodseth/shadcn-mcp-server
# Or install globally
npm install -g @magnusrodseth/shadcn-mcp-server
Then add to your Cursor configuration:
{
"mcpServers": {
"shadcn": {
"command": "npx",
"args": ["@magnusrodseth/shadcn-mcp-server"]
}
}
}
Next, restart the MCP tool and your Cursor settings should look something like this:
๐ฏ What is this?
The Shadcn MCP Server bridges the gap between AI assistants and the shadcn/ui component library. Instead of relying on potentially outdated training data, AI assistants can now fetch the latest component implementations directly from the shadcn/ui repository.
Key Benefits
- โ Always Up-to-Date: Fetches components directly from the official shadcn/ui repository
- โ Complete Implementation: Get full source code, dependencies, and usage examples
- โ AI-Powered Development: Let AI assistants help you implement components correctly
- โ Time-Saving: No more manual copying from docs or searching for examples
๐ How It Works
sequenceDiagram
participant User as ๐ค User
participant Cursor as ๐ฅ๏ธ Cursor/AI Assistant
participant MCP as ๐ง MCP Server
participant GitHub as ๐ฆ shadcn/ui Repository
User->>Cursor: "Show me button component"
Cursor->>MCP: JSON-RPC Request (get_component)
MCP->>GitHub: Fetch component data via API
GitHub-->>MCP: Component source code & metadata
MCP-->>Cursor: Structured component response
Cursor->>Cursor: AI processes & formats
Cursor-->>User: Formatted component with examples
Note over MCP: Available Tools:<br/>โข list_components<br/>โข get_component<br/>โข list_blocks<br/>โข get_block
๐ Getting Started with Developing
Prerequisites
- Node.js โฅ 22.0.0
- pnpm (recommended) or npm
- Cursor IDE (for AI integration)
- Recommended: GitHub Personal Access Token (for higher rate limits)
1. Installation
# Clone the repository
git clone https://github.com/yourusername/shadcn-mcp-server.git
cd shadcn-mcp-server
# Install dependencies
pnpm install
# Build the project
pnpm run build
2. Cursor Configuration
Option A: Automatic Setup (Recommended)
# Run the setup script
node scripts/test-cursor.js
This script will:
- Generate the correct Cursor configuration
- Create a wrapper script for your system
- Provide step-by-step instructions
Option B: Manual Configuration
-
Find your Cursor settings:
- macOS:
~/Library/Application Support/Cursor/User/globalStorage/cursor-settings.json
- Windows:
%APPDATA%\Cursor\User\globalStorage\cursor-settings.json
- Linux:
~/.config/Cursor/User/globalStorage/cursor-settings.json
- macOS:
-
Add the MCP server configuration:
{
"mcpServers": {
"shadcn": {
"command": "node",
"args": ["/absolute/path/to/shadcn-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
- Restart Cursor completely (quit and reopen)
3. Verify Installation
Open Cursor and try these commands with Claude:
"List all available shadcn components"
"Show me the button component source code"
"Get the dashboard-01 block implementation"
"What shadcn blocks are available?"
If configured correctly, Claude will fetch real-time data from the shadcn/ui repository!
๐งช Testing & Development
Local Testing
# Run unit tests
pnpm test
# Test MCP server integration
pnpm run test:mcp
# Manual testing (interactive)
pnpm run test:manual
Development Mode
# Development with hot reload
pnpm run dev
# Watch tests
pnpm run test:watch
# Clean build artifacts
pnpm run clean
๐ ๏ธ Available Tools
Tool | Description | Example Usage |
---|---|---|
list_components | List all available shadcn/ui components | "What shadcn components are available?" |
get_component | Get source code and metadata for a specific component | "Show me the button component" |
list_blocks | List all available shadcn/ui blocks | "What shadcn blocks can I use?" |
get_block | Get a complete shadcn/ui block implementation | "Get the dashboard-01 block" |
๐ก Usage Examples
Basic Component Usage
User: "Show me how to create a button with different variants"
Claude with MCP: Will fetch the latest button component and provide:
- Complete source code
- All available variants (default, destructive, outline, secondary, ghost, link)
- Size options (sm, default, lg, icon)
- Usage examples with proper imports
- Accessibility features
Advanced Block Implementation
User: "I need a complete dashboard layout"
Claude with MCP: Will fetch dashboard blocks and provide:
- Full implementation code
- Required dependencies
- Component breakdown
- Styling and layout structure
Real-time Component Discovery
User: "What new components were added to shadcn recently?"
Claude with MCP: Will fetch the current component list and highlight:
- All available components
- Brief descriptions
- Categorization
๐ง Configuration Options
Environment Variables
Create a .env
file in the project root:
# Optional: GitHub token for higher rate limits
GITHUB_TOKEN=ghp_your_token_here
# Optional: Enable debug logging
DEBUG=true
# Optional: Set environment
NODE_ENV=development
GitHub Token Setup (Optional but Recommended)
- Go to GitHub Settings > Developer settings > Personal access tokens
- Generate a new token (classic)
- No special permissions needed - public repository access is sufficient
- Add the token to your environment variables
Benefits of using a token:
- Higher rate limits (5,000 requests/hour vs 60/hour)
- More reliable for heavy usage
- Better performance
๐ฆ Deployment Options
Option 1: NPX (Recommended) ๐
No installation required - always uses the latest version:
# No setup needed, just add to Cursor config:
{
"mcpServers": {
"shadcn": {
"command": "npx",
"args": ["@magnusrodseth/shadcn-mcp-server"],
"env": {
"GITHUB_TOKEN": "your_token_here"
}
}
}
}
Benefits:
- โ Always up-to-date
- โ No global installation
- โ Works immediately
- โ No build step required
Option 2: Global npm Installation
# Install once, use everywhere
npm install -g @magnusrodseth/shadcn-mcp-server
# Use in Cursor config:
{
"mcpServers": {
"shadcn": {
"command": "@magnusrodseth/shadcn-mcp-server"
}
}
}
Option 3: Local Development
Perfect for contributing or customization:
git clone https://github.com/yourusername/shadcn-mcp-server.git
cd shadcn-mcp-server
pnpm install && pnpm run build
# Use absolute path in Cursor config:
"command": "node",
"args": ["/path/to/shadcn-mcp-server/dist/index.js"]
Option 4: Direct Git Installation
npm install -g git+https://github.com/yourusername/shadcn-mcp-server.git
๐ฏ Architecture Overview
shadcn-mcp-server/
โโโ index.ts # Main MCP server setup
โโโ services/
โ โโโ shadcn-service.ts # Core component fetching logic
โโโ types/
โ โโโ shadcn.ts # TypeScript definitions
โโโ utils/
โ โโโ logger.ts # Logging configuration
โโโ scripts/
โโโ test-cursor.js # Cursor setup automation
โโโ test-mcp.js # MCP protocol testing
Key Components
- MCP Server: Handles JSON-RPC communication with Cursor/Claude
- Shadcn Service: Fetches components and blocks from GitHub API
- Type Safety: Full TypeScript support for all operations
- Error Handling: Graceful degradation and informative error messages
- Caching: Smart caching to reduce API calls and improve performance
๐ Troubleshooting
Common Issues
"MCP server not found"
- Verify the absolute path in your Cursor configuration
- Ensure the project is built (
pnpm run build
) - Check that Node.js is in your system PATH
"Rate limit exceeded"
- Add a GitHub token to your environment variables
- The server will automatically use the token for authenticated requests
"Component not found"
- Check component name spelling (use
list_components
first) - Some components may have different names than expected
"Cursor not recognizing MCP server"
- Restart Cursor completely (quit and reopen)
- Verify JSON syntax in your Cursor configuration
- Check the MCP server logs for errors
Debug Mode
Enable detailed logging:
DEBUG=true node dist/index.js
Or set in your Cursor configuration:
{
"mcpServers": {
"shadcn": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"env": {
"DEBUG": "true"
}
}
}
}
๐ค Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests (
pnpm test
) - Run the full test suite (
pnpm run test:mcp
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Made with โค๏ธ for the shadcn/ui and AI development community
If this project helps you build better UIs faster, consider giving it a โญ!