@scenar/mcp-server 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/tools.js CHANGED
@@ -1,7 +1,6 @@
1
- import { resolve, relative, dirname } from "node:path";
1
+ import { relative } from "node:path";
2
2
  import { z } from "zod";
3
- import { scanProject, generate, initMswServiceWorker } from "@scenar/preview";
4
- import { runPack, runServe, runPublish, runNarrate, runRender, validateScenario, loadScenarioYaml, } from "@scenar/cli/api";
3
+ import { runInstall, runPack, runServe, runPublish, runNarrate, runRender, validateScenario, loadScenarioYaml, } from "@scenar/cli/api";
5
4
  import { projectRoot, resolveInProject } from "./project.js";
6
5
  import { rememberServer, listServers, stopServer } from "./serve-registry.js";
7
6
  /** A successful text result. */
@@ -23,8 +22,7 @@ async function guard(op) {
23
22
  }
24
23
  /** Register every Scenar tool on the server. */
25
24
  export function registerTools(server) {
26
- registerPreviewInit(server);
27
- registerPreviewSync(server);
25
+ registerInstall(server);
28
26
  registerValidate(server);
29
27
  registerNarrate(server);
30
28
  registerPack(server);
@@ -33,68 +31,61 @@ export function registerTools(server) {
33
31
  registerPublish(server);
34
32
  registerRender(server);
35
33
  }
36
- function registerPreviewInit(server) {
37
- server.registerTool("scenar_preview_init", {
38
- title: "Scan project & init preview registry",
39
- description: "Scan a React project and generate the .scenar/ view registry (views, " +
40
- "providers scaffold, report.md) plus the MSW service worker. Run this first " +
41
- "before authoring a scenario. Re-run with resetProviders to regenerate the " +
42
- "providers scaffold.",
34
+ function registerInstall(server) {
35
+ server.registerTool("scenar_install", {
36
+ title: "Bootstrap a Scenar demos project",
37
+ description: "Bootstrap a Scenar demos project in one step: scaffold a package.json and a " +
38
+ "runnable starter tour under tours/example-tour/ if the directory is empty, add " +
39
+ "the given component packages as ordinary dependencies, and run the package " +
40
+ "manager. Run this first, before authoring a scenario. Re-run any time — existing " +
41
+ "files are never overwritten, so authored tours are preserved. Component specs are " +
42
+ "resolver-agnostic: a registry version (@stigmer/react@1.2.0), workspace:*, " +
43
+ "file:../pkg, or a git URL all work. After bootstrapping, edit " +
44
+ "tours/example-tour/index.tsx to render your real components and wire any data " +
45
+ "they fetch in tours/example-tour/.scenar/providers.tsx.",
43
46
  inputSchema: {
44
- source: z.string().optional().describe("project dir to scan (default: project root)"),
45
- output: z.string().optional().describe("output dir for generated files (default: .scenar)"),
46
- resetProviders: z.boolean().optional().describe("force-regenerate providers.tsx"),
47
+ packages: z
48
+ .array(z.string())
49
+ .optional()
50
+ .describe("component packages to add as dependencies (e.g. @stigmer/react)"),
51
+ dir: z.string().optional().describe("project directory (default: project root)"),
52
+ skipInstall: z
53
+ .boolean()
54
+ .optional()
55
+ .describe("scaffold and record dependencies but skip the package-manager install"),
56
+ packageManager: z
57
+ .enum(["npm", "yarn", "pnpm"])
58
+ .optional()
59
+ .describe("force a package manager instead of auto-detecting"),
47
60
  },
48
- }, async ({ source, output, resetProviders }) => guard(async () => {
49
- const sourceRoot = source ? resolveInProject(source) : projectRoot();
50
- const outputDir = output ? resolveInProject(output) : resolve(projectRoot(), ".scenar");
51
- const scan = scanProject(sourceRoot);
52
- const result = generate(scan, { sourceRoot, outputDir, isInit: true, resetProviders });
53
- const msw = initMswServiceWorker(resolve(dirname(outputDir)), scan.framework);
54
- const rel = (p) => relative(projectRoot(), p) || ".";
55
- const lines = [
56
- `Scanned ${sourceRoot}`,
57
- ` framework: ${scan.framework}`,
58
- ` entry: ${scan.entryPoint ?? "none detected"}`,
59
- ` discovered: ${scan.discovered.length} component(s)`,
60
- ` skipped: ${scan.skipped.length}`,
61
- scan.detectedProviders.length > 0 ? ` providers: ${scan.detectedProviders.join(", ")}` : null,
62
- ``,
63
- `Generated ${rel(outputDir)}/:`,
64
- ...result.written.map((f) => ` + ${f}`),
65
- ...result.preserved.map((f) => ` = ${f} (preserved)`),
66
- ``,
67
- `MSW service worker: ${msw.status}${msw.path ? ` (${rel(msw.path)})` : ""}`,
68
- msw.status === "error" ? ` ${msw.error}` : null,
69
- ``,
70
- `Next: review ${rel(outputDir)}/report.md, wire ${rel(outputDir)}/providers.tsx,`,
71
- `then author a scenario (see the Scenar skill).`,
72
- ].filter((l) => l !== null);
73
- return text(lines.join("\n"));
74
- }));
75
- }
76
- function registerPreviewSync(server) {
77
- server.registerTool("scenar_preview_sync", {
78
- title: "Re-scan project & update registry",
79
- description: "Re-scan the project and update scanner-owned files in .scenar/ after code " +
80
- "changes. Preserves user-owned files (views.custom.tsx, providers.tsx).",
81
- inputSchema: {
82
- source: z.string().optional().describe("project dir to scan (default: project root)"),
83
- output: z.string().optional().describe("output dir (default: .scenar)"),
84
- },
85
- }, async ({ source, output }) => guard(async () => {
86
- const sourceRoot = source ? resolveInProject(source) : projectRoot();
87
- const outputDir = output ? resolveInProject(output) : resolve(projectRoot(), ".scenar");
88
- const scan = scanProject(sourceRoot);
89
- const result = generate(scan, { sourceRoot, outputDir, isInit: false });
61
+ }, async ({ packages, dir, skipInstall, packageManager }) => guard(async () => {
62
+ const cwd = dir ? resolveInProject(dir) : projectRoot();
63
+ const installResult = runInstall({
64
+ cwd,
65
+ packages: packages ?? [],
66
+ onLog: () => { }, // structured result below drives the report (no ANSI noise)
67
+ skipInstall,
68
+ packageManager,
69
+ });
90
70
  const rel = (p) => relative(projectRoot(), p) || ".";
91
- const lines = [
92
- `Re-scanned ${sourceRoot}: ${scan.discovered.length} discovered, ${scan.skipped.length} skipped`,
93
- `Updated ${rel(outputDir)}/:`,
94
- ...result.written.map((f) => ` ~ ${f} (updated)`),
95
- ...result.preserved.map((f) => ` = ${f} (preserved)`),
96
- ];
97
- return text(lines.join("\n"));
71
+ const lines = [];
72
+ if (installResult.scaffolded) {
73
+ lines.push(`Scaffolded a new Scenar demos project in ${rel(cwd)}/:`);
74
+ for (const f of installResult.scaffoldCreated)
75
+ lines.push(` + ${f}`);
76
+ lines.push(``);
77
+ }
78
+ if (installResult.added.length > 0) {
79
+ lines.push(`Dependencies added: ${installResult.added.map((s) => s.name).join(", ")}`);
80
+ }
81
+ lines.push(installResult.installRan
82
+ ? `Installed with ${installResult.packageManager}${installResult.workspaceRoot ? " (at the workspace root)" : ""}.`
83
+ : `Install skipped — run ${installResult.packageManager} before packing.`);
84
+ lines.push(``);
85
+ lines.push(`Next: scenar_pack tours/example-tour to preview, then edit its index.tsx to ` +
86
+ `render your real components and wire any data they fetch in ` +
87
+ `tours/example-tour/.scenar/providers.tsx.`);
88
+ return text(lines.filter((l) => l !== null).join("\n"));
98
89
  }));
99
90
  }
100
91
  function registerValidate(server) {
@@ -151,7 +142,7 @@ function registerPack(server) {
151
142
  title: "Pack a scenario into a static embed",
152
143
  description: "Bundle a scenario directory (steps.ts + index.tsx exporting renderStep) into a " +
153
144
  "self-contained static embed with Vite. Output defaults to ./<id>-bundle. " +
154
- "The bundle is ready for scenar_serve, scenar_publish, or scenar deploy.",
145
+ "The bundle is ready for scenar_serve or scenar_publish.",
155
146
  inputSchema: {
156
147
  scenarioDir: z.string().describe("scenario directory (must contain steps.ts)"),
157
148
  outDir: z.string().optional().describe("output directory for the bundle"),
package/src/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
package/src/tools.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { resolve, relative, dirname } from "node:path";
1
+ import { relative } from "node:path";
2
2
  import { z } from "zod";
3
3
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { scanProject, generate, initMswServiceWorker } from "@scenar/preview";
5
4
  import {
5
+ runInstall,
6
6
  runPack,
7
7
  runServe,
8
8
  runPublish,
@@ -40,8 +40,7 @@ async function guard(
40
40
 
41
41
  /** Register every Scenar tool on the server. */
42
42
  export function registerTools(server: McpServer): void {
43
- registerPreviewInit(server);
44
- registerPreviewSync(server);
43
+ registerInstall(server);
45
44
  registerValidate(server);
46
45
  registerNarrate(server);
47
46
  registerPack(server);
@@ -51,84 +50,71 @@ export function registerTools(server: McpServer): void {
51
50
  registerRender(server);
52
51
  }
53
52
 
54
- function registerPreviewInit(server: McpServer): void {
53
+ function registerInstall(server: McpServer): void {
55
54
  server.registerTool(
56
- "scenar_preview_init",
55
+ "scenar_install",
57
56
  {
58
- title: "Scan project & init preview registry",
57
+ title: "Bootstrap a Scenar demos project",
59
58
  description:
60
- "Scan a React project and generate the .scenar/ view registry (views, " +
61
- "providers scaffold, report.md) plus the MSW service worker. Run this first " +
62
- "before authoring a scenario. Re-run with resetProviders to regenerate the " +
63
- "providers scaffold.",
59
+ "Bootstrap a Scenar demos project in one step: scaffold a package.json and a " +
60
+ "runnable starter tour under tours/example-tour/ if the directory is empty, add " +
61
+ "the given component packages as ordinary dependencies, and run the package " +
62
+ "manager. Run this first, before authoring a scenario. Re-run any time — existing " +
63
+ "files are never overwritten, so authored tours are preserved. Component specs are " +
64
+ "resolver-agnostic: a registry version (@stigmer/react@1.2.0), workspace:*, " +
65
+ "file:../pkg, or a git URL all work. After bootstrapping, edit " +
66
+ "tours/example-tour/index.tsx to render your real components and wire any data " +
67
+ "they fetch in tours/example-tour/.scenar/providers.tsx.",
64
68
  inputSchema: {
65
- source: z.string().optional().describe("project dir to scan (default: project root)"),
66
- output: z.string().optional().describe("output dir for generated files (default: .scenar)"),
67
- resetProviders: z.boolean().optional().describe("force-regenerate providers.tsx"),
69
+ packages: z
70
+ .array(z.string())
71
+ .optional()
72
+ .describe("component packages to add as dependencies (e.g. @stigmer/react)"),
73
+ dir: z.string().optional().describe("project directory (default: project root)"),
74
+ skipInstall: z
75
+ .boolean()
76
+ .optional()
77
+ .describe("scaffold and record dependencies but skip the package-manager install"),
78
+ packageManager: z
79
+ .enum(["npm", "yarn", "pnpm"])
80
+ .optional()
81
+ .describe("force a package manager instead of auto-detecting"),
68
82
  },
69
83
  },
70
- async ({ source, output, resetProviders }) =>
84
+ async ({ packages, dir, skipInstall, packageManager }) =>
71
85
  guard(async () => {
72
- const sourceRoot = source ? resolveInProject(source) : projectRoot();
73
- const outputDir = output ? resolveInProject(output) : resolve(projectRoot(), ".scenar");
86
+ const cwd = dir ? resolveInProject(dir) : projectRoot();
74
87
 
75
- const scan = scanProject(sourceRoot);
76
- const result = generate(scan, { sourceRoot, outputDir, isInit: true, resetProviders });
77
- const msw = initMswServiceWorker(resolve(dirname(outputDir)), scan.framework);
78
-
79
- const rel = (p: string) => relative(projectRoot(), p) || ".";
80
- const lines = [
81
- `Scanned ${sourceRoot}`,
82
- ` framework: ${scan.framework}`,
83
- ` entry: ${scan.entryPoint ?? "none detected"}`,
84
- ` discovered: ${scan.discovered.length} component(s)`,
85
- ` skipped: ${scan.skipped.length}`,
86
- scan.detectedProviders.length > 0 ? ` providers: ${scan.detectedProviders.join(", ")}` : null,
87
- ``,
88
- `Generated ${rel(outputDir)}/:`,
89
- ...result.written.map((f) => ` + ${f}`),
90
- ...result.preserved.map((f) => ` = ${f} (preserved)`),
91
- ``,
92
- `MSW service worker: ${msw.status}${msw.path ? ` (${rel(msw.path)})` : ""}`,
93
- msw.status === "error" ? ` ${msw.error}` : null,
94
- ``,
95
- `Next: review ${rel(outputDir)}/report.md, wire ${rel(outputDir)}/providers.tsx,`,
96
- `then author a scenario (see the Scenar skill).`,
97
- ].filter((l): l is string => l !== null);
98
- return text(lines.join("\n"));
99
- }),
100
- );
101
- }
102
-
103
- function registerPreviewSync(server: McpServer): void {
104
- server.registerTool(
105
- "scenar_preview_sync",
106
- {
107
- title: "Re-scan project & update registry",
108
- description:
109
- "Re-scan the project and update scanner-owned files in .scenar/ after code " +
110
- "changes. Preserves user-owned files (views.custom.tsx, providers.tsx).",
111
- inputSchema: {
112
- source: z.string().optional().describe("project dir to scan (default: project root)"),
113
- output: z.string().optional().describe("output dir (default: .scenar)"),
114
- },
115
- },
116
- async ({ source, output }) =>
117
- guard(async () => {
118
- const sourceRoot = source ? resolveInProject(source) : projectRoot();
119
- const outputDir = output ? resolveInProject(output) : resolve(projectRoot(), ".scenar");
120
-
121
- const scan = scanProject(sourceRoot);
122
- const result = generate(scan, { sourceRoot, outputDir, isInit: false });
88
+ const installResult = runInstall({
89
+ cwd,
90
+ packages: packages ?? [],
91
+ onLog: () => {}, // structured result below drives the report (no ANSI noise)
92
+ skipInstall,
93
+ packageManager,
94
+ });
123
95
 
124
96
  const rel = (p: string) => relative(projectRoot(), p) || ".";
125
- const lines = [
126
- `Re-scanned ${sourceRoot}: ${scan.discovered.length} discovered, ${scan.skipped.length} skipped`,
127
- `Updated ${rel(outputDir)}/:`,
128
- ...result.written.map((f) => ` ~ ${f} (updated)`),
129
- ...result.preserved.map((f) => ` = ${f} (preserved)`),
130
- ];
131
- return text(lines.join("\n"));
97
+ const lines: Array<string | null> = [];
98
+ if (installResult.scaffolded) {
99
+ lines.push(`Scaffolded a new Scenar demos project in ${rel(cwd)}/:`);
100
+ for (const f of installResult.scaffoldCreated) lines.push(` + ${f}`);
101
+ lines.push(``);
102
+ }
103
+ if (installResult.added.length > 0) {
104
+ lines.push(`Dependencies added: ${installResult.added.map((s) => s.name).join(", ")}`);
105
+ }
106
+ lines.push(
107
+ installResult.installRan
108
+ ? `Installed with ${installResult.packageManager}${installResult.workspaceRoot ? " (at the workspace root)" : ""}.`
109
+ : `Install skipped — run ${installResult.packageManager} before packing.`,
110
+ );
111
+ lines.push(``);
112
+ lines.push(
113
+ `Next: scenar_pack tours/example-tour to preview, then edit its index.tsx to ` +
114
+ `render your real components and wire any data they fetch in ` +
115
+ `tours/example-tour/.scenar/providers.tsx.`,
116
+ );
117
+ return text(lines.filter((l): l is string => l !== null).join("\n"));
132
118
  }),
133
119
  );
134
120
  }
@@ -205,7 +191,7 @@ function registerPack(server: McpServer): void {
205
191
  description:
206
192
  "Bundle a scenario directory (steps.ts + index.tsx exporting renderStep) into a " +
207
193
  "self-contained static embed with Vite. Output defaults to ./<id>-bundle. " +
208
- "The bundle is ready for scenar_serve, scenar_publish, or scenar deploy.",
194
+ "The bundle is ready for scenar_serve or scenar_publish.",
209
195
  inputSchema: {
210
196
  scenarioDir: z.string().describe("scenario directory (must contain steps.ts)"),
211
197
  outDir: z.string().optional().describe("output directory for the bundle"),