Skip to main content
Glama
README.md9.72 kB
# mcpsystem.design MCP Server A production-ready MCP (Model Context Protocol) server that exposes design system components and style guides for AI assistants. Deployed on Vercel with SSE transport for remote access. **Live Server:** https://www.mcpsystem.design/ ## Features - **Component Specifications**: Access detailed props, types, and descriptions for UI components - **Code Examples**: Get ready-to-use Tailwind CSS code snippets for each component - **Style Guide**: Retrieve colors, typography, spacing scales, and breakpoints - **Search**: Find components by name, description, or category - **SSE Transport**: Remote access via Server-Sent Events for web deployment - **Security Hardened**: Input validation, rate limiting, and structured logging ## Quick Start ### 1. Install Dependencies ```bash npm install ``` ### 2. Local Development Run the Next.js development server: ```bash npm run dev ``` The MCP SSE endpoint will be available at `http://localhost:3000/api/sse` ### 3. Deploy to Vercel ```bash # Install Vercel CLI if not already installed npm i -g vercel # Deploy vercel ``` ## Project Structure ``` ├── app/ # Next.js App Router │ ├── api/ │ │ └── sse/ │ │ └── route.ts # MCP SSE transport endpoint │ ├── patterns/ # Pattern documentation pages │ ├── docs/ # Documentation pages │ └── page.tsx # Landing page ├── lib/ │ ├── design-system/ # Design system data │ │ ├── index.ts # Main exports and helpers │ │ ├── components.ts # Component definitions │ │ ├── style-guide.ts # Colors, typography, spacing │ │ └── types.ts # TypeScript types │ ├── mcp/ # MCP protocol utilities │ │ ├── schemas.ts # Zod validation schemas │ │ ├── errors.ts # JSON-RPC error codes │ │ ├── logger.ts # Structured logging │ │ └── types.ts # TypeScript types │ └── security/ # Security utilities │ ├── host-validator.ts # Host header validation │ └── rate-limiter.ts # Rate limiting ├── components/ # React components for the website ├── packages/ # Publishable packages │ └── ui/ # @mcpsystem/ui Web Components ├── scripts/ # Build and validation scripts │ ├── validate-css-tokens.ts # CSS token validation │ └── validate-component-colors.ts # Component color validation ├── package.json ├── tsconfig.json ├── vercel.json └── README.md ``` ## API Endpoints | Endpoint | Method | Description | |----------|--------|-------------| | `/sse` or `/api/sse` | GET | Establish SSE connection | | `/sse` or `/api/sse` | POST | Send MCP JSON-RPC messages | | `/` | GET | Landing page | ## Available MCP Tools ### Pattern Tools (Tailwind CSS) Tailwind patterns are copy-paste HTML with class variations for variants, sizes, and states. | Tool | Description | |------|-------------| | `list_patterns` | List all Tailwind patterns with categories | | `get_pattern` | Get pattern with class variations | | `search_patterns` | Search patterns by name/description/category | | `get_pattern_examples` | Get code examples for a pattern | ### Style Guide Tools | Tool | Description | |------|-------------| | `get_style_guide` | Get entire style guide or specific section | | `get_colors` | Get color tokens (optionally by category) | | `get_typography` | Get typography styles | | `get_spacing` | Get spacing scale tokens | | `get_breakpoints` | Get responsive breakpoint definitions | | `get_design_system_info` | Get design system overview and stats | ### Component Tools (@mcpsystem/ui) @mcpsystem/ui components are Lit-based Web Components you import and use. | Tool | Description | |------|-------------| | `list_components` | List all @mcpsystem/ui components | | `get_component` | Get component docs with props, events, CSS parts | | `search_components` | Search components by name or description | ## Connecting to AI Assistants ### Cursor 1. Open Cursor Settings (`Cmd+,` on macOS or `Ctrl+,` on Windows/Linux) 2. Search for "MCP" or navigate to **Features → MCP Servers** 3. Click **"Add new MCP server"** 4. Configure with: - **Name:** `mcpdesignsystem` - **Type:** `sse` - **URL:** `https://www.mcpsystem.design/sse` Alternatively, add to your `.cursor/mcp.json` file: ```json { "mcpServers": { "mcpdesignsystem": { "url": "https://www.mcpsystem.design/sse" } } } ``` ### Claude Desktop Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS): ```json { "mcpServers": { "mcpdesignsystem": { "url": "https://www.mcpsystem.design/sse" } } } ``` ### Claude Code CLI Add to your `.claude/settings.json`: ```json { "mcpServers": { "mcpdesignsystem": { "url": "https://www.mcpsystem.design/sse" } } } ``` ## Customizing the Design System ### Modifying Components Edit `lib/design-system/components.ts` to add or modify components. Each component follows this structure: ```typescript { name: "ComponentName", slug: "component-name", description: "Component description", category: "Category", usageNote: "<!-- Tailwind CSS pattern - copy the HTML/classes below -->", tailwind: true, specs: { // Class variations - which Tailwind classes to swap variants: [ { name: "Primary", classes: "bg-primary text-primary-foreground" }, { name: "Secondary", classes: "bg-surface-hover text-default" } ], sizes: [ { name: "Small", classes: "h-8 px-3 text-xs" }, { name: "Medium", classes: "h-10 px-4 text-sm" } ], states: [ { name: "Disabled", classes: "opacity-70 cursor-not-allowed" } ] }, examples: [ { title: "Example Title", code: `<div className="...">Example</div>`, preview: "preview-id" } ], relatedComponents: ["OtherComponent"] } ``` ### Modifying Style Guide Update `lib/design-system/style-guide.ts`: - **Colors**: Organized by category (Semantic tokens, Gray Scale, Accent) - **Typography**: Font family, size, weight, line-height for each style - **Spacing**: Token name, CSS value, and pixel equivalent - **Breakpoints**: Responsive breakpoint values and descriptions ### Color Token Rules Component examples must use **semantic color tokens** instead of raw Tailwind colors: | Instead of | Use | |------------|-----| | `bg-gray-50`, `bg-gray-100` | `bg-surface`, `bg-surface-raised`, `bg-surface-sunken` | | `text-gray-600`, `text-gray-400` | `text-default`, `text-muted`, `text-subtle` | | `border-gray-200` | `border-default`, `border-muted`, `border-emphasis` | | `bg-red-500`, `text-red-600` | `bg-error-emphasis`, `text-error-foreground` | | `bg-green-500`, `text-emerald-600` | `bg-success-emphasis`, `text-success-foreground` | | `bg-amber-500` | `bg-warning-emphasis`, `text-warning-foreground` | | `bg-blue-500` | `bg-info-emphasis`, `text-info-foreground` | ## Validation The project includes two validation scripts that run automatically on build: ### CSS Token Validation Ensures CSS variables in `globals.css` match the design tokens in `style-guide.ts`: ```bash npm run validate:tokens ``` ### Component Color Validation Ensures component examples use semantic color tokens instead of raw Tailwind colors: ```bash npm run validate:component-colors ``` ### Run All Validations ```bash npm run validate ``` **Always run `npm run validate` before committing changes to ensure design system consistency.** ## Development ### Type Checking ```bash npm run typecheck ``` ### Validation ```bash npm run validate # Run all validations (recommended before commits) npm run validate:tokens # CSS token validation only npm run validate:component-colors # Component color validation only ``` ### Building ```bash npm run build # Runs validation + production build ``` ## Security The SSE endpoint includes several security hardening measures: ### Input Validation - All JSON-RPC requests are validated using Zod schemas - Tool arguments are type-checked before execution - Batch requests limited to 100 items maximum ### Rate Limiting - 100 requests per minute per IP address - Returns HTTP 429 with `Retry-After` header when exceeded - In-memory rate limiting (resets on cold starts) ### Host Header Validation - Whitelist-based validation prevents host header injection - Allowed hosts: `www.mcpsystem.design`, `mcpsystem.design`, `localhost` - Invalid hosts default to `www.mcpsystem.design` ### Structured Logging - All requests include unique request IDs (`X-Request-Id` header) - JSON-formatted logs for Vercel log aggregation - Request tracing for debugging and auditing ## Troubleshooting ### SSE Connection Issues - Ensure your client supports SSE transport for MCP - Check that CORS headers are properly configured for your client origin - Vercel has a 60-second timeout for serverless functions; long-running connections may be terminated ### Connection Drops The SSE endpoint sends periodic ping messages to keep the connection alive. If your client disconnects frequently, check your network configuration or proxy settings. ### Rate Limit Errors (HTTP 429) If you receive a 429 status code, you've exceeded the rate limit (100 requests/minute). Wait for the duration specified in the `Retry-After` header before retrying. ## License MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/heyadam/mcpsystemdesign'

If you have feedback or need assistance with the MCP directory API, please join our Discord server