loading…
Search for a command to run...
loading…
A Model Context Protocol (MCP) server for Storybook.
A Model Context Protocol (MCP) server that provides tools to interact with Storybook documentation and component information.
Add the following configuration to MCP settings:
{
"mcpServers": {
"storybook": {
"command": "npx",
"args": ["-y", "storybook-mcp@latest"],
"env": {
"STORYBOOK_URL": "<your_storybook_url>/index.json"
}
}
}
}
storybook-mcp starts immediately and installs Chromium in the background the first time it runs. If you want to preinstall the browser ahead of time, run npx -y storybook-mcp@latest install-browser. Until that download finishes, the first browser-backed tool call can take longer.
STORYBOOK_URL (required): The URL to your Storybook's index.json fileCUSTOM_TOOLS (optional): JSON array of custom tool definitions for extracting specific information from your StorybookThe server provides built-in tools and supports custom tools:
Retrieves a list of all available components from the configured Storybook.
Example:
Available components:
Accordion
Avatar
Badge
Button
...
Gets detailed props information for multiple components, including:
Parameters:
componentNames (array of strings): Array of component names to get props information forExample usage:
Tool: getComponentsProps
Parameters: { "componentNames": ["Button", "Input", "Avatar"] }
You can define custom tools to extract specific information from your Storybook pages. Each custom tool can:
Custom Tool Structure:
interface CustomTool {
name: string; // Unique tool name
description: string; // Tool description for the AI
parameters: object; // Input parameters schema (optional)
page: string; // URL to navigate to
handler: string; // JavaScript code to execute on the page
}
Example Custom Tools:
[
{
"name": "getIconList",
"description": "Get All Icons from the Icon page",
"parameters": {},
"page": "https://your-storybook.com/?path=/docs/icon--docs",
"handler": "Array.from(document.querySelectorAll('.icon-name')).map(i => i.textContent)"
},
{
"name": "getColorPalette",
"description": "Extract color palette from design tokens",
"parameters": {},
"page": "https://your-storybook.com/?path=/docs/design-tokens--colors",
"handler": "Array.from(document.querySelectorAll('.color-swatch')).map(el => ({ name: el.getAttribute('data-color-name'), value: el.style.backgroundColor }))"
}
]
For more examples and detailed documentation, see examples/custom-tools-example.md.
Set Spectrum storybook-mcp config with STORYBOOK_URL and CUSTOM_TOOLS environment variables.
{
"mcpServers": {
"storybook-mcp": {
"command": "npx",
"args": ["-y", "storybook-mcp@latest"],
"env": {
"STORYBOOK_URL": "https://opensource.adobe.com/spectrum-web-components/storybook/index.json",
"CUSTOM_TOOLS": "[{\"name\":\"getIconList\",\"description\":\"Get All Icons from the Icon page\",\"parameters\":{},\"page\":\"https://opensource.adobe.com/spectrum-web-components/storybook/iframe.html?viewMode=docs&id=icons--docs&globals=\",\"handler\":\"Array.from(document.querySelector('icons-demo').shadowRoot.querySelectorAll('.icon')).map(i => i.textContent)\"}]"
}
}
}
}
index.json file(v3 is stories.json) and extracts all components marked as "docs" typeThe server works with any Storybook that exposes an index.json file(v3 is stories.json). Common patterns:
https://your-storybook-domain.com/index.jsonhttps://your-storybook-domain.com/storybook/index.jsonyarn installyarn install:browserexport STORYBOOK_URL="your-storybook-url"yarn devNote: You can also use
npx @modelcontextprotocol/inspector tsx src/index.tsinstead ofyarn devif you prefer.
yarn build
yarn test
The server includes comprehensive error handling for:
Storybook MCP is MIT licensed.
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"storybook-mcp": {
"command": "npx",
"args": [
"-y",
"storybook-mcp"
]
}
}
}Just installed Storybook Mcp? Say to Claude: "remember why I installed Storybook Mcpand what I want to try" — it'll save into your Vault.