
Mcp Design System Extractor
io.github.freemaPublished by GitHub account freemav1.3.0Updated Nov 7, 2026
MCP server for Storybook design systems — extract component HTML, styles and metadata.
Overview
Mcp Design System Extractor's local MCP server; no sign-in required; STDIO.
No AI overview yet: these facts come from the registry entry and the server itself.
Installation
In SourceWeft
- Open Mcp Design System Extractor in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
MCP Design System Extractor
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.
Installation
Using Claude CLI (Recommended)
With self-signed certificate:
Using npm
Then configure in your MCP client (see Environment Variables).
From Source
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
Features
- List Components: Get all available components from your Storybook with compact mode
- Extract HTML: Get the rendered HTML of any component (async or sync mode)
- Search Components: Find components by name, title, category, or purpose
- Component Dependencies: Analyze which components are used within other components
- Theme Information: Extract design system theme (colors, spacing, typography)
- External CSS Analysis: Fetch and analyze CSS files to extract design tokens
- Async Job Queue: Long-running operations run in background with job tracking
Environment Variables
Example with self-signed certificate:
Usage
See DEVELOPMENT.md for detailed setup instructions.
Available Tools (9 total)
Core Tools
-
list_components
- Lists all available components from the Storybook instance
- Use
compact: truefor minimal output (reduces response size) - Filter by
categoryparameter - Supports pagination with
pageandpageSize(default: 20)
-
get_component_html
- Extracts HTML from a specific component story
- Async by default: Returns
job_id, usejob_statusto poll for results - Set
async: falsefor synchronous mode (usestimeoutparameter) - Use
variantsOnly: trueto get list of available variants (sync, fast) - Optional
includeStyles: truefor CSS extraction (Storybook CSS filtered out) - Story ID format:
"component-name--story-name"or just"component-name"(auto-resolves to default variant)
-
search_components
- Search components by name, title, category, or purpose
query: Search term (use"*"for all)purpose: Find by function ("form inputs", "navigation", "feedback", "buttons", etc.)searchIn: "name", "title", "category", or "all" (default)- Supports pagination with
pageandpageSize
Component Analysis Tools
- get_component_dependencies
- Analyzes rendered HTML to find which other components are used internally
- Detects React components, web components, and CSS class patterns
- Requires story ID format:
"component-name--story-name"
Design System Tools
-
get_theme_info
- Extracts design system theme (colors, spacing, typography, breakpoints)
- Gets CSS custom properties/variables
- Use
includeAll: truefor all CSS variables
-
get_external_css
- DEFAULT: Returns only design tokens + file stats (avoids token limits)
- Extracts & categorizes tokens: colors, spacing, typography, shadows
- Use
includeFullCSS: trueonly when you need full CSS content - Security-protected: only accepts URLs from same domain as Storybook
Job Management Tools
-
job_status
- Check status of an async job
- Returns:
status,result(when completed),error(when failed) - Poll this after calling
get_component_htmlin async mode
-
job_cancel
- Cancel a queued or running job
- Returns whether cancellation was successful
-
job_list
- List all jobs with their status
- Filter by
status: "all" (default), "active" (queued/running), "completed" - Returns job list + queue statistics
Example Usage
AI Assistant Usage Tips
- Start with discovery: Use
list_componentswithcompact: true - Get variants first: Use
get_component_htmlwithvariantsOnly: true - Use async for HTML: Default async mode prevents timeouts on large components
- Poll job_status: Check job completion before reading results
- Search by purpose: Use
search_componentswithpurposeparameter
Example Prompts
Once connected, you can use natural language prompts with Claude:
Component Discovery:
Building New Features:
Design System Analysis:
Component Migration:
Multi-Tool Workflow:
How It Works
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.
Troubleshooting
- Ensure Storybook is running and
STORYBOOK_URLis correct - Use
list_componentsfirst to see available components - For large components, use async mode (default) and poll
job_status - Check
/index.jsonendpoint directly in browser - SSL certificate errors: Set
NODE_TLS_REJECT_UNAUTHORIZED=0for self-signed certificates - See DEVELOPMENT.md for detailed troubleshooting
Requirements
- Node.js 22.12+
- Chrome/Chromium (for Puppeteer)
- Running Storybook instance (see below for supported versions)
Supported Storybook versions
Storybook 7, 8, 9 and 10. The server reads the story index from
/index.json, falling back to /stories.json, and renders stories through
/iframe.html?id=<storyId> — endpoints that have been stable across all four
major versions.
Storybook 6 and earlier are not supported: they predate /index.json and use
a different story-id scheme.
Both a dev server (npm run storybook) and a built static Storybook served
over HTTP will work.
Development
See DEVELOPMENT.md for detailed development instructions.
Author
Created by Tomáš Grasl
License
MIT
Source: README.md at commit e30ea7b
Tools
0Version history
2- v1.3.0LatestNov 7, 2026
- v1.2.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts