MCP server that connects to any Storybook. Browse components, fetch docs and examples, search stories, and capture screenshots.
Storybook MCP has visible tool definitions with names and descriptions in index.js, but critical gaps undermine quality. All 6 tools have descriptions (10-20+ words, within acceptable range) and are verb-prefixed (connect, browse, get, search, capture, disconnect). However, input schemas are either missing entirely or incomplete. Tools 1, 2, 3, 4, 6 show partial schema visibility in the excerpt; tool 5 (capture_screenshot) has the most complete schema with typed parameters (string, integer). Parameter descriptions vary in quality: some are explicit ('The unique identifier of the story or component docs page'), others vague ('Optional filename'). Output schemas are entirely undocumented, the excerpt shows no return type specifications, forcing LLMs to guess result structures. Error handling is not visible in the code excerpt. The server lacks composition optimizations (no batch variants, single-request design). Naming follows verb_noun convention appropriately. Overall, this is a D-to-low-C tier server: basic structure present, but incomplete schemas, no output documentation, and missing error guidance.
Explore the component structure of the connected Storybook. Returns a hierarchical view of all available components, docs, and stories organized by category.
Capture a screenshot of a specific story or component from the connected Storybook. Returns the image as base64-encoded PNG or saves it to a file.
Connect to a Storybook instance at the given URL. The server will detect the Storybook version and prepare to browse components, fetch documentation, and capture screenshots.
Disconnect from the currently connected Storybook instance and release all resources (browser, context, pages).
Fetch the documentation and content for a specific component or story from the connected Storybook. Supports multiple output formats.
Search for stories and components in the connected Storybook by name, title, or content. Returns matching results with details.
Output schemas completely undocumented. No tool describes what fields it returns, forcing LLMs to guess result structures and inhibiting downstream tool composition.
browse_storybook and disconnect_storybook have empty input schemas ({}), which is valid but provides no guidance. No description of what structure they return.
Parameter descriptions lack constraints. E.g., 'storybook_url' does not specify URL format validation, 'width' and 'height' in capture_screenshot have no min/max bounds, 'format' in get_component_docs lacks guidance on which format suits which use case.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No visible error handling or recovery guidance in code. Tools like connect_storybook (which may fail to reach invalid URLs) and capture_screenshot (which may timeout) have no documented error paths or retry strategies.
No pagination support visible. browse_storybook returns a 'hierarchical view of all available components', with no limit parameter or cursor, large Storybooks will return unbounded results, exhausting context windows.
Tool composition chain incomplete. browse_storybook returns 'hierarchical view' but does not explicitly document whether it returns 'story_id' values usable by get_component_docs and capture_screenshot, risking broken tool chains.