storybook-mcp

storybook-mcp

A Model Context Protocol (MCP) server for Storybook.

Category
Visit Server

README

Storybook MCP Server

Node CI npm license

A Model Context Protocol (MCP) server that provides tools to interact with Storybook documentation and component information.

Features

  • getComponentList: Get a list of all components from a configured Storybook
  • getComponentsProps: Get detailed props information for multiple components using headless browser automation
  • Custom Tools: Create custom tools that can extract any information from your Storybook pages using JavaScript

Installation and Configuration

MCP Settings

Add the following configuration to MCP settings:

{
  "mcpServers": {
    "storybook": {
      "command": "npx",
      "args": ["-y", "storybook-mcp"],
      "env": {
        "STORYBOOK_URL": "<your_storybook_url>/index.json"
      }
    }
  }
}

Environment Variables

  • STORYBOOK_URL (required): The URL to your Storybook's index.json file
  • CUSTOM_TOOLS (optional): JSON array of custom tool definitions for extracting specific information from your Storybook

Usage

The server provides built-in tools and supports custom tools:

Built-in Tools

1. getComponentList

Retrieves a list of all available components from the configured Storybook.

Example:

Available components:
Accordion
Avatar
Badge
Button
...

2. getComponentsProps

Gets detailed props information for multiple components, including:

  • Property names
  • Types
  • Default values
  • Descriptions
  • Required/optional status

Parameters:

  • componentNames (array of strings): Array of component names to get props information for

Example usage:

Tool: getComponentsProps
Parameters: { "componentNames": ["Button", "Input", "Avatar"] }

Custom Tools

You can define custom tools to extract specific information from your Storybook pages. Each custom tool can:

  • Navigate to any page in your Storybook
  • Execute custom JavaScript to extract data
  • Return structured data to the AI assistant

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.

Example

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)\"}]"
      }
    }
  }
}

How it works

  1. Component List: The server fetches the Storybook's index.json file(v3 is stories.json) and extracts all components marked as "docs" type
  2. Props Information: For component props, the server:
    • Finds the component's documentation ID from the index.json
    • Constructs the iframe URL for the component's docs page
    • Uses Playwright to load the page in a headless browser
    • Extracts the props table HTML from the documentation

Supported Storybook URLs

The server works with any Storybook that exposes an index.json file(v3 is stories.json). Common patterns:

  • https://your-storybook-domain.com/index.json
  • https://your-storybook-domain.com/storybook/index.json

Development

Local Development

  1. Clone the repository
  2. Install dependencies: yarn install
  3. Install Playwright browsers: npx playwright install chromium
  4. Set the environment variable: export STORYBOOK_URL="your-storybook-url"
  5. Run in development mode: yarn dev

Note: You can also use npx @modelcontextprotocol/inspector tsx src/index.ts instead of yarn dev if you prefer.

Building

yarn build

Testing

yarn test

Requirements

  • Node.js 18.0.0 or higher
  • Chromium browser (automatically installed with Playwright)

Error Handling

The server includes comprehensive error handling for:

  • Missing or invalid Storybook URLs
  • Network connectivity issues
  • Component not found scenarios
  • Playwright browser automation failures

License

Storybook MCP is MIT licensed.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured