A TypeScript implementation of a Model Context Protocol (MCP) server designed to help AI assistants interact with shadcn/ui components. It allows AI models to fetch component source code, demos, and installation guides.
The recommended way to run this server is using Docker containers, managed with Docker Compose (or podman-compose).
Server Modes:
- STDIO Server: Communicates via standard input/output.
- HTTP/SSE Server: Communicates via HTTP and Server-Sent Events (ideal for web clients).
- Docker: Install Docker
- (Optional) Podman: Install Podman (with
podman-compose)
Configure the server using a .env file (copy from .env.example):
cp .env.example .envModify .env as needed (e.g., PORT for the HTTP server, GITHUB_PERSONAL_ACCESS_TOKEN). Docker Compose automatically loads variables from this file.
The compose.yaml defines two services: mcp-server-stdio and mcp-server-http.
1. Build Images:
# Build all services
docker compose build
# Or a specific service (e.g., HTTP)
docker compose build mcp-server-http2. Run HTTP/SSE Server:
# Start in detached mode
docker compose up -d mcp-server-http- Access:
http://localhost:3000(SSE:/sse, Messages:/messages) - Port
3000(host) maps to3000(container).PORTis also set incompose.yaml.
3. Run STDIO Server:
# Start in foreground
docker compose up mcp-server-stdio4. View Logs:
docker compose logs -f mcp-server-http # Or mcp-server-stdio5. Stop Servers:
docker compose stop mcp-server-http # Or mcp-server-stdio
# Stop and remove all services
docker compose downThis MCP server provides the following capabilities:
-
get_component:- Retrieves the source code of a specified shadcn/ui component.
- Parameter:
componentName(string) - e.g., "button". - Returns: Component source code.
-
get_component_demo:- Fetches demo code for a shadcn/ui component.
- Parameter:
componentName(string). - Returns: Demo code.
resource:get_components:- Lists all available shadcn/ui components.
-
resource-template:get_install_script_for_component:- Generates installation script for a component.
- Parameters:
packageManager(string - npm, pnpm, yarn, bun),component(string).
-
resource-template:get_installation_guide:- Provides framework-specific installation guides for shadcn/ui.
- Parameters:
framework(string - next, vite, etc.),packageManager(string).