mcp-stitch 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  MCP server for Google Stitch. It exposes Stitch project, screen, design-system, generation, edit, variant, and artifact export tools over stdio for VS Code and other MCP-compatible agents.
4
4
 
5
+ ## Contents
6
+
7
+ - [Links](#links)
8
+ - [Status](#status)
9
+ - [Requirements](#requirements)
10
+ - [Install](#install)
11
+ - [Environment](#environment)
12
+ - [VS Code Setup](#vs-code-setup)
13
+ - [Cursor Setup](#cursor-setup)
14
+ - [Continue Setup](#continue-setup)
15
+ - [Claude Desktop Setup](#claude-desktop-setup)
16
+ - [Claude Code CLI Setup](#claude-code-cli-setup)
17
+ - [Gemini CLI Setup](#gemini-cli-setup)
18
+ - [Codex Setup](#codex-setup)
19
+ - [Tools](#tools)
20
+ - [Safety](#safety)
21
+ - [Development](#development)
22
+ - [Release Script](#release-script)
23
+ - [Contributing](#contributing)
24
+ - [Security](#security)
25
+ - [License](#license)
26
+ - [Publishing Checklist](#publishing-checklist)
27
+
5
28
  ## Links
6
29
 
7
30
  - npm: https://www.npmjs.com/package/mcp-stitch
@@ -42,7 +65,7 @@ Optional:
42
65
 
43
66
  - `STITCH_API_BASE_URL`: defaults to `https://stitch.googleapis.com/mcp`
44
67
  - `STITCH_OUTPUT_DIR`: fallback output root when `PROJECT_ROOT` is not set
45
- - `STITCH_TIMEOUT_MS`: defaults to `30000`
68
+ - `STITCH_TIMEOUT_MS`: defaults to `180000`
46
69
  - `STITCH_MAX_RETRIES`: defaults to `2`
47
70
 
48
71
  ## VS Code Setup
@@ -101,8 +124,256 @@ For local development before publishing, build this repo and point VS Code at th
101
124
  }
102
125
  ```
103
126
 
127
+ Open the VS Code Command Palette with `Cmd+Shift+P` on macOS or `Ctrl+Shift+P` on Windows/Linux, then run `MCP: List Servers` to start or restart the server.
128
+
104
129
  After VS Code starts the server, ask your agent to call `stitch_status` to confirm the setup.
105
130
 
131
+ ## Cursor Setup
132
+
133
+ In Cursor, open `Cursor Settings > MCP` and add a new server:
134
+
135
+ - Name: `stitch`
136
+ - Type / Transport: `stdio`
137
+ - Command: `npx`
138
+ - Arguments:
139
+ - `-y`
140
+ - `mcp-stitch`
141
+
142
+ Environment variables:
143
+
144
+ - `GOOGLE_API_KEY`: your Google API key
145
+ - `PROJECT_ROOT`: absolute path to the project where artifacts should be exported
146
+
147
+ Cursor may not expand VS Code variables like `${workspaceFolder}`, so use a real absolute path for `PROJECT_ROOT`, for example:
148
+
149
+ ```text
150
+ /Users/you/Workspace/my-project
151
+ ```
152
+
153
+ You can also use Cursor's MCP JSON config:
154
+
155
+ ```json
156
+ {
157
+ "mcpServers": {
158
+ "stitch": {
159
+ "command": "npx",
160
+ "args": ["-y", "mcp-stitch"],
161
+ "env": {
162
+ "GOOGLE_API_KEY": "your-key-here",
163
+ "PROJECT_ROOT": "/absolute/path/to/your/project"
164
+ }
165
+ }
166
+ }
167
+ }
168
+ ```
169
+
170
+ After adding it, ask Cursor Agent to call `stitch_status`.
171
+
172
+ ## Continue Setup
173
+
174
+ Continue supports MCP servers in Agent mode. One local setup option is to create a file like:
175
+
176
+ ```text
177
+ .continue/mcpServers/stitch.yaml
178
+ ```
179
+
180
+ Example:
181
+
182
+ ```yaml
183
+ name: Stitch MCP
184
+ version: 0.1.0
185
+ schema: v1
186
+
187
+ mcpServers:
188
+ - name: Stitch
189
+ type: stdio
190
+ command: npx
191
+ args:
192
+ - "-y"
193
+ - "mcp-stitch"
194
+ env:
195
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
196
+ PROJECT_ROOT: /absolute/path/to/your/project
197
+ ```
198
+
199
+ Use Continue's secrets or your local environment for `GOOGLE_API_KEY`; do not commit a literal key.
200
+
201
+ ## Claude Desktop Setup
202
+
203
+ Claude Desktop loads MCP servers from its desktop configuration file. On macOS, create or edit:
204
+
205
+ ```text
206
+ ~/Library/Application Support/Claude/claude_desktop_config.json
207
+ ```
208
+
209
+ Add `mcp-stitch` under `mcpServers`:
210
+
211
+ ```json
212
+ {
213
+ "mcpServers": {
214
+ "stitch": {
215
+ "command": "npx",
216
+ "args": ["-y", "mcp-stitch"],
217
+ "env": {
218
+ "GOOGLE_API_KEY": "your-key-here",
219
+ "PROJECT_ROOT": "/absolute/path/to/your/project"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ ```
225
+
226
+ If Claude Desktop cannot find `npx`, use the absolute path from `which npx` instead, for example:
227
+
228
+ ```json
229
+ {
230
+ "mcpServers": {
231
+ "stitch": {
232
+ "command": "/opt/homebrew/bin/npx",
233
+ "args": ["-y", "mcp-stitch"],
234
+ "env": {
235
+ "GOOGLE_API_KEY": "your-key-here",
236
+ "PROJECT_ROOT": "/absolute/path/to/your/project"
237
+ }
238
+ }
239
+ }
240
+ }
241
+ ```
242
+
243
+ After saving the config, fully quit and reopen Claude Desktop. Then ask Claude to call `stitch_status` to confirm the setup.
244
+
245
+ ## Claude Code CLI Setup
246
+
247
+ Claude Code can add stdio MCP servers from the terminal:
248
+
249
+ ```bash
250
+ claude mcp add \
251
+ -e GOOGLE_API_KEY=your-key-here \
252
+ -e PROJECT_ROOT=/absolute/path/to/your/project \
253
+ stitch -- npx -y mcp-stitch
254
+ ```
255
+
256
+ Then run:
257
+
258
+ ```bash
259
+ claude mcp list
260
+ ```
261
+
262
+ Start or restart Claude Code in your project and ask it to call `stitch_status`.
263
+
264
+ ## Gemini CLI Setup
265
+
266
+ Gemini CLI can load MCP servers from user or workspace settings.
267
+
268
+ For all Gemini CLI projects, create or edit:
269
+
270
+ ```text
271
+ ~/.gemini/settings.json
272
+ ```
273
+
274
+ For just one workspace, create or edit:
275
+
276
+ ```text
277
+ .gemini/settings.json
278
+ ```
279
+
280
+ Add `mcp-stitch` under `mcpServers`:
281
+
282
+ ```json
283
+ {
284
+ "mcpServers": {
285
+ "stitch": {
286
+ "command": "npx",
287
+ "args": ["-y", "mcp-stitch"],
288
+ "env": {
289
+ "GOOGLE_API_KEY": "your-key-here",
290
+ "PROJECT_ROOT": "/absolute/path/to/your/project"
291
+ }
292
+ }
293
+ }
294
+ }
295
+ ```
296
+
297
+ If Gemini CLI cannot find `npx`, use the absolute path from `which npx` instead:
298
+
299
+ ```json
300
+ {
301
+ "mcpServers": {
302
+ "stitch": {
303
+ "command": "/opt/homebrew/bin/npx",
304
+ "args": ["-y", "mcp-stitch"],
305
+ "env": {
306
+ "GOOGLE_API_KEY": "your-key-here",
307
+ "PROJECT_ROOT": "/absolute/path/to/your/project"
308
+ }
309
+ }
310
+ }
311
+ }
312
+ ```
313
+
314
+ Restart Gemini CLI after saving the settings. Inside Gemini CLI, run `/mcp` to list configured MCP servers and tools, then ask it to call `stitch_status`.
315
+
316
+ ## Codex Setup
317
+
318
+ In the Codex app, add a new MCP server with the `+` button:
319
+
320
+ - Name: `stitch`
321
+ - Transport: `STDIO`
322
+ - Command to launch: `npx`
323
+ - Arguments:
324
+ - `-y`
325
+ - `mcp-stitch`
326
+
327
+ Environment variables:
328
+
329
+ - `GOOGLE_API_KEY`: your Google API key
330
+ - `PROJECT_ROOT`: absolute path to the project where artifacts should be exported
331
+
332
+ Codex may not expand VS Code variables like `${workspaceFolder}`, so use a real absolute path for `PROJECT_ROOT`, for example:
333
+
334
+ ```text
335
+ /Users/you/Workspace/my-project
336
+ ```
337
+
338
+ After adding the server, restart or reconnect it and ask Codex to call `stitch_status`.
339
+
340
+ For Codex CLI, add the server from the terminal:
341
+
342
+ ```bash
343
+ codex mcp add stitch \
344
+ --env GOOGLE_API_KEY=your-key-here \
345
+ --env PROJECT_ROOT=/absolute/path/to/your/project \
346
+ -- npx -y mcp-stitch
347
+ ```
348
+
349
+ Then run:
350
+
351
+ ```bash
352
+ codex mcp list
353
+ ```
354
+
355
+ Start or restart Codex in your project and ask it to call `stitch_status`.
356
+
357
+ For manual Codex CLI setup, add a stdio MCP server to your Codex config, usually:
358
+
359
+ ```text
360
+ ~/.codex/config.toml
361
+ ```
362
+
363
+ Example:
364
+
365
+ ```toml
366
+ [mcp_servers.stitch]
367
+ command = "npx"
368
+ args = ["-y", "mcp-stitch"]
369
+
370
+ [mcp_servers.stitch.env]
371
+ GOOGLE_API_KEY = "your-key-here"
372
+ PROJECT_ROOT = "/absolute/path/to/your/project"
373
+ ```
374
+
375
+ Keep this in your local Codex config if it contains a real API key.
376
+
106
377
  ## Tools
107
378
 
108
379
  - `stitch_status`
@@ -141,6 +412,22 @@ npm run build
141
412
  npm run dev
142
413
  ```
143
414
 
415
+ ## Release Script
416
+
417
+ Maintainers can publish a release and push the matching Git commit/tag with:
418
+
419
+ ```bash
420
+ npm run release
421
+ ```
422
+
423
+ The script defaults to a patch release. You can pass another npm version bump:
424
+
425
+ ```bash
426
+ npm run release -- minor
427
+ ```
428
+
429
+ It runs `npm version`, builds, previews the npm package, asks for confirmation before publishing, then commits, tags, and pushes the release.
430
+
144
431
  ## Contributing
145
432
 
146
433
  Issues and pull requests are welcome. Please keep changes focused on the Stitch MCP server surface, avoid committing generated Stitch artifacts, and run:
@@ -163,9 +450,7 @@ ISC. See [LICENSE](LICENSE).
163
450
  ## Publishing Checklist
164
451
 
165
452
  ```bash
166
- npm run build
167
- npm pack --dry-run
168
- npm publish
453
+ npm run release
169
454
  ```
170
455
 
171
456
  See [docs/stitch-tools.md](docs/stitch-tools.md) for detailed tool inputs and Stitch contract notes.
@@ -14,7 +14,7 @@ function getProjectRoot() {
14
14
  export function getStitchConfig() {
15
15
  const apiKey = process.env.GOOGLE_API_KEY?.trim() ?? "";
16
16
  const baseUrl = process.env.STITCH_API_BASE_URL?.trim() || DEFAULT_STITCH_API_BASE_URL;
17
- const timeoutMs = parsePositiveInt(process.env.STITCH_TIMEOUT_MS, 30000);
17
+ const timeoutMs = parsePositiveInt(process.env.STITCH_TIMEOUT_MS, 180000);
18
18
  const maxRetries = parsePositiveInt(process.env.STITCH_MAX_RETRIES, 2);
19
19
  const rawOutputDir = process.env.STITCH_OUTPUT_DIR?.trim();
20
20
  const outputDir = rawOutputDir
@@ -1 +1 @@
1
- {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/config/stitch.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAU/E,SAAS,gBAAgB,CAAC,KAAyB,EAAE,QAAgB;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IAEvF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM;QACN,OAAO;QACP,SAAS;QACT,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/config/stitch.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAU/E,SAAS,gBAAgB,CAAC,KAAyB,EAAE,QAAgB;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IAEvF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM;QACN,OAAO;QACP,SAAS;QACT,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stitchScreens.d.ts","sourceRoot":"","sources":["../../src/tools/stitchScreens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsDpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAgV1D"}
1
+ {"version":3,"file":"stitchScreens.d.ts","sourceRoot":"","sources":["../../src/tools/stitchScreens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0SpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAiU1D"}
@@ -4,7 +4,7 @@ import { getStitchConfig } from "../config/stitch.js";
4
4
  import { StitchClient } from "../services/stitchClient.js";
5
5
  import { toBareProjectId, toBareScreenId, toScreenIdentifier } from "../utils/stitchIds.js";
6
6
  import { resolveScreenInput } from "../utils/stitchScreenResolver.js";
7
- import { formatStitchSummary } from "../utils/stitchResponse.js";
7
+ import { formatStitchSummary, safeJsonPreview } from "../utils/stitchResponse.js";
8
8
  import { compactStitchResult, requireConfirmation } from "../utils/stitchToolHelpers.js";
9
9
  function toErrorText(prefix, message) {
10
10
  return `${prefix}\n\n${message}`;
@@ -45,6 +45,210 @@ const variantOptionsSchema = z
45
45
  variantCount: z.number().int().min(1).max(5).optional(),
46
46
  })
47
47
  .passthrough();
48
+ function asRecord(value) {
49
+ return value && typeof value === "object" && !Array.isArray(value)
50
+ ? value
51
+ : null;
52
+ }
53
+ function getString(obj, key) {
54
+ const value = obj?.[key];
55
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
56
+ }
57
+ function getProjectIdFromName(name) {
58
+ if (!name || !name.startsWith("projects/"))
59
+ return undefined;
60
+ return name.split("/")[1];
61
+ }
62
+ function getScreenIdFromName(name) {
63
+ if (!name)
64
+ return undefined;
65
+ const marker = "/screens/";
66
+ const index = name.indexOf(marker);
67
+ return index >= 0 ? name.slice(index + marker.length) : undefined;
68
+ }
69
+ function parseContentJson(payload) {
70
+ const obj = asRecord(payload);
71
+ const content = obj?.content;
72
+ if (!Array.isArray(content))
73
+ return null;
74
+ for (const item of content) {
75
+ const text = getString(asRecord(item), "text");
76
+ if (!text)
77
+ continue;
78
+ try {
79
+ return JSON.parse(text);
80
+ }
81
+ catch {
82
+ continue;
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+ function getStructuredPayload(payload) {
88
+ const obj = asRecord(payload);
89
+ const structuredContent = obj?.structuredContent;
90
+ if (structuredContent && typeof structuredContent === "object") {
91
+ return structuredContent;
92
+ }
93
+ return parseContentJson(payload) ?? payload;
94
+ }
95
+ function screensFromPayload(payload) {
96
+ const structured = getStructuredPayload(payload);
97
+ const direct = asRecord(structured);
98
+ if (!direct)
99
+ return [];
100
+ const directScreens = direct.screens;
101
+ if (Array.isArray(directScreens)) {
102
+ return directScreens
103
+ .map((screen) => asRecord(screen))
104
+ .filter((screen) => Boolean(screen));
105
+ }
106
+ const outputComponents = direct.outputComponents;
107
+ const screens = [];
108
+ if (Array.isArray(outputComponents)) {
109
+ for (const component of outputComponents) {
110
+ const componentObj = asRecord(component);
111
+ const design = asRecord(componentObj?.design);
112
+ const designScreens = design?.screens;
113
+ if (!Array.isArray(designScreens))
114
+ continue;
115
+ for (const screen of designScreens) {
116
+ const screenObj = asRecord(screen);
117
+ if (screenObj)
118
+ screens.push(screenObj);
119
+ }
120
+ }
121
+ }
122
+ const design = asRecord(direct.design);
123
+ const designScreens = design?.screens;
124
+ if (Array.isArray(designScreens)) {
125
+ for (const screen of designScreens) {
126
+ const screenObj = asRecord(screen);
127
+ if (screenObj)
128
+ screens.push(screenObj);
129
+ }
130
+ }
131
+ return screens;
132
+ }
133
+ function firstScreenFromPayload(payload) {
134
+ const structured = getStructuredPayload(payload);
135
+ const direct = asRecord(structured);
136
+ if (!direct)
137
+ return null;
138
+ if (getString(direct, "name")?.includes("/screens/")) {
139
+ return direct;
140
+ }
141
+ const screens = screensFromPayload(payload);
142
+ if (screens.length > 0) {
143
+ return screens[0] ?? null;
144
+ }
145
+ return null;
146
+ }
147
+ function collectGenerationText(payload) {
148
+ const structured = asRecord(getStructuredPayload(payload));
149
+ const outputComponents = structured?.outputComponents;
150
+ if (!Array.isArray(outputComponents))
151
+ return [];
152
+ const text = [];
153
+ for (const component of outputComponents) {
154
+ const componentObj = asRecord(component);
155
+ const summary = getString(componentObj, "text");
156
+ const suggestion = getString(componentObj, "suggestion");
157
+ if (summary)
158
+ text.push(summary);
159
+ if (suggestion)
160
+ text.push(`Suggestion: ${suggestion}`);
161
+ }
162
+ return text;
163
+ }
164
+ function hasUrl(record) {
165
+ return getString(record, "downloadUrl") ? "yes" : "no";
166
+ }
167
+ function formatScreenListSummary(payload) {
168
+ const screens = screensFromPayload(payload);
169
+ if (screens.length === 0) {
170
+ return formatStitchSummary({
171
+ title: "Stitch screens",
172
+ data: payload,
173
+ itemKeys: ["screens", "items", "results"],
174
+ idKeys: ["name", "id", "screenId", "title"],
175
+ });
176
+ }
177
+ const lines = ["Stitch screens", "", `Screen count: ${screens.length}`, ""];
178
+ screens.forEach((screen, index) => {
179
+ const name = getString(screen, "name");
180
+ const screenId = getString(screen, "id") ?? getScreenIdFromName(name) ?? "(none)";
181
+ const screenshot = asRecord(screen.screenshot);
182
+ const htmlCode = asRecord(screen.htmlCode);
183
+ lines.push(`${index + 1}. ${getString(screen, "title") ?? "(untitled)"}`, `- screenId: ${screenId}`, `- screenName: ${name ?? "(none)"}`, `- width: ${getString(screen, "width") ?? "(none)"}`, `- height: ${getString(screen, "height") ?? "(none)"}`, `- hasScreenshotUrl: ${hasUrl(screenshot)}`, `- hasHtmlCodeUrl: ${hasUrl(htmlCode)}`, `- htmlMimeType: ${getString(htmlCode, "mimeType") ?? "(none)"}`, "");
184
+ });
185
+ lines.push("Tip:", "- Pass the bare screenId to stitch_get_screen with projectId to get screenshot.downloadUrl and htmlCode.downloadUrl.");
186
+ return lines.join("\n");
187
+ }
188
+ function formatScreenAssetSummary(title, payload) {
189
+ const structured = getStructuredPayload(payload);
190
+ const structuredObj = asRecord(structured);
191
+ const screen = firstScreenFromPayload(payload);
192
+ if (!screen) {
193
+ return formatStitchSummary({
194
+ title,
195
+ data: payload,
196
+ itemKeys: ["screens", "nodes", "items"],
197
+ idKeys: ["name", "id", "screenId", "title"],
198
+ });
199
+ }
200
+ const screenshot = asRecord(screen.screenshot);
201
+ const htmlCode = asRecord(screen.htmlCode);
202
+ const metadata = asRecord(screen.screenMetadata);
203
+ const designSystem = asRecord(screen.designSystem);
204
+ const nestedDesignSystem = asRecord(designSystem?.designSystem);
205
+ const screenName = getString(screen, "name");
206
+ const screenId = getString(screen, "id") ?? getScreenIdFromName(screenName);
207
+ const projectId = getString(structuredObj, "projectId") ?? getProjectIdFromName(screenName);
208
+ const prompt = getString(screen, "prompt");
209
+ const generationText = collectGenerationText(payload);
210
+ const lines = [
211
+ title,
212
+ "",
213
+ "Screen:",
214
+ `- screenId: ${screenId ?? "(none)"}`,
215
+ `- screenName: ${screenName ?? "(none)"}`,
216
+ `- projectId: ${projectId ?? "(not present)"}`,
217
+ `- title: ${getString(screen, "title") ?? "(none)"}`,
218
+ `- sessionId: ${getString(structuredObj, "sessionId") ?? "(not present)"}`,
219
+ `- width: ${getString(screen, "width") ?? "(none)"}`,
220
+ `- height: ${getString(screen, "height") ?? "(none)"}`,
221
+ `- deviceType: ${getString(screen, "deviceType") ?? "(none)"}`,
222
+ `- generatedBy: ${getString(screen, "generatedBy") ?? "(not present)"}`,
223
+ `- screenType: ${getString(screen, "screenType") ?? "(not present)"}`,
224
+ `- status: ${getString(metadata, "status") ?? "(not present)"}`,
225
+ `- agentType: ${getString(metadata, "agentType") ?? "(not present)"}`,
226
+ "",
227
+ "Next calls:",
228
+ `- stitch_get_screen: { "projectId": "${projectId ?? "PROJECT_ID"}", "screenId": "${screenId ?? "SCREEN_ID"}" }`,
229
+ "",
230
+ "Screenshot asset:",
231
+ `- name: ${getString(screenshot, "name") ?? "(none)"}`,
232
+ `- downloadUrl: ${getString(screenshot, "downloadUrl") ?? "(none)"}`,
233
+ "",
234
+ "HTML/code asset:",
235
+ `- name: ${getString(htmlCode, "name") ?? "(none)"}`,
236
+ `- downloadUrl: ${getString(htmlCode, "downloadUrl") ?? "(none)"}`,
237
+ `- mimeType: ${getString(htmlCode, "mimeType") ?? "(none)"}`,
238
+ "",
239
+ "Design system:",
240
+ `- name: ${getString(designSystem, "name") ?? "(not present)"}`,
241
+ `- displayName: ${getString(nestedDesignSystem, "displayName") ?? "(not present)"}`,
242
+ ];
243
+ if (prompt) {
244
+ lines.push("", "Prompt:", safeJsonPreview(prompt, 800));
245
+ }
246
+ if (generationText.length > 0) {
247
+ lines.push("", "Generation notes:", ...generationText.map((item) => `- ${item}`));
248
+ }
249
+ lines.push("", "Raw preview:", safeJsonPreview(structured, 2000));
250
+ return lines.join("\n");
251
+ }
48
252
  export function registerStitchScreenTools(server) {
49
253
  server.registerTool("stitch_list_screens", {
50
254
  description: "Lists screens for a Stitch project. If rawInput is provided, it takes precedence over projectId.",
@@ -85,12 +289,7 @@ export function registerStitchScreenTools(server) {
85
289
  content: [
86
290
  {
87
291
  type: "text",
88
- text: formatStitchSummary({
89
- title: "Stitch screens",
90
- data: result.data,
91
- itemKeys: ["screens", "items", "results"],
92
- idKeys: ["name", "id", "screenId", "title"],
93
- }),
292
+ text: formatScreenListSummary(result.data),
94
293
  },
95
294
  ],
96
295
  };
@@ -250,12 +449,7 @@ export function registerStitchScreenTools(server) {
250
449
  content: [
251
450
  {
252
451
  type: "text",
253
- text: formatStitchSummary({
254
- title: "Stitch screen",
255
- data: result.data,
256
- itemKeys: ["nodes", "components", "screens"],
257
- idKeys: ["name", "id", "screenId", "title"],
258
- }),
452
+ text: formatScreenAssetSummary("Stitch screen", result.data),
259
453
  },
260
454
  ],
261
455
  };
@@ -306,12 +500,7 @@ export function registerStitchScreenTools(server) {
306
500
  content: [
307
501
  {
308
502
  type: "text",
309
- text: formatStitchSummary({
310
- title: "Stitch generated screen",
311
- data: result.data,
312
- itemKeys: ["screens", "nodes", "items"],
313
- idKeys: ["name", "id", "screenId", "title"],
314
- }),
503
+ text: formatScreenAssetSummary("Stitch generated screen", result.data),
315
504
  },
316
505
  ],
317
506
  };
@@ -1 +1 @@
1
- {"version":3,"file":"stitchScreens.js","sourceRoot":"","sources":["../../src/tools/stitchScreens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stitchScreens.js","sourceRoot":"","sources":["../../src/tools/stitchScreens.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ This server exposes Stitch project, screen, design-system, DESIGN.md import, gen
13
13
  ## Optional environment variables
14
14
 
15
15
  - STITCH_API_BASE_URL (default: https://stitch.googleapis.com/mcp)
16
- - STITCH_TIMEOUT_MS (default: 30000)
16
+ - STITCH_TIMEOUT_MS (default: 180000)
17
17
  - STITCH_MAX_RETRIES (default: 2)
18
18
  - STITCH_OUTPUT_DIR (default: PROJECT_ROOT/stitch-output or cwd/stitch-output)
19
19
 
@@ -39,12 +39,14 @@ Mutating tools are marked `MUTATING` and require `confirm: true`. Without confir
39
39
 
40
40
  4. stitch_list_screens
41
41
  - Lists screens in a project.
42
+ - Response is formatted as a handoff inventory with title, bare `screenId`, full `screenName`, dimensions, and whether screenshot/HTML URLs are present.
42
43
  - Input:
43
44
  - projectId (optional if rawInput used; bare id or projects/{id}, normalized to bare id)
44
45
  - rawInput (optional)
45
46
 
46
47
  5. stitch_get_screen
47
48
  - Gets one screen.
49
+ - Response highlights the bare `screenId`, full `screenName`, next `stitch_get_screen` call shape, `screenshot.downloadUrl`, and `htmlCode.downloadUrl` when present.
48
50
  - Input:
49
51
  - screenId (optional if rawInput used; full projects/{id}/screens/{screen} path, or bare screen id when projectId is also provided)
50
52
  - projectId (optional; bare id or projects/{id}, used with bare screenId or partial title/name lookup)
@@ -52,6 +54,7 @@ Mutating tools are marked `MUTATING` and require `confirm: true`. Without confir
52
54
 
53
55
  6. stitch_generate_screen_from_text
54
56
  - Generates a screen from text.
57
+ - Response uses the same asset handoff format as `stitch_get_screen`, so agents can pass the returned bare `screenId` directly into later screen tools.
55
58
  - Input:
56
59
  - prompt (required unless rawInput used)
57
60
  - projectId (required unless rawInput used; bare id preferred; projects/{id} is normalized by the adapter)
@@ -183,6 +186,7 @@ Mutating tools are marked `MUTATING` and require `confirm: true`. Without confir
183
186
  "projectId": "abc",
184
187
  "prompt": "Create a dashboard with KPI cards and a recent activity list"
185
188
  }
189
+ - Use the returned bare `screenId` with stitch_get_screen to retrieve the screen asset URLs again later.
186
190
 
187
191
  - Export a fetched screen:
188
192
  - call stitch_export_screen_artifact with {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-stitch",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "MCP server for Google Stitch.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -18,12 +18,14 @@
18
18
  "dist",
19
19
  "docs/stitch-tools.md",
20
20
  "README.md",
21
- "LICENSE"
21
+ "LICENSE",
22
+ "scripts/release.sh"
22
23
  ],
23
24
  "scripts": {
24
25
  "dev": "tsx src/index.ts",
25
26
  "build": "tsc",
26
27
  "prepack": "npm run build",
28
+ "release": "bash scripts/release.sh",
27
29
  "start": "node dist/index.js"
28
30
  },
29
31
  "keywords": [
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ VERSION_BUMP="${1:-patch}"
5
+ NPM_CACHE="${NPM_CACHE:-/private/tmp/mcp-stitch-npm-cache}"
6
+
7
+ case "$VERSION_BUMP" in
8
+ patch|minor|major|prepatch|preminor|premajor|prerelease)
9
+ ;;
10
+ *)
11
+ echo "Invalid version bump: $VERSION_BUMP"
12
+ echo "Use one of: patch, minor, major, prepatch, preminor, premajor, prerelease"
13
+ exit 1
14
+ ;;
15
+ esac
16
+
17
+ if ! git diff --quiet || ! git diff --cached --quiet; then
18
+ echo "Working tree has uncommitted changes. That is okay for a release,"
19
+ echo "but they will be included in the release commit after publish."
20
+ echo
21
+ fi
22
+
23
+ echo "Release bump: $VERSION_BUMP"
24
+ echo "npm cache: $NPM_CACHE"
25
+ echo
26
+
27
+ read -r -p "Commit message: " COMMIT_MESSAGE
28
+ if [[ -z "${COMMIT_MESSAGE// }" ]]; then
29
+ echo "Commit message is required."
30
+ exit 1
31
+ fi
32
+
33
+ echo
34
+ echo "Bumping package version..."
35
+ npm version "$VERSION_BUMP" --no-git-tag-version
36
+
37
+ VERSION="$(node -p "require('./package.json').version")"
38
+ TAG="v$VERSION"
39
+
40
+ echo
41
+ echo "Building..."
42
+ npm run build
43
+
44
+ echo
45
+ echo "Checking package contents..."
46
+ npm --cache "$NPM_CACHE" pack --dry-run
47
+
48
+ echo
49
+ read -r -p "Publish mcp-stitch@$VERSION to npm? [y/N] " CONFIRM_PUBLISH
50
+ case "$CONFIRM_PUBLISH" in
51
+ y|Y|yes|YES)
52
+ npm --cache "$NPM_CACHE" publish --access public
53
+ ;;
54
+ *)
55
+ echo "Publish cancelled. Version files were updated but no npm package was published."
56
+ exit 1
57
+ ;;
58
+ esac
59
+
60
+ echo
61
+ echo "Committing and pushing..."
62
+ git add .
63
+ git commit -m "$COMMIT_MESSAGE"
64
+ git tag "$TAG"
65
+ git push
66
+ git push origin "$TAG"
67
+
68
+ echo
69
+ echo "Released mcp-stitch@$VERSION and pushed $TAG."