loading…
Search for a command to run...
loading…
Extracts component information from Storybook design systems. Provides HTML, styles, props, dependencies, theme tokens and component metadata for AI-powered des
Extracts component information from Storybook design systems. Provides HTML, styles, props, dependencies, theme tokens and component metadata for AI-powered design system analysis.
A Model Context Protocol (MCP) server that extracts component information from Storybook design systems. Connects to Storybook instances and extracts HTML, styles, and component metadata.

claude mcp add design-system npx mcp-design-system-extractor@latest \
--env STORYBOOK_URL=http://localhost:6006
With self-signed certificate:
claude mcp add design-system npx mcp-design-system-extractor@latest \
--env STORYBOOK_URL=https://my-storybook.example.com \
--env NODE_TLS_REJECT_UNAUTHORIZED=0
npm install -g mcp-design-system-extractor
Then configure in your MCP client (see Environment Variables).
git clone https://github.com/freema/mcp-design-system-extractor.git
cd mcp-design-system-extractor
npm install && npm run build
npm run setup # Interactive setup for Claude Desktop
| Variable | Description | Default |
|---|---|---|
STORYBOOK_URL |
URL of your Storybook instance | http://localhost:6006 |
NODE_TLS_REJECT_UNAUTHORIZED |
Set to 0 to skip SSL certificate verification (for self-signed certs) |
1 |
Example with self-signed certificate:
{
"mcpServers": {
"design-system": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"env": {
"STORYBOOK_URL": "https://my-storybook.example.com",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
See DEVELOPMENT.md for detailed setup instructions.
list_components
compact: true for minimal output (reduces response size)category parameterpage and pageSize (default: 20)get_component_html
job_id, use job_status to poll for resultsasync: false for synchronous mode (uses timeout parameter)variantsOnly: true to get list of available variants (sync, fast)includeStyles: true for CSS extraction (Storybook CSS filtered out)"component-name--story-name" or just "component-name" (auto-resolves to default variant)search_components
query: Search term (use "*" for all)purpose: Find by function ("form inputs", "navigation", "feedback", "buttons", etc.)searchIn: "name", "title", "category", or "all" (default)page and pageSize"component-name--story-name"get_theme_info
includeAll: true for all CSS variablesget_external_css
includeFullCSS: true only when you need full CSS contentjob_status
status, result (when completed), error (when failed)get_component_html in async modejob_cancel
job_list
status: "all" (default), "active" (queued/running), "completed"// List all components (compact mode recommended)
await list_components({ compact: true });
// Search for components
await search_components({ query: "button", searchIn: "name" });
// Find components by purpose
await search_components({ purpose: "form inputs" });
// Get variants for a component
await get_component_html({
componentId: "button",
variantsOnly: true
});
// Returns: { variants: ["primary", "secondary", "disabled"] }
// Get HTML (async mode - default)
await get_component_html({ componentId: "button--primary" });
// Returns: { job_id: "job_xxx", status: "queued" }
// Poll for result
await job_status({ job_id: "job_xxx" });
// Returns: { status: "completed", result: { html: "...", classes: [...] } }
// Get HTML (sync mode)
await get_component_html({
componentId: "button--primary",
async: false,
timeout: 30000
});
// Returns: { html: "...", classes: [...] }
// Get HTML with styles
await get_component_html({
componentId: "button--primary",
async: false,
includeStyles: true
});
// Check all running jobs
await job_list({ status: "active" });
// Extract theme info
await get_theme_info({ includeAll: false });
// Get design tokens from CSS
await get_external_css({
cssUrl: "https://my-storybook.com/assets/main.css"
});
list_components with compact: trueget_component_html with variantsOnly: truesearch_components with purpose parameterOnce connected, you can use natural language prompts with Claude:

Component Discovery:
Show me all available button components in the design system
Building New Features:
I need to create a user profile card. Find relevant components
from the design system and show me their HTML structure.
Design System Analysis:
Extract the color palette and typography tokens from the design system.
I want to ensure my new component matches the existing styles.
Component Migration:
Get the HTML and styles for the "alert" component. I need to
recreate it in a different framework while keeping the same look.
Multi-Tool Workflow:
First list all form-related components, then get the HTML for
the input and select components. I'm building a registration form.
Connects to Storybook via /index.json and /iframe.html endpoints. Uses Puppeteer with headless Chrome for dynamic JavaScript rendering. Long-running operations use an in-memory job queue with max 2 concurrent jobs and 1-hour TTL for completed jobs.
STORYBOOK_URL is correctlist_components first to see available componentsjob_status/index.json endpoint directly in browserNODE_TLS_REJECT_UNAUTHORIZED=0 for self-signed certificatesSee DEVELOPMENT.md for detailed development instructions.
Created by Tomáš Grasl
MIT
Run in your terminal:
claude mcp add freema-mcp-design-system-extractor -- npx Yes, freema/mcp-design-system-extractor MCP is free — one-click install via Unyly at no cost.
No, freema/mcp-design-system-extractor runs without API keys or environment variables.
Self-hosted: the server runs locally on your machine via the install command above.
Open freema/mcp-design-system-extractor on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Extract design specs and assets
by FigmaEnables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, a
by passerbyflutterSearch and retrieve company logos by brand or domain. Customize size, format, and theme to match your design needs. Accelerate design, prototyping, and content
by NOVA-3951Enables GUI automation for controlling PIX4Dmatic on Windows through MCP. Supports launching, focusing, capturing screenshots, sending hotkeys, clicking UI elem
by jangjo123Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All design MCPs