mcp-stitch 0.1.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/README.md +122 -0
- package/dist/config/stitch.d.ts +11 -0
- package/dist/config/stitch.d.ts.map +1 -0
- package/dist/config/stitch.js +38 -0
- package/dist/config/stitch.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/models/stitch.d.ts +20 -0
- package/dist/models/stitch.d.ts.map +1 -0
- package/dist/models/stitch.js +2 -0
- package/dist/models/stitch.js.map +1 -0
- package/dist/services/stitchClient.d.ts +8 -0
- package/dist/services/stitchClient.d.ts.map +1 -0
- package/dist/services/stitchClient.js +189 -0
- package/dist/services/stitchClient.js.map +1 -0
- package/dist/tools/status.d.ts +3 -0
- package/dist/tools/status.d.ts.map +1 -0
- package/dist/tools/status.js +50 -0
- package/dist/tools/status.js.map +1 -0
- package/dist/tools/stitchDesignSystems.d.ts +3 -0
- package/dist/tools/stitchDesignSystems.d.ts.map +1 -0
- package/dist/tools/stitchDesignSystems.js +340 -0
- package/dist/tools/stitchDesignSystems.js.map +1 -0
- package/dist/tools/stitchExport.d.ts +3 -0
- package/dist/tools/stitchExport.d.ts.map +1 -0
- package/dist/tools/stitchExport.js +923 -0
- package/dist/tools/stitchExport.js.map +1 -0
- package/dist/tools/stitchProjects.d.ts +3 -0
- package/dist/tools/stitchProjects.d.ts.map +1 -0
- package/dist/tools/stitchProjects.js +125 -0
- package/dist/tools/stitchProjects.js.map +1 -0
- package/dist/tools/stitchScreens.d.ts +3 -0
- package/dist/tools/stitchScreens.d.ts.map +1 -0
- package/dist/tools/stitchScreens.js +320 -0
- package/dist/tools/stitchScreens.js.map +1 -0
- package/dist/utils/redact.d.ts +3 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +14 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/safePath.d.ts +3 -0
- package/dist/utils/safePath.d.ts.map +1 -0
- package/dist/utils/safePath.js +81 -0
- package/dist/utils/safePath.js.map +1 -0
- package/dist/utils/stitchIds.d.ts +12 -0
- package/dist/utils/stitchIds.d.ts.map +1 -0
- package/dist/utils/stitchIds.js +48 -0
- package/dist/utils/stitchIds.js.map +1 -0
- package/dist/utils/stitchResponse.d.ts +11 -0
- package/dist/utils/stitchResponse.d.ts.map +1 -0
- package/dist/utils/stitchResponse.js +71 -0
- package/dist/utils/stitchResponse.js.map +1 -0
- package/dist/utils/stitchScreenResolver.d.ts +26 -0
- package/dist/utils/stitchScreenResolver.d.ts.map +1 -0
- package/dist/utils/stitchScreenResolver.js +159 -0
- package/dist/utils/stitchScreenResolver.js.map +1 -0
- package/dist/utils/stitchToolHelpers.d.ts +6 -0
- package/dist/utils/stitchToolHelpers.d.ts.map +1 -0
- package/dist/utils/stitchToolHelpers.js +25 -0
- package/dist/utils/stitchToolHelpers.js.map +1 -0
- package/docs/stitch-tools.md +389 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# mcp-stitch
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js 20 or newer
|
|
8
|
+
- A Google API key with access to Stitch
|
|
9
|
+
|
|
10
|
+
## Environment
|
|
11
|
+
|
|
12
|
+
Required:
|
|
13
|
+
|
|
14
|
+
- `GOOGLE_API_KEY`
|
|
15
|
+
|
|
16
|
+
Recommended:
|
|
17
|
+
|
|
18
|
+
- `PROJECT_ROOT`: workspace/project directory where exported Stitch artifacts should be written
|
|
19
|
+
|
|
20
|
+
Optional:
|
|
21
|
+
|
|
22
|
+
- `STITCH_API_BASE_URL`: defaults to `https://stitch.googleapis.com/mcp`
|
|
23
|
+
- `STITCH_OUTPUT_DIR`: fallback output root when `PROJECT_ROOT` is not set
|
|
24
|
+
- `STITCH_TIMEOUT_MS`: defaults to `30000`
|
|
25
|
+
- `STITCH_MAX_RETRIES`: defaults to `2`
|
|
26
|
+
|
|
27
|
+
## VS Code Setup
|
|
28
|
+
|
|
29
|
+
VS Code can load MCP servers from a workspace `.vscode/mcp.json` file or from your user MCP configuration.
|
|
30
|
+
|
|
31
|
+
For a published npm package, use:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"servers": {
|
|
36
|
+
"stitch": {
|
|
37
|
+
"type": "stdio",
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "mcp-stitch"],
|
|
40
|
+
"env": {
|
|
41
|
+
"GOOGLE_API_KEY": "${input:stitchApiKey}",
|
|
42
|
+
"PROJECT_ROOT": "${workspaceFolder}"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"inputs": [
|
|
47
|
+
{
|
|
48
|
+
"id": "stitchApiKey",
|
|
49
|
+
"type": "promptString",
|
|
50
|
+
"description": "Google API key for Stitch",
|
|
51
|
+
"password": true
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For local development before publishing, build this repo and point VS Code at the compiled entrypoint:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"servers": {
|
|
62
|
+
"stitch": {
|
|
63
|
+
"type": "stdio",
|
|
64
|
+
"command": "node",
|
|
65
|
+
"args": ["/absolute/path/to/mcp-stitch/dist/index.js"],
|
|
66
|
+
"env": {
|
|
67
|
+
"GOOGLE_API_KEY": "${input:stitchApiKey}",
|
|
68
|
+
"PROJECT_ROOT": "${workspaceFolder}"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"inputs": [
|
|
73
|
+
{
|
|
74
|
+
"id": "stitchApiKey",
|
|
75
|
+
"type": "promptString",
|
|
76
|
+
"description": "Google API key for Stitch",
|
|
77
|
+
"password": true
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
After VS Code starts the server, ask your agent to call `stitch_status` to confirm the setup.
|
|
84
|
+
|
|
85
|
+
## Tools
|
|
86
|
+
|
|
87
|
+
- `stitch_status`
|
|
88
|
+
- `stitch_list_projects`
|
|
89
|
+
- `stitch_get_project`
|
|
90
|
+
- `stitch_create_project`
|
|
91
|
+
- `stitch_list_screens`
|
|
92
|
+
- `stitch_get_screen`
|
|
93
|
+
- `stitch_generate_screen_from_text`
|
|
94
|
+
- `stitch_edit_screens`
|
|
95
|
+
- `stitch_generate_variants`
|
|
96
|
+
- `stitch_upload_design_md`
|
|
97
|
+
- `stitch_create_design_system`
|
|
98
|
+
- `stitch_create_design_system_from_design_md`
|
|
99
|
+
- `stitch_update_design_system`
|
|
100
|
+
- `stitch_list_design_systems`
|
|
101
|
+
- `stitch_apply_design_system`
|
|
102
|
+
- `stitch_export_screen_artifact`
|
|
103
|
+
|
|
104
|
+
Mutating tools require `confirm: true`.
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install
|
|
110
|
+
npm run build
|
|
111
|
+
npm run dev
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Publishing Checklist
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
npm run build
|
|
118
|
+
npm pack --dry-run
|
|
119
|
+
npm publish
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
See [docs/stitch-tools.md](docs/stitch-tools.md) for detailed tool inputs and Stitch contract notes.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DEFAULT_STITCH_API_BASE_URL = "https://stitch.googleapis.com/mcp";
|
|
2
|
+
export type StitchConfig = {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
timeoutMs: number;
|
|
6
|
+
maxRetries: number;
|
|
7
|
+
outputDir: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function getStitchConfig(): StitchConfig;
|
|
10
|
+
export declare function validateStitchApiConfig(config: StitchConfig): string[];
|
|
11
|
+
//# sourceMappingURL=stitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/config/stitch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAeF,wBAAgB,eAAe,IAAI,YAAY,CAmB9C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAQtE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
export const DEFAULT_STITCH_API_BASE_URL = "https://stitch.googleapis.com/mcp";
|
|
3
|
+
function parsePositiveInt(value, fallback) {
|
|
4
|
+
if (!value)
|
|
5
|
+
return fallback;
|
|
6
|
+
const parsed = Number.parseInt(value, 10);
|
|
7
|
+
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
8
|
+
return fallback;
|
|
9
|
+
return parsed;
|
|
10
|
+
}
|
|
11
|
+
function getProjectRoot() {
|
|
12
|
+
return process.env.PROJECT_ROOT?.trim() || process.cwd();
|
|
13
|
+
}
|
|
14
|
+
export function getStitchConfig() {
|
|
15
|
+
const apiKey = process.env.GOOGLE_API_KEY?.trim() ?? "";
|
|
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);
|
|
18
|
+
const maxRetries = parsePositiveInt(process.env.STITCH_MAX_RETRIES, 2);
|
|
19
|
+
const rawOutputDir = process.env.STITCH_OUTPUT_DIR?.trim();
|
|
20
|
+
const outputDir = rawOutputDir
|
|
21
|
+
? path.resolve(rawOutputDir)
|
|
22
|
+
: path.resolve(getProjectRoot(), "stitch-output");
|
|
23
|
+
return {
|
|
24
|
+
apiKey,
|
|
25
|
+
baseUrl,
|
|
26
|
+
timeoutMs,
|
|
27
|
+
maxRetries,
|
|
28
|
+
outputDir,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function validateStitchApiConfig(config) {
|
|
32
|
+
const errors = [];
|
|
33
|
+
if (!config.apiKey) {
|
|
34
|
+
errors.push("Missing GOOGLE_API_KEY environment variable.");
|
|
35
|
+
}
|
|
36
|
+
return errors;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=stitch.js.map
|
|
@@ -0,0 +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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
import { registerStitchStatusTool } from "./tools/status.js";
|
|
6
|
+
import { registerStitchProjectTools } from "./tools/stitchProjects.js";
|
|
7
|
+
import { registerStitchScreenTools } from "./tools/stitchScreens.js";
|
|
8
|
+
import { registerStitchDesignSystemTools } from "./tools/stitchDesignSystems.js";
|
|
9
|
+
import { registerStitchExportTool } from "./tools/stitchExport.js";
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: "mcp-stitch",
|
|
12
|
+
version: "0.5.0",
|
|
13
|
+
});
|
|
14
|
+
registerStitchStatusTool(server);
|
|
15
|
+
registerStitchProjectTools(server);
|
|
16
|
+
registerStitchScreenTools(server);
|
|
17
|
+
registerStitchDesignSystemTools(server);
|
|
18
|
+
registerStitchExportTool(server);
|
|
19
|
+
const transport = new StdioServerTransport();
|
|
20
|
+
await server.connect(transport);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACxC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAIjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type JsonObject = Record<string, unknown>;
|
|
2
|
+
export type StitchCallResult = {
|
|
3
|
+
ok: true;
|
|
4
|
+
data: unknown;
|
|
5
|
+
requestId: number;
|
|
6
|
+
status?: number;
|
|
7
|
+
};
|
|
8
|
+
export type StitchCallFailure = {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
requestId: number;
|
|
12
|
+
status?: number;
|
|
13
|
+
details?: unknown;
|
|
14
|
+
};
|
|
15
|
+
export type StitchCallResponse = StitchCallResult | StitchCallFailure;
|
|
16
|
+
export type StitchToolCall = {
|
|
17
|
+
toolName: string;
|
|
18
|
+
input: JsonObject;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=stitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/models/stitch.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/models/stitch.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { StitchConfig } from "../config/stitch.js";
|
|
2
|
+
import type { StitchCallResponse, StitchToolCall } from "../models/stitch.js";
|
|
3
|
+
export declare class StitchClient {
|
|
4
|
+
private readonly config;
|
|
5
|
+
constructor(config: StitchConfig);
|
|
6
|
+
callTool(call: StitchToolCall): Promise<StitchCallResponse>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=stitchClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitchClient.d.ts","sourceRoot":"","sources":["../../src/services/stitchClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsD9E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,YAAY;IAI1B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2JlE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { validateStitchApiConfig } from "../config/stitch.js";
|
|
2
|
+
import { toSafeErrorMessage } from "../utils/redact.js";
|
|
3
|
+
// Stitch transport contract:
|
|
4
|
+
// - HTTP POST to STITCH_API_BASE_URL, defaulting to https://stitch.googleapis.com/mcp
|
|
5
|
+
// - JSON-RPC envelope with method "tools/call"
|
|
6
|
+
// - params.name and params.arguments
|
|
7
|
+
// - API key sent via header "x-goog-api-key"
|
|
8
|
+
function shouldRetry(status) {
|
|
9
|
+
if (!status)
|
|
10
|
+
return true;
|
|
11
|
+
return status === 408 || status === 429 || status >= 500;
|
|
12
|
+
}
|
|
13
|
+
function toStitchErrorText(payload) {
|
|
14
|
+
if (!payload || typeof payload !== "object")
|
|
15
|
+
return null;
|
|
16
|
+
const obj = payload;
|
|
17
|
+
const errorObj = obj.error;
|
|
18
|
+
if (errorObj && typeof errorObj === "object") {
|
|
19
|
+
const e = errorObj;
|
|
20
|
+
const message = e.message;
|
|
21
|
+
if (typeof message === "string")
|
|
22
|
+
return message;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
function toToolContentError(payload) {
|
|
27
|
+
if (!payload || typeof payload !== "object")
|
|
28
|
+
return null;
|
|
29
|
+
const obj = payload;
|
|
30
|
+
const result = obj.result;
|
|
31
|
+
if (!result || typeof result !== "object")
|
|
32
|
+
return null;
|
|
33
|
+
const resultObj = result;
|
|
34
|
+
if (resultObj.isError !== true)
|
|
35
|
+
return null;
|
|
36
|
+
const content = resultObj.content;
|
|
37
|
+
if (!Array.isArray(content) || content.length === 0) {
|
|
38
|
+
return "Stitch tool returned isError=true.";
|
|
39
|
+
}
|
|
40
|
+
const first = content[0];
|
|
41
|
+
if (first && typeof first === "object") {
|
|
42
|
+
const text = first.text;
|
|
43
|
+
if (typeof text === "string" && text.trim().length > 0) {
|
|
44
|
+
return text.trim();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return "Stitch tool returned isError=true.";
|
|
48
|
+
}
|
|
49
|
+
export class StitchClient {
|
|
50
|
+
config;
|
|
51
|
+
constructor(config) {
|
|
52
|
+
this.config = config;
|
|
53
|
+
}
|
|
54
|
+
async callTool(call) {
|
|
55
|
+
const configErrors = validateStitchApiConfig(this.config);
|
|
56
|
+
const requestId = Date.now();
|
|
57
|
+
if (configErrors.length > 0) {
|
|
58
|
+
return {
|
|
59
|
+
ok: false,
|
|
60
|
+
error: configErrors.join(" "),
|
|
61
|
+
requestId,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const body = {
|
|
65
|
+
jsonrpc: "2.0",
|
|
66
|
+
id: requestId,
|
|
67
|
+
method: "tools/call",
|
|
68
|
+
params: {
|
|
69
|
+
name: call.toolName,
|
|
70
|
+
arguments: call.input,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
let attempt = 0;
|
|
74
|
+
let lastError = "Unknown Stitch API error.";
|
|
75
|
+
let lastStatus;
|
|
76
|
+
while (attempt <= this.config.maxRetries) {
|
|
77
|
+
const controller = new AbortController();
|
|
78
|
+
const timeout = setTimeout(() => controller.abort(), this.config.timeoutMs);
|
|
79
|
+
try {
|
|
80
|
+
const response = await fetch(this.config.baseUrl, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers: {
|
|
83
|
+
"content-type": "application/json",
|
|
84
|
+
"x-goog-api-key": this.config.apiKey,
|
|
85
|
+
},
|
|
86
|
+
body: JSON.stringify(body),
|
|
87
|
+
signal: controller.signal,
|
|
88
|
+
});
|
|
89
|
+
clearTimeout(timeout);
|
|
90
|
+
lastStatus = response.status;
|
|
91
|
+
const text = await response.text();
|
|
92
|
+
let payload = null;
|
|
93
|
+
try {
|
|
94
|
+
payload = text ? JSON.parse(text) : null;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
payload = { raw: text };
|
|
98
|
+
}
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
const apiMessage = toStitchErrorText(payload);
|
|
101
|
+
lastError = apiMessage ?? `Stitch API request failed with status ${response.status}.`;
|
|
102
|
+
if (shouldRetry(response.status) && attempt < this.config.maxRetries) {
|
|
103
|
+
attempt += 1;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
ok: false,
|
|
108
|
+
error: lastError,
|
|
109
|
+
requestId,
|
|
110
|
+
status: response.status,
|
|
111
|
+
details: payload,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (payload && typeof payload === "object") {
|
|
115
|
+
const obj = payload;
|
|
116
|
+
const apiMessage = toStitchErrorText(payload);
|
|
117
|
+
const toolMessage = toToolContentError(payload);
|
|
118
|
+
if (apiMessage) {
|
|
119
|
+
return {
|
|
120
|
+
ok: false,
|
|
121
|
+
error: apiMessage,
|
|
122
|
+
requestId,
|
|
123
|
+
status: response.status,
|
|
124
|
+
details: payload,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
if (toolMessage) {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
error: toolMessage,
|
|
131
|
+
requestId,
|
|
132
|
+
status: response.status,
|
|
133
|
+
details: payload,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if ("result" in obj) {
|
|
137
|
+
return {
|
|
138
|
+
ok: true,
|
|
139
|
+
data: obj.result,
|
|
140
|
+
requestId,
|
|
141
|
+
status: response.status,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
ok: true,
|
|
147
|
+
data: payload,
|
|
148
|
+
requestId,
|
|
149
|
+
status: response.status,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
clearTimeout(timeout);
|
|
154
|
+
lastError = toSafeErrorMessage(error, [this.config.apiKey]);
|
|
155
|
+
if (attempt < this.config.maxRetries) {
|
|
156
|
+
attempt += 1;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (lastStatus === undefined) {
|
|
160
|
+
return {
|
|
161
|
+
ok: false,
|
|
162
|
+
error: `Failed to call Stitch API: ${lastError}`,
|
|
163
|
+
requestId,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
ok: false,
|
|
168
|
+
error: `Failed to call Stitch API: ${lastError}`,
|
|
169
|
+
requestId,
|
|
170
|
+
status: lastStatus,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (lastStatus === undefined) {
|
|
175
|
+
return {
|
|
176
|
+
ok: false,
|
|
177
|
+
error: `Failed to call Stitch API: ${lastError}`,
|
|
178
|
+
requestId,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
error: `Failed to call Stitch API: ${lastError}`,
|
|
184
|
+
requestId,
|
|
185
|
+
status: lastStatus,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=stitchClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitchClient.js","sourceRoot":"","sources":["../../src/services/stitchClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QA2CzD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { DEFAULT_STITCH_API_BASE_URL, getStitchConfig } from "../config/stitch.js";
|
|
4
|
+
function isConfigured(name) {
|
|
5
|
+
return Boolean(process.env[name]?.trim());
|
|
6
|
+
}
|
|
7
|
+
function configuredText(name) {
|
|
8
|
+
return isConfigured(name) ? "configured" : "missing";
|
|
9
|
+
}
|
|
10
|
+
function optionalText(name, fallback) {
|
|
11
|
+
return isConfigured(name) ? "configured" : fallback;
|
|
12
|
+
}
|
|
13
|
+
export function registerStitchStatusTool(server) {
|
|
14
|
+
server.registerTool("stitch_status", {
|
|
15
|
+
description: "Checks Stitch MCP setup and reports missing required, recommended, and optional environment variables without exposing secret values.",
|
|
16
|
+
inputSchema: z.object({}),
|
|
17
|
+
}, async () => {
|
|
18
|
+
const config = getStitchConfig();
|
|
19
|
+
const hasProjectRoot = isConfigured("PROJECT_ROOT");
|
|
20
|
+
const lines = [
|
|
21
|
+
"Stitch setup status",
|
|
22
|
+
"",
|
|
23
|
+
"Required configuration:",
|
|
24
|
+
`- GOOGLE_API_KEY: ${configuredText("GOOGLE_API_KEY")}`,
|
|
25
|
+
"",
|
|
26
|
+
"Recommended configuration:",
|
|
27
|
+
`- PROJECT_ROOT: ${hasProjectRoot ? "configured" : "missing"}`,
|
|
28
|
+
...(hasProjectRoot
|
|
29
|
+
? []
|
|
30
|
+
: [
|
|
31
|
+
" Set PROJECT_ROOT to the workspace/project directory where Stitch artifacts should be exported.",
|
|
32
|
+
]),
|
|
33
|
+
"",
|
|
34
|
+
"Optional configuration:",
|
|
35
|
+
`- STITCH_API_BASE_URL: ${isConfigured("STITCH_API_BASE_URL") ? "configured" : `using default ${DEFAULT_STITCH_API_BASE_URL}`}`,
|
|
36
|
+
`- STITCH_OUTPUT_DIR: ${optionalText("STITCH_OUTPUT_DIR", `not set; defaulting to ${config.outputDir}`)}`,
|
|
37
|
+
`- STITCH_TIMEOUT_MS: ${optionalText("STITCH_TIMEOUT_MS", `using default ${config.timeoutMs}`)}`,
|
|
38
|
+
`- STITCH_MAX_RETRIES: ${optionalText("STITCH_MAX_RETRIES", `using default ${config.maxRetries}`)}`,
|
|
39
|
+
];
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: "text",
|
|
44
|
+
text: lines.join("\n"),
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEnF,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB;IAClD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG;YACZ,qBAAqB;YACrB,EAAE;YACF,yBAAyB;YACzB,qBAAqB,cAAc,CAAC,gBAAgB,CAAC,EAAE;YACvD,EAAE;YACF,4BAA4B;YAC5B,mBAAmB,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE;YAC9D,GAAG,CAAC,cAAc;gBAChB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,kGAAkG;iBACnG,CAAC;YACN,EAAE;YACF,yBAAyB;YACzB,0BAA0B,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,2BAA2B,EAAE,EAAE;YAC/H,wBAAwB,YAAY,CAAC,mBAAmB,EAAE,0BAA0B,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE;YACzG,wBAAwB,YAAY,CAAC,mBAAmB,EAAE,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE;YAChG,yBAAyB,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;SACpG,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;iBACvB;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitchDesignSystems.d.ts","sourceRoot":"","sources":["../../src/tools/stitchDesignSystems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyKpE,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,QAgPhE"}
|