storybook-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STORYBOOK_URL | No | URL of the running Storybook instance (default: http://localhost:6006) | http://localhost:6006 |
| STORYBOOK_FRAMEWORK | No | Component framework used (e.g., react, vue) (default: react) | react |
| STORYBOOK_STYLE_TECH | No | Styling technology used (e.g., tailwind, css) (default: tailwind) | tailwind |
| STORYBOOK_TYPESCRIPT | No | Whether TypeScript is used (true/false) (default: true) | true |
| STORYBOOK_COMPONENTS_DIR | No | Path to the directory containing Storybook components (relative or absolute) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| storybook_list_componentsA | List all components registered in the running Storybook instance. Fetches the Storybook index and returns component titles grouped by hierarchy, with their story counts. Optionally filter by a substring. Args: params (ListComponentsInput): Validated input parameters containing: - search (Optional[str]): Case-insensitive filter substring - response_format (ResponseFormat): 'markdown' or 'json' Returns: str: Component listing in the requested format. |
| storybook_get_componentA | Get detailed information about a specific Storybook component. Returns every story registered under the given title, including story IDs, arg types, default args, and the direct Storybook URL for each. Args: params (GetComponentInput): Validated input containing: - component_title (str): Exact component title path, e.g. 'Components/Button' - response_format (ResponseFormat): 'markdown' or 'json' Returns: str: Detailed component information in the requested format. |
| storybook_create_componentA | Scaffold a new component with Storybook story from a natural-language description. Generates a component file and a corresponding .stories. file based on the configured framework (React/Vue/Svelte), language (TS/JS), and styling approach. Files are written into the configured STORYBOOK_COMPONENTS_DIR. Args: params (CreateComponentInput): Validated input containing: - name (str): PascalCase component name - description (str): Natural-language description of the component - category (Optional[str]): Storybook hierarchy category - props (Optional[List[PropDefinition]]): Explicit prop definitions Returns: str: Summary of the generated files with their full contents. |
| storybook_compose_viewA | Compose existing Storybook components into a higher-order page or view. Fetches the Storybook component catalog, resolves the requested (or auto-discovered) child components, then scaffolds a new page/view file that imports and wires them together with layout, props, local state, and event handlers. Optionally generates a Storybook story for the view. Use storybook_list_components first to see what's available, then storybook_get_component to inspect props/args before composing. Args: params (ComposeViewInput): Validated input containing: - name (str): PascalCase page/view name, e.g. 'DashboardPage' - description (str): Natural-language description of the page - components (Optional[List[ComponentPlacement]]): Explicit component list - layout (Optional[str]): Layout strategy hint - include_state (bool): Generate useState/handlers (default True) - include_story (bool): Generate a story file (default True) - category (Optional[str]): Storybook category (default 'Pages') Returns: str: Markdown summary with all generated file contents. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool has a distinct purpose: listing components, getting component details, creating components, and composing views from existing components. No overlap or ambiguity.
All tools follow a consistent 'storybook_verb_noun' pattern (list_components, get_component, create_component, compose_view). Convention is uniform and predictable.
With 4 tools, the server covers the essential operations for Storybook without being excessive. The count is well-scoped for its domain.
Core operations are covered: discovery, inspection, creation, and composition. Missing update/delete for components, but these are typically handled via filesystem, not Storybook API.