# MCPEngine Studio — UX/UI Design Specification

**Version:** 1.0 | **Date:** February 2026 | **Status:** Design-Ready

---

## 1. Design System Foundations

### 1.1 Color System

**Primary Palette (Dark Mode Default)**
```
--surface-0:     #0A0F1E    // App background (deepest)
--surface-1:     #111827    // Card/panel background (gray-900)
--surface-2:     #1F2937    // Elevated surface (gray-800)
--surface-3:     #374151    // Hover/active states (gray-700)
--border:        #374151    // Default border (gray-700)
--border-subtle: #1F2937    // Subtle dividers (gray-800)
```

**Brand Colors**
```
--brand-primary:     #6366F1    // Indigo-500 — primary actions
--brand-primary-hover: #818CF8  // Indigo-400
--brand-accent:      #10B981    // Emerald-500 — success/deploy
--brand-accent-hover: #34D399   // Emerald-400
--brand-glow:        #6366F1/20 // Indigo glow for focus rings
```

**Text Colors**
```
--text-primary:   #F9FAFB    // gray-50 — headings, primary content
--text-secondary: #9CA3AF    // gray-400 — descriptions, labels
--text-tertiary:  #6B7280    // gray-500 — placeholders, disabled
--text-inverse:   #111827    // gray-900 — on light backgrounds
```

**Semantic Colors**
```
--success:   #10B981    // Emerald-500
--warning:   #F59E0B    // Amber-500
--error:     #EF4444    // Red-500
--info:      #3B82F6    // Blue-500
```

**Light Mode Overrides**
```
--surface-0:     #FFFFFF
--surface-1:     #F9FAFB    // gray-50
--surface-2:     #F3F4F6    // gray-100
--surface-3:     #E5E7EB    // gray-200
--border:        #D1D5DB    // gray-300
--text-primary:  #111827    // gray-900
--text-secondary: #6B7280   // gray-500
```

### 1.2 Typography

**Font Stack**
- **UI:** Inter (Variable) — `font-family: 'Inter Variable', system-ui, sans-serif`
- **Code:** JetBrains Mono — `font-family: 'JetBrains Mono', monospace`
- **Marketing/Headlines:** Inter with `font-feature-settings: 'ss01', 'ss02'`

**Scale**
| Token | Size | Line Height | Weight | Usage |
|-------|------|------------|--------|-------|
| `text-xs` | 12px | 16px | 400 | Badges, captions |
| `text-sm` | 14px | 20px | 400 | Labels, secondary text |
| `text-base` | 16px | 24px | 400 | Body text, inputs |
| `text-lg` | 18px | 28px | 500 | Section titles |
| `text-xl` | 20px | 28px | 600 | Page subtitles |
| `text-2xl` | 24px | 32px | 700 | Page titles |
| `text-3xl` | 30px | 36px | 700 | Hero headlines |
| `text-4xl` | 36px | 40px | 800 | Landing hero |
| `text-5xl` | 48px | 48px | 800 | Marketing hero |

### 1.3 Spacing

4px base grid. Tailwind spacing scale:
```
space-0.5:  2px     space-6:  24px    space-16: 64px
space-1:    4px     space-8:  32px    space-20: 80px
space-2:    8px     space-10: 40px    space-24: 96px
space-3:    12px    space-12: 48px    space-32: 128px
space-4:    16px    space-14: 56px
```

**Component Spacing Rules:**
- Card padding: `p-6` (24px)
- Section gaps: `gap-8` (32px)
- Inline element gaps: `gap-2` (8px) or `gap-3` (12px)
- Page margins: `px-6` on desktop, `px-4` on mobile

### 1.4 Elevation / Shadows

```css
--shadow-sm:   0 1px 2px rgba(0,0,0,0.3);
--shadow-md:   0 4px 6px -1px rgba(0,0,0,0.4);
--shadow-lg:   0 10px 15px -3px rgba(0,0,0,0.5);
--shadow-xl:   0 20px 25px -5px rgba(0,0,0,0.5);
--shadow-glow: 0 0 20px rgba(99,102,241,0.15);   /* brand glow */
--shadow-success-glow: 0 0 20px rgba(16,185,129,0.15);
```

### 1.5 Border Radius
```
--radius-sm:   6px     (rounded-md)
--radius-md:   8px     (rounded-lg)
--radius-lg:   12px    (rounded-xl)
--radius-xl:   16px    (rounded-2xl)
--radius-full: 9999px  (rounded-full) — pills, avatars
```

---

## 2. Component Library

### 2.1 Button

```
┌─ Primary ────────────────────────────────────┐
│ bg-indigo-500 hover:bg-indigo-400            │
│ text-white font-semibold                     │
│ Sizes: sm(h-8 px-3 text-sm)                 │
│        md(h-10 px-4 text-sm)                 │
│        lg(h-12 px-6 text-base)               │
│ Rounded: rounded-lg                          │
│ Focus: ring-2 ring-indigo-500/50 ring-offset-2 ring-offset-gray-900 │
└──────────────────────────────────────────────┘

Variants:
- Primary:   bg-indigo-500 text-white
- Secondary: bg-gray-700 text-gray-200 border border-gray-600
- Ghost:     bg-transparent text-gray-400 hover:bg-gray-800
- Danger:    bg-red-500/10 text-red-400 hover:bg-red-500/20
- Success:   bg-emerald-500 text-white (deploy button)
```

### 2.2 Card

```
bg-gray-900 border border-gray-700 rounded-xl p-6
hover: border-gray-600 shadow-md transition-all duration-150

Variants:
- Default: as above
- Interactive: + hover:scale-[1.02] cursor-pointer
- Elevated: + shadow-lg bg-gray-800
- Glowing: + shadow-glow border-indigo-500/30 (featured/active)
```

### 2.3 Input

```
bg-gray-800 border border-gray-600 rounded-lg px-4 h-10
text-gray-100 placeholder:text-gray-500
focus: border-indigo-500 ring-2 ring-indigo-500/20
error: border-red-500 ring-2 ring-red-500/20

Variants:
- Text input (default)
- Textarea: h-auto min-h-[80px] py-3
- Select: + chevron icon right
- Search: + magnifying glass icon left, rounded-full
```

### 2.4 Canvas Node (React Flow Tool Block)

```
┌──────────────────────────────────┐
│ ○ GET  get_contacts              │  ← Handle (connection point)
│                                  │
│ Retrieve contacts from CRM       │  ← Description (text-sm text-gray-400)
│                                  │
│ ┌────────┐ ┌────────┐ ┌──────┐ │
│ │ 3 params│ │ Auth ✓ │ │ Live │ │  ← Badges
│ └────────┘ └────────┘ └──────┘ │
└──────────────────────────────────┘

Style: bg-gray-800 border border-gray-600 rounded-xl p-4 w-[280px]
Selected: border-indigo-500 shadow-glow
Disabled: opacity-50
Group header: bg-gray-700/50 text-xs uppercase text-gray-400 px-3 py-1
```

### 2.5 Toast

```
Position: bottom-right, stack up
Style: bg-gray-800 border border-gray-700 rounded-lg shadow-xl p-4
       max-w-sm flex items-start gap-3

Variants:
- Success: left border-l-4 border-l-emerald-500, emerald icon
- Error: left border-l-4 border-l-red-500, red icon
- Info: left border-l-4 border-l-blue-500, blue icon
- Loading: left border-l-4 border-l-indigo-500, spinner icon

Auto-dismiss: 5s (success/info), manual (error)
Animation: slide in from right (200ms ease-out), fade out
```

### 2.6 Modal

```
Backdrop: bg-black/60 backdrop-blur-sm
Container: bg-gray-900 border border-gray-700 rounded-2xl shadow-2xl
           max-w-lg w-full mx-4 p-6
Header: text-xl font-semibold + close button (top right)
Footer: flex justify-end gap-3 pt-4 border-t border-gray-800
Animation: backdrop fade-in 150ms, modal scale-in from 95% (200ms spring)
```

### 2.7 Nav Rail Item

```
Width: 64px total rail
Item: w-10 h-10 rounded-lg flex items-center justify-center
      text-gray-400 hover:text-gray-200 hover:bg-gray-800
Active: text-indigo-400 bg-indigo-500/10
Tooltip: right side, bg-gray-800 text-sm rounded-md px-2 py-1 (200ms delay)
```

---

## 3. Page Wireframes

### 3.1 Landing Page

```
┌─────────────────────────────────────────────────────────────┐
│  [Logo]  Features  Pricing  Docs  Templates    [Sign In] [CTA] │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│           Build MCP Servers Visually.                       │  ← text-5xl font-extrabold
│           Ship AI Apps Instantly.                           │     gradient text (indigo→emerald)
│                                                             │
│     37 templates. Drag-and-drop. Zero boilerplate.         │  ← text-xl text-gray-400
│     From idea to deployed server in 60 seconds.            │
│                                                             │
│     [Get Started Free]  [Watch Demo ▶]                     │  ← Primary + Ghost buttons
│                                                             │
│     ┌─────────────────────────────────────────┐            │
│     │        Live demo / product video         │            │  ← 16:9 rounded-2xl border
│     │        (auto-playing, muted)             │            │     shadow-2xl
│     └─────────────────────────────────────────┘            │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                 │
│  │ Upload   │  │ Customize│  │ Deploy   │                 │  ← 3 value prop cards
│  │ Any Spec │  │ Visually │  │ Anywhere │                 │     with icons + descriptions
│  └──────────┘  └──────────┘  └──────────┘                 │
├─────────────────────────────────────────────────────────────┤
│  "Trusted by" logos (if applicable) or                      │
│  "Built on" — Anthropic, Cloudflare, MCP Protocol           │
├─────────────────────────────────────────────────────────────┤
│  Template Showcase — grid of 6 featured servers             │
│  [Browse All 37 Templates →]                                │
├─────────────────────────────────────────────────────────────┤
│  Pricing Section (4 tier cards)                             │
├─────────────────────────────────────────────────────────────┤
│  Final CTA: "Ready to build?" + email capture               │
└─────────────────────────────────────────────────────────────┘
```

### 3.2 Dashboard

```
┌────┬──────────────────────────────────────────────────────┐
│    │  My Projects                          [+ New Project] │
│ N  │                                                       │
│ A  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ V  │  │ Trello   │ │ Zendesk  │ │ Custom   │ │  + New │ │
│    │  │ MCP      │ │ MCP      │ │ CRM MCP  │ │        │ │
│ R  │  │ ✅ Live  │ │ 🧪 Test │ │ 📝 Draft│ │        │ │
│ A  │  │ 12 tools │ │ 8 tools  │ │ 0 tools  │ │        │ │
│ I  │  └──────────┘ └──────────┘ └──────────┘ └────────┘ │
│ L  │                                                       │
│    │  Recent Activity                                      │
│    │  · Deployed trello-mcp v1.2         2 hours ago      │
│    │  · Tests passed for zendesk-mcp     5 hours ago      │
│    │  · Created custom-crm project       1 day ago        │
│    │                                                       │
│    │  Quick Actions                                        │
│    │  [Upload Spec]  [Browse Templates]  [View Docs]      │
└────┴──────────────────────────────────────────────────────┘
```

### 3.3 Tool Editor (Core Screen)

```
┌────┬──────────────────────────────────────┬──────────────┐
│    │  trello-mcp  [Analyze] [Test] [Deploy]│              │
│ N  ├──────────────────────────────────────┤  Inspector   │
│ A  │                                      │              │
│ V  │     ┌──────────┐   ┌──────────┐     │  Tool Config │
│    │     │get_boards│──▶│get_cards │     │  ──────────  │
│ R  │     └──────────┘   └──────────┘     │  Name:       │
│ A  │                                      │  [get_boards]│
│ I  │     ┌──────────┐   ┌──────────┐     │              │
│ L  │     │create_   │   │update_   │     │  Description:│
│    │     │card      │   │card      │     │  [Fetch all  │
│    │     └──────────┘   └──────────┘     │   boards...] │
│    │                                      │              │
│    │     ┌──────────┐                     │  Parameters: │
│    │     │delete_   │                     │  ┌─────────┐│
│    │     │card      │                     │  │board_id ││
│    │     └──────────┘                     │  │string   ││
│    │                                      │  │required ││
│    │  [+ Add Tool]  Zoom: [- 100% +]     │  └─────────┘│
│    │                                      │  [+ Add Param]│
└────┴──────────────────────────────────────┴──────────────┘
```

### 3.4 MCP App Designer

```
┌────┬────────────┬──────────────────────┬──────────────┐
│    │ Components │      Preview         │  Properties  │
│ N  │            │                      │              │
│ A  │ ┌────────┐ │  ┌────────────────┐  │  Widget:     │
│ V  │ │ Table  │ │  │  Contact Grid  │  │  Data Grid   │
│    │ ├────────┤ │  │  ┌──┬──┬──┬──┐ │  │              │
│ R  │ │ Chart  │ │  │  │Na│Em│Ph│St│ │  │  Data Source:│
│ A  │ ├────────┤ │  │  ├──┼──┼──┼──┤ │  │  [get_contac]│
│ I  │ │ Form   │ │  │  │  │  │  │  │ │  │              │
│ L  │ ├────────┤ │  │  ├──┼──┼──┼──┤ │  │  Columns:    │
│    │ │ Card   │ │  │  │  │  │  │  │ │  │  ☑ name     │
│    │ ├────────┤ │  │  └──┴──┴──┴──┘ │  │  ☑ email    │
│    │ │ Stats  │ │  │                  │  │  ☑ phone    │
│    │ ├────────┤ │  │  [Refresh Data]  │  │  ☐ address  │
│    │ │ Map    │ │  └────────────────┘  │              │
│    │ └────────┘ │                      │  Pagination:  │
│    │            │  Preview as:         │  [25] per page│
│    │            │  [Claude][ChatGPT]   │              │
└────┴────────────┴──────────────────────┴──────────────┘
```

### 3.5 Deploy Screen

```
┌────┬──────────────────────────────────────────────────────┐
│    │  Deploy trello-mcp                                    │
│ N  │                                                       │
│ A  │  Target: [MCPEngine ▾]  [npm]  [Docker]  [Download]  │
│ V  │                                                       │
│    │  ┌─────────────────────────────────────────────────┐ │
│ R  │  │  Step 1: Build          ████████████████ Done ✓ │ │
│ A  │  │  Step 2: Test           ████████████████ Done ✓ │ │
│ I  │  │  Step 3: Package        ████████░░░░░░░ 60%     │ │
│ L  │  │  Step 4: Deploy         ░░░░░░░░░░░░░░ Waiting  │ │
│    │  │  Step 5: Verify         ░░░░░░░░░░░░░░ Waiting  │ │
│    │  └─────────────────────────────────────────────────┘ │
│    │                                                       │
│    │  Live Logs:                                           │
│    │  ┌─────────────────────────────────────────────────┐ │
│    │  │ ▸ Compiling TypeScript...                       │ │
│    │  │ ▸ Bundling for Cloudflare Workers...            │ │
│    │  │ ▸ Uploading bundle (24KB)...                    │ │
│    │  └─────────────────────────────────────────────────┘ │
│    │                                                       │
│    │  Your server will be live at:                         │
│    │  https://trello.mcpengine.run                        │
└────┴──────────────────────────────────────────────────────┘
```

### 3.6 Marketplace

```
┌────┬──────────────────────────────────────────────────────┐
│    │  Templates                    [Search...        🔍]  │
│ N  │                                                       │
│ A  │  [All] [CRM] [eCommerce] [HR] [Marketing] [Support] │
│ V  │                                                       │
│    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│ R  │  │ ⭐       │ │          │ │          │            │
│ A  │  │ Trello   │ │ Zendesk  │ │ Mailchimp│            │
│ I  │  │ 12 tools │ │ 15 tools │ │ 8 tools  │            │
│ L  │  │ 3 apps   │ │ 4 apps   │ │ 2 apps   │            │
│    │  │ ★★★★★    │ │ ★★★★☆    │ │ ★★★★★    │            │
│    │  │ [Fork]   │ │ [Fork]   │ │ [Fork]   │            │
│    │  └──────────┘ └──────────┘ └──────────┘            │
│    │                                                       │
│    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│    │  │ Stripe   │ │ HubSpot  │ │ Shopify  │            │
│    │  │ ...      │ │ ...      │ │ ...      │            │
│    │  └──────────┘ └──────────┘ └──────────┘            │
└────┴──────────────────────────────────────────────────────┘
```

---

## 4. User Flow: 60-Second First Server

```
[Sign Up / Sign In]
        │
        ▼
┌─────────────────────────────┐
│  "Build your first server"  │  ← Full-screen welcome, no sidebar
│                             │
│  Paste an OpenAPI spec URL  │
│  ┌───────────────────────┐  │
│  │ https://api.trello... │  │  ← Auto-focused input
│  └───────────────────────┘  │
│                             │
│  Or: [Upload File] [Pick a Template] │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│  Analyzing...               │  ← Animated progress
│  ████████████░░░░ 75%       │     Each tool appears as a card
│                             │     as it's discovered
│  Found: get_boards ✓        │
│  Found: get_cards ✓         │
│  Found: create_card ✓       │
│  Finding more...            │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│  Found 12 tools!            │  ← Tool editor with tools pre-loaded
│  [Review & Customize]       │     User can toggle, rename, tweak
│  or [Deploy Now →]          │  ← Skip to deploy for speed
└──────────────┬──────────────┘
               │ (click Deploy Now)
               ▼
┌─────────────────────────────┐
│  Deploying to MCPEngine...  │  ← Progress stepper
│  ████████████████████ 100%  │
│                             │
│  🎉 Your server is LIVE!   │  ← CONFETTI BURST
│                             │     Screen shakes slightly
│  https://trello.mcpengine.run │   Glow animation on URL
│                             │
│  [Copy URL] [Open Dashboard]│
│  [Add to Claude Desktop]    │  ← Deep link / config snippet
└─────────────────────────────┘

Total time: ~60 seconds
```

---

## 5. Animation & Micro-Interaction Spec

| Element | Trigger | Animation | Duration | Easing |
|---------|---------|-----------|----------|--------|
| Page transition | Route change | Fade + slide up 8px | 150ms | ease-out |
| Modal open | Click | Backdrop fade + modal scale from 95% | 200ms | spring(1, 80, 10) |
| Modal close | Click/Esc | Reverse of open | 150ms | ease-in |
| Toast enter | Event | Slide in from right | 200ms | ease-out |
| Toast exit | Auto/click | Fade out + slide right | 150ms | ease-in |
| Canvas zoom | Scroll/pinch | Smooth interpolation | 200ms | ease-out |
| Tool node hover | Hover | Scale to 1.02, shadow-md | 150ms | ease-out |
| Tool node select | Click | Border glow (indigo), shadow-glow | 200ms | ease-out |
| Inspector open | Node select | Slide in from right | 200ms | ease-out |
| Inspector close | Deselect | Slide out right | 150ms | ease-in |
| Deploy confetti | Deploy success | Canvas confetti burst (200 particles) | 3s | physics-based |
| Deploy glow | Deploy success | URL pulsing glow | 2s loop | ease-in-out |
| Button press | Click | Scale to 0.97, then back | 100ms | ease-out |
| Input focus | Focus | Border color transition + ring expand | 150ms | ease-out |
| Loading spinner | Async op | Rotate 360° | 1s loop | linear |
| Skeleton pulse | Loading state | Opacity 0.5 → 1 → 0.5 | 1.5s loop | ease-in-out |
| Tool discovered | Analysis | Slide up + fade in from bottom | 300ms | spring |
| Progress bar | Generation | Width transition | 100ms | linear |

### Deploy Confetti Spec
```typescript
// Using canvas-confetti library
confetti({
  particleCount: 200,
  spread: 90,
  origin: { y: 0.6 },
  colors: ['#6366F1', '#10B981', '#F59E0B', '#EF4444', '#3B82F6'],
  gravity: 1.2,
  scalar: 1.1,
  ticks: 150,
});
```

---

## 6. States

### Empty States
| Screen | Illustration | Headline | CTA |
|--------|-------------|----------|-----|
| Dashboard (no projects) | Rocket illustration | "Launch your first MCP server" | [Create Project] or [Browse Templates] |
| Tool Editor (no tools) | Magnifying glass | "Upload a spec to discover tools" | [Upload Spec] |
| App Designer (no apps) | Paint palette | "Design your first app" | [Add Component] |
| Marketplace (no results) | Empty box | "No templates match your search" | [Clear Filters] |
| Test Dashboard (no tests) | Clipboard | "Run tests to see results" | [Run All Tests] |

### Loading States
- **Skeleton screens** for all list/grid views (pulsing gray-700/gray-800 blocks)
- **Inline spinners** for button actions (replace button text with spinner)
- **Progress bars** for multi-step operations (analysis, generation, deploy)
- **Streaming text** for AI generation (typewriter effect, 30ms per character)

### Error States
- **Inline errors:** Red border + error message below input
- **Toast errors:** For async failures (API errors, deploy failures)
- **Full-page errors:** 404, 500 with illustration + retry button
- **Recoverable:** Yellow warning banner with "Retry" action
- **Generation failures:** Show partial results + "Continue from here" option

---

## 7. Accessibility

### Requirements (WCAG 2.1 AA)
- **Color contrast:** 4.5:1 minimum for text, 3:1 for large text and UI components
- **Focus indicators:** 2px indigo ring with 2px offset on all interactive elements
- **Keyboard navigation:** Full tab order through all UI, Escape closes modals/inspectors
- **Screen readers:** All images have alt text, all interactive elements have aria-labels
- **Reduced motion:** `prefers-reduced-motion` disables confetti, reduces transitions to opacity-only
- **Canvas accessibility:** React Flow nodes are tabbable with arrow key navigation
- **Touch targets:** Minimum 44x44px for all interactive elements

### Focus Ring Spec
```css
.focus-visible {
  outline: 2px solid #6366F1;
  outline-offset: 2px;
}
/* On dark surfaces */
.dark .focus-visible {
  outline-color: #818CF8;
}
```

---

## 8. Responsive Strategy

**Desktop-first** (primary target: 1280px+)

| Breakpoint | Layout Change |
|-----------|---------------|
| `≥1280px` (xl) | Full layout: NavRail + Canvas + Inspector |
| `1024-1279px` (lg) | Inspector becomes overlay (toggle) |
| `768-1023px` (md) | NavRail collapses to icons, Inspector is modal |
| `<768px` (sm) | Mobile: bottom tab bar, full-screen views, no canvas editor |

**Mobile (sm):** Dashboard and Marketplace work. Editor and App Designer show "Open on desktop for the full experience" with limited read-only preview.

---

## 9. Icon System

- **Library:** Lucide Icons (consistent, MIT licensed, works with React)
- **Size:** 16px (inline), 20px (buttons/nav), 24px (feature icons), 32px (empty states)
- **Style:** Stroke weight 1.5px, consistent with Inter's visual weight
- **Custom icons:** MCP logo, MCPEngine logo, deploy/rocket, tool/wrench

### Nav Rail Icons
| Icon | Label | Lucide Icon |
|------|-------|-------------|
| Home | Dashboard | `LayoutDashboard` |
| Edit | Editor | `Workflow` |
| Palette | App Designer | `Palette` |
| Flask | Testing | `FlaskConical` |
| Rocket | Deploy | `Rocket` |
| Store | Marketplace | `Store` |
| Settings | Settings | `Settings` |

---

*Document Version: 1.0 | Last Updated: February 6, 2026*
