Skip to content

Commit 78424f3

Browse files
authored
Merge pull request #36 from storybookjs/support-webpack
Support Webpack-based frameworks, require Storybook 10.1
2 parents 373741b + 031169f commit 78424f3

File tree

8 files changed

+773
-127
lines changed

8 files changed

+773
-127
lines changed

.changeset/dark-eagles-argue.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@storybook/addon-mcp': minor
3+
---
4+
5+
Add support for Webpack (including Webpack-based frameworks like Next.js)
6+
7+
# Breaking Change
8+
9+
This requires version 10.1 of Storybook, currently only available as the canary version `0.0.0-pr-32810-sha-6e759c7e`. If you want to continue to use the addon with Storybook 9 or 10.0 (and Vite), stick to [version `0.0.9` of this package](https://github.com/storybookjs/mcp/tree/%40storybook/addon-mcp%400.0.9).

apps/internal-storybook/.storybook/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const config = defineMain({
66
'../stories/components/**/*.stories.@(js|jsx|ts|tsx)',
77
{
88
titlePrefix: 'Other UI',
9-
directory: '../src/stories/other',
9+
directory: '../stories/other',
1010
files: '**/*.stories.@(js|jsx|ts|tsx)',
1111
},
1212
],

apps/internal-storybook/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
"typecheck": "tsc --noEmit"
1010
},
1111
"devDependencies": {
12-
"@storybook/addon-docs": "0.0.0-pr-32810-sha-af0645cd",
12+
"@storybook/addon-docs": "catalog:",
1313
"@storybook/addon-mcp": "workspace:*",
14-
"@storybook/react-vite": "0.0.0-pr-32810-sha-af0645cd",
14+
"@storybook/react-vite": "catalog:",
1515
"@types/react": "^18.2.65",
1616
"@types/react-dom": "^18.2.21",
1717
"@vitejs/plugin-react": "^4.7.0",
1818
"react": "^18.2.0",
1919
"react-dom": "^18.2.0",
20-
"storybook": "0.0.0-pr-32810-sha-af0645cd"
20+
"storybook": "catalog:"
2121
}
2222
}

packages/addon-mcp/README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ It enables a workflow where for each UI component created, the agent will automa
66

77
The addon provides tools to improve agents' UI development capabilities, retrieve story URLs, and access component documentation.
88

9-
> [!IMPORTANT]
10-
> This addon currently only supports Vite-based Storybook setups, such as [`@storybook/react-vite`](https://storybook.js.org/docs/get-started/frameworks/react-vite), [`@storybook/nextjs-vite`](https://storybook.js.org/docs/get-started/frameworks/nextjs#with-vite), and [`@storybook/sveltekit`](https://storybook.js.org/docs/get-started/frameworks/sveltekit).
11-
129
<div align="center">
1310
<img src="https://storybook.js.org/embed/addon-mcp-claude-code-showcase.gif" alt="Storybook MCP Addon Demo" />
1411
</div>
@@ -18,7 +15,7 @@ The addon provides tools to improve agents' UI development capabilities, retriev
1815
### Installation and Setup
1916

2017
> [!NOTE]
21-
> This addon requires Storybook 9.0 or higher.
18+
> This addon requires Storybook 10.1 or higher, currently only available as the canary version `0.0.0-pr-32810-sha-6e759c7e`.
2219
2320
Use Storybook's CLI to automatically install and configure the addon:
2421

@@ -128,8 +125,7 @@ These additional tools are available when the **experimental** component manifes
128125

129126
**Requirements:**
130127

131-
- Storybook v10.1 or later (prereleases), currently available as [canary version `0.0.0-pr-32810-sha-af0645cd`](https://www.npmjs.com/package/storybook/v/0.0.0-pr-32810-sha-af0645cd)
132-
- React-based framework (`react-vite`, `nextjs-vite`)
128+
- React-based framework (`react-vite`, `nextjs-vite`, `nextjs`, `react-webpack5`)
133129
- Feature flag `features.experimentalComponentsManifest` set to `true` in `.storybook/main.js`
134130

135131
**To enable:**

packages/addon-mcp/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@
4343
"devDependencies": {
4444
"@types/node": "catalog:",
4545
"@vitest/coverage-v8": "catalog:",
46-
"storybook": "^10.0.0-0",
46+
"storybook": "catalog:",
4747
"ts-dedent": "^2.2.0",
4848
"tsdown": "catalog:",
4949
"typescript": "catalog:",
5050
"vite": "^7.0.5",
5151
"vitest": "catalog:"
5252
},
5353
"peerDependencies": {
54-
"storybook": ">=9.0.0"
54+
"storybook": "catalog:"
5555
},
5656
"publishConfig": {
5757
"access": "public"

packages/addon-mcp/src/preset.ts

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
1-
import type { Plugin } from 'vite';
21
import { mcpServerHandler } from './mcp-handler.ts';
3-
import type { Options } from 'storybook/internal/types';
2+
import type { PresetProperty } from 'storybook/internal/types';
43

5-
// This is a workaround for Storybook not having an API for addons to register server middlewares/handlers
6-
// We can do it through Vite's plugin API instead, which gets added to Storybook's dev server in the end. 😈
7-
export const viteFinal = async (config: any, options: Options) => {
8-
const mcpHandlerPlugin: Plugin = {
9-
name: 'storybook:mcp-server',
10-
configureServer(server) {
11-
server.middlewares.use('/mcp', (req, res, next) =>
12-
mcpServerHandler(req, res, next, options),
13-
);
14-
},
15-
};
16-
return {
17-
...config,
18-
plugins: config.plugins.concat(mcpHandlerPlugin),
19-
};
4+
export const experimental_devServer: PresetProperty<
5+
'experimental_devServer'
6+
> = (app, options) => {
7+
app!.use('/mcp', (req, res, next) =>
8+
mcpServerHandler(req, res, next, options),
9+
);
10+
return app;
2011
};

0 commit comments

Comments
 (0)