
Mcp Design System Extractor
io.github.freema由 GitHub 帳號 freema 發布v1.3.0更新於 Nov 7, 2026
MCP server for Storybook design systems — extract component HTML, styles and metadata.
概覽
本機 MCP 伺服器,讀取 Storybook 設計系統,讓助理列出、搜尋並擷取元件 HTML、樣式與主題權杖。
- 可以做什麼
- 依名稱、標題、分類或用途列出與搜尋元件,支援精簡輸出與分頁
- 擷取元件 story 的渲染 HTML,可選擇包含 CSS,或僅列出可用變體
- 分析某個元件內部使用了哪些其他元件
- 讀取主題資訊,例如顏色、間距、字體排版與 CSS 變數
- 抓取並歸類同一網域下外部 CSS 檔案中的設計權杖
- 檢視、輪詢與取消背景佇列中的長時間擷取工作
- 適用情境
- 當你以既有 Storybook 設計系統開發或遷移介面,希望助理找到合適的元件、複製其標記並對齊現有樣式與權杖時使用。適合以現有元件拼裝新頁面,或在其他框架中重建某個元件等前端工作。
- 執行需求
- 透過 npx 或全域 npm 安裝後在本機執行。需要 Node.js 22.12+ 以及供 Puppeteer 使用的 Chrome/Chromium。需要一個執行中的 Storybook 7-10 實例(開發伺服器或透過 HTTP 提供的靜態建置),位址由 STORYBOOK_URL 指定(預設
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Mcp Design System Extractor,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
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
來源:README.md,提交 e30ea7b
工具
0版本歷史
2- v1.3.0最新Nov 7, 2026
- v1.2.0Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分