Skip to main content
Glama

Storybook MCP Server

Node CI npm license

Сервер протокола контекста модели (MCP), предоставляющий инструменты для взаимодействия с документацией Storybook и информацией о компонентах.

Возможности

  • getComponentList: Получение списка всех компонентов из настроенного Storybook

  • getComponentsProps: Получение подробной информации о пропсах для нескольких компонентов с использованием автоматизации headless-браузера

  • Custom Tools: Создание пользовательских инструментов, которые могут извлекать любую информацию со страниц вашего Storybook с помощью JavaScript

Related MCP server: dbt-mcp

Установка и настройка

Настройки MCP

Добавьте следующую конфигурацию в настройки MCP:

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

storybook-mcp запускается немедленно и при первом запуске устанавливает Chromium в фоновом режиме. Если вы хотите предварительно установить браузер, выполните npx -y storybook-mcp@latest install-browser. До завершения этой загрузки первый вызов инструмента, использующего браузер, может занять больше времени.

Переменные окружения

  • STORYBOOK_URL (обязательно): URL-адрес файла index.json вашего Storybook

  • CUSTOM_TOOLS (опционально): JSON-массив определений пользовательских инструментов для извлечения конкретной информации из вашего Storybook

Использование

Сервер предоставляет встроенные инструменты и поддерживает пользовательские:

Встроенные инструменты

1. getComponentList

Извлекает список всех доступных компонентов из настроенного Storybook.

Пример:

Available components:
Accordion
Avatar
Badge
Button
...

2. getComponentsProps

Получает подробную информацию о пропсах для нескольких компонентов, включая:

  • Имена свойств

  • Типы

  • Значения по умолчанию

  • Описания

  • Статус обязательности/опциональности

Параметры:

  • componentNames (массив строк): Массив имен компонентов, для которых нужно получить информацию о пропсах

Пример использования:

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

Пользовательские инструменты

Вы можете определить пользовательские инструменты для извлечения конкретной информации со страниц вашего Storybook. Каждый пользовательский инструмент может:

  • Переходить на любую страницу в вашем Storybook

  • Выполнять произвольный JavaScript для извлечения данных

  • Возвращать структурированные данные ИИ-ассистенту

Структура пользовательского инструмента:

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
}

Примеры пользовательских инструментов:

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

Дополнительные примеры и подробную документацию см. в examples/custom-tools-example.md.

Пример

Настройте конфигурацию Spectrum для storybook-mcp с помощью переменных окружения STORYBOOK_URL и CUSTOM_TOOLS.

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

Как это работает

  1. Список компонентов: Сервер получает файл index.json (в v3 это stories.json) из Storybook и извлекает все компоненты, помеченные типом "docs"

  2. Информация о пропсах: Для пропсов компонентов сервер:

    • Находит ID документации компонента из index.json

    • Формирует URL iframe для страницы документации компонента

    • Использует Playwright для загрузки страницы в headless-браузере

    • Извлекает HTML таблицы пропсов из документации

Поддерживаемые URL Storybook

Сервер работает с любым Storybook, который предоставляет файл index.json (в v3 это stories.json). Распространенные шаблоны:

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

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

Разработка

Локальная разработка

  1. Клонируйте репозиторий

  2. Установите зависимости: yarn install

  3. Установите браузеры Playwright: yarn install:browser

  4. Установите переменную окружения: export STORYBOOK_URL="your-storybook-url"

  5. Запустите в режиме разработки: yarn dev

Примечание: Вы также можете использовать npx @modelcontextprotocol/inspector tsx src/index.ts вместо yarn dev, если предпочитаете.

Сборка

yarn build

Тестирование

yarn test

Требования

  • Node.js 18.0.0 или выше

  • Браузер Chromium, установленный через Playwright

Обработка ошибок

Сервер включает комплексную обработку ошибок для:

  • Отсутствующих или неверных URL Storybook

  • Проблем с сетевым подключением

  • Сценариев, когда компонент не найден

  • Сбоев автоматизации браузера Playwright

Лицензия

Storybook MCP распространяется под лицензией MIT.

Available Tools

2 tools
getComponentListA

Get a list of all components from the configured Storybook

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose any behavioral traits such as side effects, permissions, or constraints. It only states the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no extraneous words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is reasonably complete for a simple list tool, though it could mention the output format or read-only nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters and 100% coverage, so the description adds no param info. Baseline for 0 params is 4, and the description is consistent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', resource 'list of all components', and source 'configured Storybook', distinguishing it from sibling 'getComponentsProps' which likely focuses on props.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling 'getComponentsProps' or any other context. The description is purely functional without usage hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getComponentsPropsB

Get props information for multiple components

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNamesYesArray of component names to get props information for

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral aspects such as read-only nature, error handling, or prerequisites. For a tool with no annotations, the description carries the full burden but fails to add context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is efficient and to the point, with no unnecessary words. For such a simple tool, this level of brevity is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate but lacks any behavioral context or return format hints. It could be improved by noting the output structure or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the parameter. The description does not add meaning beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'props information for multiple components'. It effectively distinguishes from the sibling tool 'getComponentList', which likely lists components rather than their props.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The sibling tool 'getComponentList' is mentioned but not contrasted, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct purpose: one returns component list, the other returns props information. No overlap.

Naming Consistency4/5

Both use 'get' prefix followed by a noun, but one uses singular 'ComponentList' and the other plural 'ComponentsProps', a minor inconsistency.

Tool Count3/5

Only 2 tools feels thin for a Storybook assistant; more tools like individual component details or stories would be expected for a richer surface.

Completeness3/5

Covers listing components and their props, but lacks operations like getting individual component details, searching, or accessing stories, leaving notable gaps.

Maintenance

ActivityInactive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpland/storybook-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server