The MCP Design System Extractor server connects to a Storybook instance to extract and analyze design system components and metadata. You can:
List Components: Browse all UI components with categories, names, and stories, with pagination support
Extract HTML: Retrieve rendered HTML of specific component variants, with optional CSS styles
Search Components: Find components by name, title, or category with flexible queries
Analyze Variants: Get all variants/states of a specific component with their IDs and parameters
Extract Props: Fetch component props/API documentation including types and defaults
Detect Dependencies: Analyze which other components a given component internally uses
Access Theme Information: Extract design system theme details (colors, spacing, typography, breakpoints)
Search by Purpose: Find components by their functional use case (forms, navigation, feedback, etc.)
Analyze CSS: Extract design tokens from CSS files without returning full content by default
Get Composition Examples: Retrieve examples of how components are combined in real-world UI patterns
Analyzes external CSS files to extract design tokens, variables, and style information from Storybook assets.
Detects React components when analyzing component dependencies and relationships within Storybook components.
Extracts component information from Storybook design systems, including HTML, styles, component metadata, props documentation, theme information, and relationships between components.
MCP Design System Extractor
A Model Context Protocol (MCP) server that extracts component information from Storybook design systems. Connects to Storybook instances (including https://storybook.js.org distributions) and extracts HTML, styles, and component metadata.
Key Dependencies
Puppeteer: Uses headless Chrome for dynamic JavaScript component rendering
Chrome/Chromium: Required for Puppeteer (automatically handled in Docker)
Works with built Storybook distributions from https://storybook.js.org
Features
🔍 List Components: Get all available components from your Storybook
📄 Extract HTML: Get the rendered HTML of any component variant with dynamic JavaScript support
🔎 Search Components: Find components by name, title, or category
🎛️ Component Props: Get component props/API documentation including types and defaults
🔗 Component Dependencies: Analyze which components are used within other components
📐 Layout Components: Get all layout components (Grid, Container, Stack, etc.) with examples
🎨 Theme Information: Extract design system theme (colors, spacing, typography, breakpoints)
🎯 Search by Purpose: Find components by their purpose (form inputs, navigation, feedback)
🧩 Composition Examples: Get examples of how components are combined together
📝 External CSS Analysis: Fetch and analyze CSS files to extract design tokens and variables
Quick Start
Or set manually:
Usage
See DEVELOPMENT.md for detailed setup instructions.
Available Tools
Core Tools
list_components
Lists all available components from the Storybook instance
Returns components with their names, categories, and associated stories
Use
category: "all"
or omit category parameter to list all componentsFilter by specific category path (e.g., "Components/Buttons", "Layout")
Supports pagination with
page
andpageSize
parameters (default: 50 per page)
get_component_html
Extracts HTML from a specific component story in Storybook
Requires story ID format: "component-name--story-name" (e.g., "button--primary")
Use list_components or get_component_variants first to find valid story IDs
Optional CSS style extraction for understanding component styling
Supports dynamic JavaScript-rendered content
get_component_variants
Gets all story variants/states for a specific component
Returns all stories (variants) for a component with their IDs, names, and parameters
Component name must match exactly as shown in list_components (case-sensitive)
search_components
Search components by name, title, or category using case-insensitive partial matching
Name is component name only (e.g., "Button")
Title is full story path (e.g., "Components/Forms/Button")
Category is the grouping (e.g., "Components/Forms")
Use
query: "*"
to list all componentsSearch in specific fields: "name", "title", "category", or "all" (default)
Supports pagination with
page
andpageSize
parameters (default: 50 per page)
Component Analysis Tools
get_component_props
Extracts component props/API documentation from Storybook's argTypes configuration
Includes prop names, types, default values, required status, and control options
Requires story ID format: "component-name--story-name"
get_component_dependencies
Analyzes rendered HTML to find which other components a given component internally uses
Detects React components, web components, and CSS class patterns
Helps understand component relationships and composition
Requires story ID format: "component-name--story-name"
Design System Tools
get_layout_components
Gets all layout components (Grid, Container, Stack, Box) with usage examples
Optional HTML examples for each layout component
Useful for understanding page structure and composition patterns
get_theme_info
Gets design system theme information (colors, spacing, typography, breakpoints)
Extracts CSS custom properties/variables from the design system
Categorizes tokens by type for better organization
Optional parameter to include all CSS custom properties found
Discovery Tools
get_component_by_purpose
Search for components by their purpose or function
Available purposes: "form inputs" (input fields, selects, checkboxes), "navigation" (menus, breadcrumbs, tabs), "feedback" (alerts, toasts, modals), "data display" (tables, cards, lists), "layout" (grids, containers, dividers), "buttons" (all button types), "progress" (loaders, spinners), "media" (images, videos, carousels)
Flexible pattern matching for finding components by use case
Supports pagination with
page
andpageSize
parameters (default: 50 per page)
get_component_composition_examples
Gets examples of how components are combined together in real-world patterns and layouts
Returns HTML examples showing the component used with other components in forms, cards, layouts, or complex UI patterns
Helps understand how components work together in practice
Optional limit parameter to control number of examples returned
get_external_css ⚠️ TOKEN-OPTIMIZED
DEFAULT: Returns ONLY design tokens + file stats (avoids token limits)
Does NOT return CSS content by default (prevents 25K token limit errors)
Extracts & categorizes tokens: colors, spacing, typography, shadows, breakpoints
Use
includeFullCSS: true
only when you specifically need CSS contentSecurity-protected: only accepts URLs from the same domain as your Storybook
Perfect for design token extraction without hitting response size limits
Example Usage
AI Assistant Usage Tips
When using with Claude or other AI assistants:
Start with discovery: Use
list_components
withcategory: "all"
orsearch_components
withquery: "*"
to see all available componentsGet story IDs: Use
get_component_variants
to find exact story IDs needed for other toolsUse exact IDs: Story IDs must be in format "component-name--story-name" (e.g., "button--primary")
Explore by purpose: Use
get_component_by_purpose
to find components by their functionDebug issues: Tools now include debug information when no results are found
How It Works
Connects to Storybook via /index.json
and /iframe.html
endpoints. Uses Puppeteer with headless Chrome for dynamic JavaScript rendering. Extracts component HTML, styles, props, dependencies, and design tokens with smart caching and timeout protection.
Troubleshooting
Ensure Storybook is running and
STORYBOOK_URL
is correctUse exact story ID format: "component-name--story-name"
Try
list_components
first to see available componentsCheck
/index.json
endpoint directly in browserSee DEVELOPMENT.md for detailed troubleshooting
Requirements
Node.js 18+
Chrome/Chromium (for Puppeteer)
Running Storybook instance
Development
See DEVELOPMENT.md for detailed development instructions.
License
MIT
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
Server that enables AI assistants to interact with Storybook design systems. Extract component HTML, analyze styles, and help with design system adoption and refactoring.
- Key Dependencies
- Features
- Quick Start
- Usage
- Available Tools
- Example Usage
- How It Works
- Troubleshooting
- Requirements
- Development
- License
Related Resources
Related MCP Servers
- -securityAlicense-qualityA server that allows AI assistants to access, view, run, and manage Hex projects through a standardized interface.Last updated -73AGPL 3.0
- -securityAlicense-qualityA server that enables AI assistants to understand and interact with Unity projects in real-time, providing access to scene hierarchy, project settings, and the ability to execute code directly in the Unity Editor.Last updated -93MIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that integrates with Storybook to help AI tools query UI components and retrieve usage examples from static Storybook files.Last updated -211821MIT License
- AsecurityAlicenseAqualityConnects AI tools to Storyblok CMS, allowing users to manage content through natural language commands for tasks like story management, asset handling, and AI-powered content operations.Last updated -06MIT License