@layoutdesign/context 0.2.4 → 0.3.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/dist/bin/cli.js +1 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/cli/doctor.d.ts +2 -0
- package/dist/src/cli/doctor.d.ts.map +1 -1
- package/dist/src/cli/doctor.js +152 -38
- package/dist/src/cli/doctor.js.map +1 -1
- package/dist/src/cli/install.d.ts.map +1 -1
- package/dist/src/cli/install.js +118 -52
- package/dist/src/cli/install.js.map +1 -1
- package/dist/src/cli/setup-utils.d.ts +65 -0
- package/dist/src/cli/setup-utils.d.ts.map +1 -0
- package/dist/src/cli/setup-utils.js +225 -0
- package/dist/src/cli/setup-utils.js.map +1 -0
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +3 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/check-setup.d.ts +24 -0
- package/dist/src/mcp/tools/check-setup.d.ts.map +1 -0
- package/dist/src/mcp/tools/check-setup.js +195 -0
- package/dist/src/mcp/tools/check-setup.js.map +1 -0
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -71,6 +71,7 @@ program
|
|
|
71
71
|
.command("doctor")
|
|
72
72
|
.description("Check Node.js version, Claude CLI, and MCP dependencies")
|
|
73
73
|
.option("--fix", "Auto-install missing MCP servers")
|
|
74
|
+
.option("--verbose", "Show detailed diagnostic output including raw MCP server data")
|
|
74
75
|
.action(async (options) => {
|
|
75
76
|
await doctorCommand(options);
|
|
76
77
|
});
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/doctor.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `layout-context doctor` — checks Node.js, Claude CLI, and MCP dependencies.
|
|
3
3
|
* With --fix, automatically installs missing MCP servers.
|
|
4
|
+
* With --verbose, shows raw MCP output and detailed transport/scope info.
|
|
4
5
|
*/
|
|
5
6
|
export declare function doctorCommand(options?: {
|
|
6
7
|
fix?: boolean;
|
|
8
|
+
verbose?: boolean;
|
|
7
9
|
}): Promise<void>;
|
|
8
10
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EhB"}
|
package/dist/src/cli/doctor.js
CHANGED
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
+
import { checkMcpRegistration, addFigmaMcpServer, addPlaywrightMcpServer, testEndpointReachable, } from "./setup-utils.js";
|
|
3
4
|
/**
|
|
4
5
|
* `layout-context doctor` — checks Node.js, Claude CLI, and MCP dependencies.
|
|
5
6
|
* With --fix, automatically installs missing MCP servers.
|
|
7
|
+
* With --verbose, shows raw MCP output and detailed transport/scope info.
|
|
6
8
|
*/
|
|
7
9
|
export async function doctorCommand(options) {
|
|
8
10
|
const autoFix = options?.fix ?? false;
|
|
11
|
+
const verbose = options?.verbose ?? false;
|
|
9
12
|
console.log();
|
|
10
13
|
console.log(chalk.bold("Layout Context — Dependency Check"));
|
|
11
14
|
if (autoFix) {
|
|
12
15
|
console.log(chalk.dim(" Mode: auto-fix enabled"));
|
|
13
16
|
}
|
|
17
|
+
if (verbose) {
|
|
18
|
+
console.log(chalk.dim(" Mode: verbose diagnostics"));
|
|
19
|
+
}
|
|
14
20
|
console.log();
|
|
15
21
|
const results = [
|
|
16
22
|
checkNodeVersion(),
|
|
17
23
|
checkClaudeCli(),
|
|
18
|
-
...checkMcpServers(),
|
|
19
24
|
];
|
|
25
|
+
// MCP server checks (deep Figma diagnostics)
|
|
26
|
+
const mcpResults = await checkMcpServersDeep(verbose);
|
|
27
|
+
results.push(...mcpResults);
|
|
20
28
|
let issues = 0;
|
|
21
29
|
let fixed = 0;
|
|
22
30
|
for (const r of results) {
|
|
23
31
|
if (r.ok) {
|
|
24
32
|
console.log(chalk.green(" ✅ ") + r.label + chalk.dim(` — ${r.detail}`));
|
|
33
|
+
if (r.warning) {
|
|
34
|
+
console.log(chalk.yellow(` ⚠ ${r.warning}`));
|
|
35
|
+
}
|
|
25
36
|
}
|
|
26
37
|
else {
|
|
27
38
|
issues++;
|
|
@@ -29,20 +40,11 @@ export async function doctorCommand(options) {
|
|
|
29
40
|
console.log(chalk.dim(` ${r.detail}`));
|
|
30
41
|
// Attempt auto-fix if --fix and we have a fixCmd
|
|
31
42
|
if (autoFix && r.fixCmd) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
35
|
-
});
|
|
36
|
-
console.log(chalk.green(` ✓ Fixed!`));
|
|
43
|
+
const fixResult = attemptFix(r);
|
|
44
|
+
if (fixResult) {
|
|
37
45
|
fixed++;
|
|
38
46
|
issues--;
|
|
39
47
|
}
|
|
40
|
-
catch {
|
|
41
|
-
console.log(chalk.red(` ✗ Auto-fix failed`));
|
|
42
|
-
if (r.fix) {
|
|
43
|
-
console.log(chalk.cyan(` Run manually: ${r.fix}`));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
48
|
}
|
|
47
49
|
else if (r.fix) {
|
|
48
50
|
console.log(chalk.cyan(` Fix: ${r.fix}`));
|
|
@@ -67,6 +69,44 @@ export async function doctorCommand(options) {
|
|
|
67
69
|
}
|
|
68
70
|
console.log();
|
|
69
71
|
}
|
|
72
|
+
function attemptFix(r) {
|
|
73
|
+
if (!r.fixCmd)
|
|
74
|
+
return false;
|
|
75
|
+
// Use shared utilities for Figma and Playwright
|
|
76
|
+
if (r.label.includes("Figma")) {
|
|
77
|
+
const result = addFigmaMcpServer();
|
|
78
|
+
if (result.success) {
|
|
79
|
+
console.log(chalk.green(` ✓ Fixed: ${result.message}`));
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
console.log(chalk.red(` ✗ Auto-fix failed: ${result.message}`));
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if (r.label.includes("Playwright")) {
|
|
86
|
+
const result = addPlaywrightMcpServer();
|
|
87
|
+
if (result.success) {
|
|
88
|
+
console.log(chalk.green(` ✓ Fixed: ${result.message}`));
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
console.log(chalk.red(` ✗ Auto-fix failed: ${result.message}`));
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// Generic fix via fixCmd
|
|
95
|
+
try {
|
|
96
|
+
execFileSync(r.fixCmd[0], r.fixCmd.slice(1), {
|
|
97
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
98
|
+
});
|
|
99
|
+
console.log(chalk.green(` ✓ Fixed!`));
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
console.log(chalk.red(` ✗ Auto-fix failed`));
|
|
104
|
+
if (r.fix) {
|
|
105
|
+
console.log(chalk.cyan(` Run manually: ${r.fix}`));
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
70
110
|
function checkNodeVersion() {
|
|
71
111
|
const [major] = process.versions.node.split(".").map(Number);
|
|
72
112
|
if (major !== undefined && major >= 18) {
|
|
@@ -102,16 +142,12 @@ function checkClaudeCli() {
|
|
|
102
142
|
};
|
|
103
143
|
}
|
|
104
144
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
145
|
+
/**
|
|
146
|
+
* Deep MCP server checks with Figma-specific diagnostics.
|
|
147
|
+
*/
|
|
148
|
+
async function checkMcpServersDeep(verbose) {
|
|
149
|
+
const state = checkMcpRegistration();
|
|
150
|
+
if (!state) {
|
|
115
151
|
return [
|
|
116
152
|
{
|
|
117
153
|
label: "MCP server list",
|
|
@@ -121,26 +157,94 @@ function checkMcpServers() {
|
|
|
121
157
|
},
|
|
122
158
|
];
|
|
123
159
|
}
|
|
160
|
+
if (verbose) {
|
|
161
|
+
console.log();
|
|
162
|
+
console.log(chalk.dim(" Raw MCP list output:"));
|
|
163
|
+
for (const line of state.rawOutput.split("\n")) {
|
|
164
|
+
if (line.trim()) {
|
|
165
|
+
console.log(chalk.dim(` ${line}`));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
console.log();
|
|
169
|
+
}
|
|
124
170
|
const results = [];
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
171
|
+
// --- Figma MCP (deep check) ---
|
|
172
|
+
if (state.figma.registered) {
|
|
173
|
+
const entry = state.figma.entry;
|
|
174
|
+
let detail = "configured";
|
|
175
|
+
let warning;
|
|
176
|
+
// Transport check
|
|
177
|
+
if (!state.figma.correctTransport) {
|
|
178
|
+
detail += ` (transport: ${entry?.transport ?? "unknown"})`;
|
|
179
|
+
warning =
|
|
180
|
+
"Figma MCP should use HTTP transport for OAuth. " +
|
|
181
|
+
"Re-register with: claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp";
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
detail += " (http transport)";
|
|
185
|
+
}
|
|
186
|
+
// Scope check
|
|
187
|
+
if (!state.figma.correctScope) {
|
|
188
|
+
const scopeNote = `scope: ${entry?.scope ?? "unknown"}`;
|
|
189
|
+
detail += `, ${scopeNote}`;
|
|
190
|
+
if (!warning) {
|
|
191
|
+
warning =
|
|
192
|
+
"Figma MCP is registered at project scope — consider user scope for cross-project availability. " +
|
|
193
|
+
"Re-register with: claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp";
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
detail += ", user scope";
|
|
198
|
+
}
|
|
199
|
+
// Plugin shadow check
|
|
200
|
+
if (state.figma.pluginShadow) {
|
|
201
|
+
warning = warning
|
|
202
|
+
? warning +
|
|
203
|
+
" Also: a Claude plugin is providing a duplicate Figma registration — " +
|
|
204
|
+
"the plugin version uses OAuth that doesn't persist between sessions."
|
|
205
|
+
: "A Claude plugin is providing a duplicate Figma registration. " +
|
|
206
|
+
"The plugin version uses OAuth that doesn't persist between sessions. " +
|
|
207
|
+
"Ensure you also have a proper user-scoped registration.";
|
|
208
|
+
}
|
|
209
|
+
results.push({
|
|
129
210
|
label: "Figma MCP",
|
|
130
211
|
ok: true,
|
|
131
|
-
detail
|
|
132
|
-
|
|
133
|
-
|
|
212
|
+
detail,
|
|
213
|
+
warning,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
results.push({
|
|
134
218
|
label: "Figma MCP",
|
|
135
219
|
ok: false,
|
|
136
220
|
detail: "not found in MCP server list",
|
|
137
221
|
fix: "claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp",
|
|
138
|
-
fixCmd: [
|
|
222
|
+
fixCmd: [
|
|
223
|
+
"claude", "mcp", "add", "--scope", "user", "--transport", "http",
|
|
224
|
+
"figma", "https://mcp.figma.com/mcp",
|
|
225
|
+
],
|
|
139
226
|
requiredBy: "push-to-figma, design-in-figma, url-to-figma",
|
|
140
227
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
228
|
+
}
|
|
229
|
+
// --- Figma endpoint reachability ---
|
|
230
|
+
const reachability = await testEndpointReachable("https://mcp.figma.com/mcp");
|
|
231
|
+
if (reachability.reachable) {
|
|
232
|
+
results.push({
|
|
233
|
+
label: "Figma endpoint",
|
|
234
|
+
ok: true,
|
|
235
|
+
detail: `reachable (HTTP ${reachability.status})`,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
results.push({
|
|
240
|
+
label: "Figma endpoint",
|
|
241
|
+
ok: false,
|
|
242
|
+
detail: `unreachable — ${reachability.error}`,
|
|
243
|
+
fix: "Check your internet connection or firewall settings. Figma MCP connects to https://mcp.figma.com/mcp",
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
// --- Playwright MCP ---
|
|
247
|
+
results.push(state.playwright.registered
|
|
144
248
|
? {
|
|
145
249
|
label: "Playwright MCP",
|
|
146
250
|
ok: true,
|
|
@@ -151,13 +255,14 @@ function checkMcpServers() {
|
|
|
151
255
|
ok: false,
|
|
152
256
|
detail: "not found in MCP server list",
|
|
153
257
|
fix: "claude mcp add --scope user playwright -- npx -y @anthropic-ai/mcp-playwright",
|
|
154
|
-
fixCmd: [
|
|
258
|
+
fixCmd: [
|
|
259
|
+
"claude", "mcp", "add", "--scope", "user",
|
|
260
|
+
"playwright", "--", "npx", "-y", "@anthropic-ai/mcp-playwright",
|
|
261
|
+
],
|
|
155
262
|
requiredBy: "push-to-figma, url-to-figma",
|
|
156
263
|
});
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
mcpListOutput.toLowerCase().includes("layoutdesign");
|
|
160
|
-
results.push(hasLayout
|
|
264
|
+
// --- Layout MCP ---
|
|
265
|
+
results.push(state.layout.registered
|
|
161
266
|
? {
|
|
162
267
|
label: "Layout MCP",
|
|
163
268
|
ok: true,
|
|
@@ -170,6 +275,15 @@ function checkMcpServers() {
|
|
|
170
275
|
fix: "npx @layoutdesign/context install",
|
|
171
276
|
requiredBy: "all design system tools",
|
|
172
277
|
});
|
|
278
|
+
// --- Verbose: show parsed entries ---
|
|
279
|
+
if (verbose && state.servers.length > 0) {
|
|
280
|
+
console.log();
|
|
281
|
+
console.log(chalk.dim(" Parsed MCP servers:"));
|
|
282
|
+
for (const s of state.servers) {
|
|
283
|
+
console.log(chalk.dim(` ${s.name} — transport: ${s.transport}, scope: ${s.scope}`));
|
|
284
|
+
}
|
|
285
|
+
console.log();
|
|
286
|
+
}
|
|
173
287
|
return results;
|
|
174
288
|
}
|
|
175
289
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AA2TA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FhB"}
|
package/dist/src/cli/install.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { execFileSync } from "node:child_process";
|
|
4
5
|
import chalk from "chalk";
|
|
6
|
+
import { addFigmaMcpServer as sharedAddFigma, addPlaywrightMcpServer as sharedAddPlaywright, } from "./setup-utils.js";
|
|
5
7
|
const MCP_CONFIG = {
|
|
6
8
|
command: "npx",
|
|
7
9
|
args: ["-y", "@layoutdesign/context", "serve"],
|
|
@@ -22,6 +24,21 @@ const TARGET_INFO = {
|
|
|
22
24
|
configPath: ".windsurf/mcp.json",
|
|
23
25
|
serverKey: "layout",
|
|
24
26
|
},
|
|
27
|
+
vscode: {
|
|
28
|
+
label: "VS Code / Copilot",
|
|
29
|
+
configPath: ".vscode/mcp.json",
|
|
30
|
+
serverKey: "layout",
|
|
31
|
+
},
|
|
32
|
+
codex: {
|
|
33
|
+
label: "Codex CLI",
|
|
34
|
+
configPath: ".codex/config.json",
|
|
35
|
+
serverKey: "layout",
|
|
36
|
+
},
|
|
37
|
+
gemini: {
|
|
38
|
+
label: "Gemini CLI",
|
|
39
|
+
configPath: ".gemini/settings.json",
|
|
40
|
+
serverKey: "layout",
|
|
41
|
+
},
|
|
25
42
|
};
|
|
26
43
|
function detectTargets() {
|
|
27
44
|
const cwd = process.cwd();
|
|
@@ -47,6 +64,30 @@ function detectTargets() {
|
|
|
47
64
|
if (fs.existsSync(path.join(cwd, ".windsurf"))) {
|
|
48
65
|
detected.push("windsurf");
|
|
49
66
|
}
|
|
67
|
+
// VS Code / GitHub Copilot — .vscode/ dir
|
|
68
|
+
if (fs.existsSync(path.join(cwd, ".vscode"))) {
|
|
69
|
+
detected.push("vscode");
|
|
70
|
+
}
|
|
71
|
+
// Codex CLI — check if `codex` CLI is available or ~/.codex/ exists
|
|
72
|
+
try {
|
|
73
|
+
execFileSync("which", ["codex"], { stdio: "ignore" });
|
|
74
|
+
detected.push("codex");
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
if (fs.existsSync(path.join(os.homedir(), ".codex"))) {
|
|
78
|
+
detected.push("codex");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Gemini CLI — check if `gemini` CLI is available or ~/.gemini/ exists
|
|
82
|
+
try {
|
|
83
|
+
execFileSync("which", ["gemini"], { stdio: "ignore" });
|
|
84
|
+
detected.push("gemini");
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
if (fs.existsSync(path.join(os.homedir(), ".gemini"))) {
|
|
88
|
+
detected.push("gemini");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
50
91
|
return detected;
|
|
51
92
|
}
|
|
52
93
|
/**
|
|
@@ -118,68 +159,85 @@ function addMcpServerViaFile(target) {
|
|
|
118
159
|
console.log(chalk.green(" ✓"), `${info.label}: added to ${info.configPath}`);
|
|
119
160
|
return true;
|
|
120
161
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
execFileSync("claude", [
|
|
134
|
-
"mcp", "add", "--scope", "user", "--transport", "http",
|
|
135
|
-
"figma", "https://mcp.figma.com/mcp",
|
|
136
|
-
], { stdio: ["pipe", "pipe", "pipe"] });
|
|
137
|
-
console.log(chalk.green(" ✓"), "Figma MCP: registered globally (OAuth — authenticate once in Claude Code)");
|
|
138
|
-
return true;
|
|
162
|
+
function addMcpServerViaVsCode() {
|
|
163
|
+
const configFile = path.join(process.cwd(), ".vscode", "mcp.json");
|
|
164
|
+
const configDir = path.dirname(configFile);
|
|
165
|
+
let config = {};
|
|
166
|
+
if (fs.existsSync(configFile)) {
|
|
167
|
+
try {
|
|
168
|
+
config = JSON.parse(fs.readFileSync(configFile, "utf-8"));
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
console.log(chalk.yellow("Warning:"), "Could not parse .vscode/mcp.json, creating new config.");
|
|
172
|
+
}
|
|
139
173
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
174
|
+
if (config.servers && "layout" in config.servers) {
|
|
175
|
+
console.log(chalk.dim(" ↳"), "VS Code / Copilot: already configured in .vscode/mcp.json");
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
if (!config.servers)
|
|
179
|
+
config.servers = {};
|
|
180
|
+
config.servers.layout = {
|
|
181
|
+
type: "stdio",
|
|
182
|
+
command: "npx",
|
|
183
|
+
args: ["-y", "@layoutdesign/context", "serve"],
|
|
184
|
+
};
|
|
185
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
186
|
+
fs.writeFileSync(configFile, JSON.stringify(config, null, 2) + "\n");
|
|
187
|
+
console.log(chalk.green(" ✓"), "VS Code / Copilot: added to .vscode/mcp.json");
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
function addMcpServerGlobal(target) {
|
|
191
|
+
const info = TARGET_INFO[target];
|
|
192
|
+
const configFile = path.join(os.homedir(), info.configPath);
|
|
193
|
+
const configDir = path.dirname(configFile);
|
|
194
|
+
let config = {};
|
|
195
|
+
if (fs.existsSync(configFile)) {
|
|
196
|
+
try {
|
|
197
|
+
config = JSON.parse(fs.readFileSync(configFile, "utf-8"));
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
console.log(chalk.yellow("Warning:"), `Could not parse ~/${info.configPath}, creating new config.`);
|
|
146
201
|
}
|
|
147
|
-
|
|
148
|
-
|
|
202
|
+
}
|
|
203
|
+
if (config.mcpServers && info.serverKey in config.mcpServers) {
|
|
204
|
+
console.log(chalk.dim(" ↳"), `${info.label}: already configured in ~/${info.configPath}`);
|
|
149
205
|
return false;
|
|
150
206
|
}
|
|
207
|
+
if (!config.mcpServers) {
|
|
208
|
+
config.mcpServers = {};
|
|
209
|
+
}
|
|
210
|
+
config.mcpServers[info.serverKey] = MCP_CONFIG;
|
|
211
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
212
|
+
fs.writeFileSync(configFile, JSON.stringify(config, null, 2) + "\n");
|
|
213
|
+
console.log(chalk.green(" ✓"), `${info.label}: added to ~/${info.configPath}`);
|
|
214
|
+
return true;
|
|
151
215
|
}
|
|
152
216
|
/**
|
|
153
|
-
* Add
|
|
154
|
-
* Uses --scope user so it's available across all projects.
|
|
217
|
+
* Add Figma MCP server — delegates to shared utility, logs result.
|
|
155
218
|
*/
|
|
156
|
-
function
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
161
|
-
});
|
|
162
|
-
if (list.toLowerCase().includes("playwright")) {
|
|
163
|
-
console.log(chalk.dim(" ↳"), "Playwright MCP: already configured");
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
219
|
+
function addFigmaMcpServer() {
|
|
220
|
+
const result = sharedAddFigma();
|
|
221
|
+
if (result.success) {
|
|
222
|
+
console.log(chalk.green(" ✓"), `Figma MCP: ${result.message}`);
|
|
166
223
|
}
|
|
167
|
-
|
|
168
|
-
|
|
224
|
+
else {
|
|
225
|
+
console.log(chalk.yellow(" ⚠"), `Figma MCP: ${result.message}`);
|
|
169
226
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
227
|
+
return result.success;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Add Playwright MCP server — delegates to shared utility, logs result.
|
|
231
|
+
*/
|
|
232
|
+
function addPlaywrightMcpServer() {
|
|
233
|
+
const result = sharedAddPlaywright();
|
|
234
|
+
if (result.success) {
|
|
235
|
+
console.log(chalk.green(" ✓"), `Playwright MCP: ${result.message}`);
|
|
177
236
|
}
|
|
178
|
-
|
|
179
|
-
console.log(chalk.yellow(" ⚠"),
|
|
180
|
-
console.log(chalk.dim(" Run manually:"), chalk.cyan("npx @anthropic-ai/mcp-playwright install"));
|
|
181
|
-
return false;
|
|
237
|
+
else {
|
|
238
|
+
console.log(chalk.yellow(" ⚠"), `Playwright MCP: ${result.message}`);
|
|
182
239
|
}
|
|
240
|
+
return result.success;
|
|
183
241
|
}
|
|
184
242
|
export async function installCommand(options) {
|
|
185
243
|
console.log();
|
|
@@ -201,7 +259,7 @@ export async function installCommand(options) {
|
|
|
201
259
|
if (options.target) {
|
|
202
260
|
const t = options.target.toLowerCase();
|
|
203
261
|
if (!(t in TARGET_INFO)) {
|
|
204
|
-
console.log(chalk.red("Error:"), `Unknown target "${options.target}". Use: claude, cursor, or
|
|
262
|
+
console.log(chalk.red("Error:"), `Unknown target "${options.target}". Use: claude, cursor, windsurf, vscode, codex, or gemini`);
|
|
205
263
|
return;
|
|
206
264
|
}
|
|
207
265
|
targets = [t];
|
|
@@ -226,6 +284,14 @@ export async function installCommand(options) {
|
|
|
226
284
|
if (addClaudeMcpServer(options.global ?? false))
|
|
227
285
|
installed++;
|
|
228
286
|
}
|
|
287
|
+
else if (target === "vscode") {
|
|
288
|
+
if (addMcpServerViaVsCode())
|
|
289
|
+
installed++;
|
|
290
|
+
}
|
|
291
|
+
else if (target === "codex" || target === "gemini") {
|
|
292
|
+
if (addMcpServerGlobal(target))
|
|
293
|
+
installed++;
|
|
294
|
+
}
|
|
229
295
|
else {
|
|
230
296
|
if (addMcpServerViaFile(target))
|
|
231
297
|
installed++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface McpServerEntry {
|
|
2
|
+
name: string;
|
|
3
|
+
scope: "user" | "project" | "unknown";
|
|
4
|
+
transport: "http" | "stdio" | "unknown";
|
|
5
|
+
raw: string;
|
|
6
|
+
}
|
|
7
|
+
export interface McpRegistrationState {
|
|
8
|
+
/** Raw output from `claude mcp list` */
|
|
9
|
+
rawOutput: string;
|
|
10
|
+
/** All detected MCP servers */
|
|
11
|
+
servers: McpServerEntry[];
|
|
12
|
+
/** Figma-specific state */
|
|
13
|
+
figma: {
|
|
14
|
+
registered: boolean;
|
|
15
|
+
entry?: McpServerEntry;
|
|
16
|
+
/** True if a plugin-provided entry shadows the proper registration */
|
|
17
|
+
pluginShadow: boolean;
|
|
18
|
+
/** True if transport is http (required for OAuth) */
|
|
19
|
+
correctTransport: boolean;
|
|
20
|
+
/** True if registered at user scope */
|
|
21
|
+
correctScope: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** Playwright state */
|
|
24
|
+
playwright: {
|
|
25
|
+
registered: boolean;
|
|
26
|
+
entry?: McpServerEntry;
|
|
27
|
+
};
|
|
28
|
+
/** Layout state */
|
|
29
|
+
layout: {
|
|
30
|
+
registered: boolean;
|
|
31
|
+
entry?: McpServerEntry;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface FixResult {
|
|
35
|
+
server: string;
|
|
36
|
+
success: boolean;
|
|
37
|
+
message: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run `claude mcp list` and parse the output into structured state.
|
|
41
|
+
* Returns null if the Claude CLI is unavailable.
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkMcpRegistration(): McpRegistrationState | null;
|
|
44
|
+
/**
|
|
45
|
+
* Register Figma MCP server via `claude mcp add --scope user --transport http`.
|
|
46
|
+
*
|
|
47
|
+
* Important: we always attempt registration and let `claude mcp add` handle
|
|
48
|
+
* the "already registered" case. The plugin-provided registration
|
|
49
|
+
* (`figma@claude-plugins-official`) uses OAuth that doesn't persist between
|
|
50
|
+
* sessions, so we must ensure a proper user-scoped entry exists.
|
|
51
|
+
*/
|
|
52
|
+
export declare function addFigmaMcpServer(): FixResult;
|
|
53
|
+
/**
|
|
54
|
+
* Register Playwright MCP server via `claude mcp add --scope user`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function addPlaywrightMcpServer(): FixResult;
|
|
57
|
+
/**
|
|
58
|
+
* Test whether an HTTP endpoint is reachable (HEAD request with timeout).
|
|
59
|
+
*/
|
|
60
|
+
export declare function testEndpointReachable(url: string, timeoutMs?: number): Promise<{
|
|
61
|
+
reachable: boolean;
|
|
62
|
+
status?: number;
|
|
63
|
+
error?: string;
|
|
64
|
+
}>;
|
|
65
|
+
//# sourceMappingURL=setup-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-utils.d.ts","sourceRoot":"","sources":["../../../src/cli/setup-utils.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACtC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,2BAA2B;IAC3B,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,sEAAsE;QACtE,YAAY,EAAE,OAAO,CAAC;QACtB,qDAAqD;QACrD,gBAAgB,EAAE,OAAO,CAAC;QAC1B,uCAAuC;QACvC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,uBAAuB;IACvB,UAAU,EAAE;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,cAAc,CAAC;KACxB,CAAC;IACF,mBAAmB;IACnB,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,cAAc,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,GAAG,IAAI,CAgDlE;AA6ED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CA+B7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,CA4ClD;AAMD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,SAAS,SAAQ,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAclE"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
/* ------------------------------------------------------------------ */
|
|
3
|
+
/* Check MCP registration */
|
|
4
|
+
/* ------------------------------------------------------------------ */
|
|
5
|
+
/**
|
|
6
|
+
* Run `claude mcp list` and parse the output into structured state.
|
|
7
|
+
* Returns null if the Claude CLI is unavailable.
|
|
8
|
+
*/
|
|
9
|
+
export function checkMcpRegistration() {
|
|
10
|
+
let rawOutput;
|
|
11
|
+
try {
|
|
12
|
+
rawOutput = execFileSync("claude", ["mcp", "list"], {
|
|
13
|
+
encoding: "utf-8",
|
|
14
|
+
timeout: 10_000,
|
|
15
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const servers = parseMcpList(rawOutput);
|
|
22
|
+
const lower = rawOutput.toLowerCase();
|
|
23
|
+
// Figma analysis
|
|
24
|
+
const figmaEntry = servers.find((s) => s.name === "figma");
|
|
25
|
+
const hasPluginShadow = lower.includes("figma@claude-plugins") ||
|
|
26
|
+
lower.includes("claude-plugins-official");
|
|
27
|
+
// Playwright analysis
|
|
28
|
+
const playwrightEntry = servers.find((s) => s.name === "playwright");
|
|
29
|
+
// Layout analysis
|
|
30
|
+
const layoutEntry = servers.find((s) => s.name === "layout" || s.name === "layoutdesign");
|
|
31
|
+
return {
|
|
32
|
+
rawOutput,
|
|
33
|
+
servers,
|
|
34
|
+
figma: {
|
|
35
|
+
registered: !!figmaEntry,
|
|
36
|
+
entry: figmaEntry,
|
|
37
|
+
pluginShadow: hasPluginShadow,
|
|
38
|
+
correctTransport: figmaEntry?.transport === "http",
|
|
39
|
+
correctScope: figmaEntry?.scope === "user",
|
|
40
|
+
},
|
|
41
|
+
playwright: {
|
|
42
|
+
registered: !!playwrightEntry,
|
|
43
|
+
entry: playwrightEntry,
|
|
44
|
+
},
|
|
45
|
+
layout: {
|
|
46
|
+
registered: !!layoutEntry,
|
|
47
|
+
entry: layoutEntry,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse `claude mcp list` output into individual server entries.
|
|
53
|
+
*
|
|
54
|
+
* The output format varies but typically looks like:
|
|
55
|
+
* name: figma (user, http)
|
|
56
|
+
* name: layout (project, stdio)
|
|
57
|
+
*
|
|
58
|
+
* We parse flexibly to handle format changes.
|
|
59
|
+
*/
|
|
60
|
+
function parseMcpList(raw) {
|
|
61
|
+
const entries = [];
|
|
62
|
+
const lines = raw.split("\n").filter((l) => l.trim());
|
|
63
|
+
for (const line of lines) {
|
|
64
|
+
const lower = line.toLowerCase().trim();
|
|
65
|
+
// Skip headers, separators, empty lines
|
|
66
|
+
if (!lower || lower.startsWith("─") || lower.startsWith("="))
|
|
67
|
+
continue;
|
|
68
|
+
// Try to extract server name — look for common patterns
|
|
69
|
+
// Pattern: "name: serverName" or "serverName (scope, transport)" or just "serverName"
|
|
70
|
+
let name;
|
|
71
|
+
let scope = "unknown";
|
|
72
|
+
let transport = "unknown";
|
|
73
|
+
// Pattern: " serverName type: stdio scope: user"
|
|
74
|
+
const colonMatch = lower.match(/^\s*(\S+)\s+.*?type:\s*(http|stdio).*?scope:\s*(user|project)/);
|
|
75
|
+
if (colonMatch) {
|
|
76
|
+
name = colonMatch[1];
|
|
77
|
+
transport = colonMatch[2];
|
|
78
|
+
scope = colonMatch[3];
|
|
79
|
+
}
|
|
80
|
+
// Pattern: "serverName (user, http)" or "serverName http user"
|
|
81
|
+
if (!name) {
|
|
82
|
+
const parenMatch = lower.match(/^\s*(\S+)\s*\(([^)]+)\)/);
|
|
83
|
+
if (parenMatch) {
|
|
84
|
+
name = parenMatch[1];
|
|
85
|
+
const inner = parenMatch[2];
|
|
86
|
+
if (inner.includes("http"))
|
|
87
|
+
transport = "http";
|
|
88
|
+
else if (inner.includes("stdio"))
|
|
89
|
+
transport = "stdio";
|
|
90
|
+
if (inner.includes("user"))
|
|
91
|
+
scope = "user";
|
|
92
|
+
else if (inner.includes("project"))
|
|
93
|
+
scope = "project";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Fallback: just grab the first word if the line contains known server names
|
|
97
|
+
if (!name) {
|
|
98
|
+
const words = lower.split(/\s+/);
|
|
99
|
+
const knownNames = ["figma", "layout", "layoutdesign", "playwright"];
|
|
100
|
+
const found = words.find((w) => knownNames.includes(w));
|
|
101
|
+
if (found) {
|
|
102
|
+
name = found;
|
|
103
|
+
// Try to infer transport and scope from rest of line
|
|
104
|
+
if (lower.includes("http"))
|
|
105
|
+
transport = "http";
|
|
106
|
+
else if (lower.includes("stdio"))
|
|
107
|
+
transport = "stdio";
|
|
108
|
+
if (lower.includes("user"))
|
|
109
|
+
scope = "user";
|
|
110
|
+
else if (lower.includes("project"))
|
|
111
|
+
scope = "project";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (name) {
|
|
115
|
+
entries.push({ name, scope, transport, raw: line.trim() });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return entries;
|
|
119
|
+
}
|
|
120
|
+
/* ------------------------------------------------------------------ */
|
|
121
|
+
/* Fix / register MCP servers */
|
|
122
|
+
/* ------------------------------------------------------------------ */
|
|
123
|
+
/**
|
|
124
|
+
* Register Figma MCP server via `claude mcp add --scope user --transport http`.
|
|
125
|
+
*
|
|
126
|
+
* Important: we always attempt registration and let `claude mcp add` handle
|
|
127
|
+
* the "already registered" case. The plugin-provided registration
|
|
128
|
+
* (`figma@claude-plugins-official`) uses OAuth that doesn't persist between
|
|
129
|
+
* sessions, so we must ensure a proper user-scoped entry exists.
|
|
130
|
+
*/
|
|
131
|
+
export function addFigmaMcpServer() {
|
|
132
|
+
try {
|
|
133
|
+
execFileSync("claude", [
|
|
134
|
+
"mcp", "add", "--scope", "user", "--transport", "http",
|
|
135
|
+
"figma", "https://mcp.figma.com/mcp",
|
|
136
|
+
], { stdio: ["pipe", "pipe", "pipe"] });
|
|
137
|
+
return {
|
|
138
|
+
server: "figma",
|
|
139
|
+
success: true,
|
|
140
|
+
message: "Registered globally (OAuth — authenticate once in Claude Code)",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const stderr = err.stderr?.toString() ?? "";
|
|
145
|
+
if (stderr.includes("already") || stderr.includes("exists")) {
|
|
146
|
+
return {
|
|
147
|
+
server: "figma",
|
|
148
|
+
success: true,
|
|
149
|
+
message: "Already configured at user scope",
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
server: "figma",
|
|
154
|
+
success: false,
|
|
155
|
+
message: "Could not register automatically. Run manually: claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp",
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Register Playwright MCP server via `claude mcp add --scope user`.
|
|
161
|
+
*/
|
|
162
|
+
export function addPlaywrightMcpServer() {
|
|
163
|
+
// Check if already registered
|
|
164
|
+
try {
|
|
165
|
+
const list = execFileSync("claude", ["mcp", "list"], {
|
|
166
|
+
encoding: "utf-8",
|
|
167
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
168
|
+
});
|
|
169
|
+
if (list.toLowerCase().includes("playwright")) {
|
|
170
|
+
return {
|
|
171
|
+
server: "playwright",
|
|
172
|
+
success: true,
|
|
173
|
+
message: "Already configured",
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return {
|
|
179
|
+
server: "playwright",
|
|
180
|
+
success: false,
|
|
181
|
+
message: "Could not check MCP list",
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
execFileSync("claude", [
|
|
186
|
+
"mcp", "add", "--scope", "user",
|
|
187
|
+
"playwright", "--", "npx", "-y", "@anthropic-ai/mcp-playwright",
|
|
188
|
+
], { stdio: ["pipe", "pipe", "pipe"] });
|
|
189
|
+
return {
|
|
190
|
+
server: "playwright",
|
|
191
|
+
success: true,
|
|
192
|
+
message: "Registered globally",
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return {
|
|
197
|
+
server: "playwright",
|
|
198
|
+
success: false,
|
|
199
|
+
message: "Could not register automatically. Run manually: claude mcp add --scope user playwright -- npx -y @anthropic-ai/mcp-playwright",
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/* ------------------------------------------------------------------ */
|
|
204
|
+
/* Endpoint reachability */
|
|
205
|
+
/* ------------------------------------------------------------------ */
|
|
206
|
+
/**
|
|
207
|
+
* Test whether an HTTP endpoint is reachable (HEAD request with timeout).
|
|
208
|
+
*/
|
|
209
|
+
export async function testEndpointReachable(url, timeoutMs = 5_000) {
|
|
210
|
+
try {
|
|
211
|
+
const controller = new AbortController();
|
|
212
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
213
|
+
const res = await fetch(url, {
|
|
214
|
+
method: "HEAD",
|
|
215
|
+
signal: controller.signal,
|
|
216
|
+
});
|
|
217
|
+
clearTimeout(timer);
|
|
218
|
+
return { reachable: true, status: res.status };
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
222
|
+
return { reachable: false, error: msg };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=setup-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-utils.js","sourceRoot":"","sources":["../../../src/cli/setup-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmHjD"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -19,6 +19,7 @@ import * as urlToFigma from "./tools/url-to-figma.js";
|
|
|
19
19
|
import * as designInFigma from "./tools/design-in-figma.js";
|
|
20
20
|
import * as updateTokens from "./tools/update-tokens.js";
|
|
21
21
|
import * as getScreenshots from "./tools/get-screenshots.js";
|
|
22
|
+
import * as checkSetup from "./tools/check-setup.js";
|
|
22
23
|
/**
|
|
23
24
|
* Start the Layout Context MCP server.
|
|
24
25
|
* Loads the kit from the current working directory and registers all tools.
|
|
@@ -44,7 +45,7 @@ export async function startServer() {
|
|
|
44
45
|
name: "layout-context",
|
|
45
46
|
version: pkg.version,
|
|
46
47
|
});
|
|
47
|
-
// Register all
|
|
48
|
+
// Register all 12 tools
|
|
48
49
|
server.tool(getDesignSystem.name, getDesignSystem.description, getDesignSystem.inputSchema, getDesignSystem.handler(kit));
|
|
49
50
|
server.tool(getTokens.name, getTokens.description, getTokens.inputSchema, getTokens.handler(kit));
|
|
50
51
|
server.tool(getComponent.name, getComponent.description, getComponent.inputSchema, getComponent.handler(kit));
|
|
@@ -56,6 +57,7 @@ export async function startServer() {
|
|
|
56
57
|
server.tool(designInFigma.name, designInFigma.description, designInFigma.inputSchema, designInFigma.handler(kit));
|
|
57
58
|
server.tool(updateTokens.name, updateTokens.description, updateTokens.inputSchema, updateTokens.handler());
|
|
58
59
|
server.tool(getScreenshots.name, getScreenshots.description, getScreenshots.inputSchema, getScreenshots.handler());
|
|
60
|
+
server.tool(checkSetup.name, checkSetup.description, checkSetup.inputSchema, checkSetup.handler());
|
|
59
61
|
// Connect via stdio
|
|
60
62
|
const transport = new StdioServerTransport();
|
|
61
63
|
await server.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,+DAA+D;AAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAwB,CAAC;AAEpE,eAAe;AACf,OAAO,KAAK,eAAe,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const name = "check-setup";
|
|
3
|
+
export declare const description: string;
|
|
4
|
+
export declare const inputSchema: {
|
|
5
|
+
focus: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
figma: "figma";
|
|
7
|
+
playwright: "playwright";
|
|
8
|
+
layout: "layout";
|
|
9
|
+
all: "all";
|
|
10
|
+
}>>;
|
|
11
|
+
fix: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
};
|
|
13
|
+
type Input = {
|
|
14
|
+
focus?: "all" | "figma" | "playwright" | "layout";
|
|
15
|
+
fix?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function handler(): (input: Input) => Promise<{
|
|
18
|
+
content: {
|
|
19
|
+
type: "text";
|
|
20
|
+
text: string;
|
|
21
|
+
}[];
|
|
22
|
+
}>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=check-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-setup.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/check-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAElC,eAAO,MAAM,WAAW,QAKoD,CAAC;AAE7E,eAAO,MAAM,WAAW;;;;;;;;CAWvB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAgB,OAAO,KACP,OAAO,KAAK;;;;;GAwC3B"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { checkMcpRegistration, addFigmaMcpServer, addPlaywrightMcpServer, testEndpointReachable, } from "../../cli/setup-utils.js";
|
|
3
|
+
export const name = "check-setup";
|
|
4
|
+
export const description = "Diagnose and optionally fix MCP server setup issues. " +
|
|
5
|
+
"Call this when Figma tools (push-to-figma, design-in-figma, url-to-figma) aren't working, " +
|
|
6
|
+
"or when the user reports that Figma MCP appears listed but isn't connected. " +
|
|
7
|
+
"Checks registration, transport type, OAuth status, and endpoint reachability. " +
|
|
8
|
+
"With fix=true, attempts to re-register missing or misconfigured servers.";
|
|
9
|
+
export const inputSchema = {
|
|
10
|
+
focus: z
|
|
11
|
+
.enum(["all", "figma", "playwright", "layout"])
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("What to check. Default: 'all'"),
|
|
14
|
+
fix: z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("If true, attempt to auto-fix issues (re-register MCP servers). Default: false"),
|
|
18
|
+
};
|
|
19
|
+
export function handler() {
|
|
20
|
+
return async (input) => {
|
|
21
|
+
const focus = input.focus ?? "all";
|
|
22
|
+
const shouldFix = input.fix ?? false;
|
|
23
|
+
const sections = [];
|
|
24
|
+
sections.push("## Layout Setup Check\n");
|
|
25
|
+
// Check MCP registration
|
|
26
|
+
const state = checkMcpRegistration();
|
|
27
|
+
if (!state) {
|
|
28
|
+
sections.push("### Claude CLI ❌\n" +
|
|
29
|
+
"- Could not run `claude mcp list`\n" +
|
|
30
|
+
"- The Claude CLI may not be installed or not in PATH\n" +
|
|
31
|
+
"- Install: https://docs.anthropic.com/en/docs/claude-code\n");
|
|
32
|
+
return { content: [{ type: "text", text: sections.join("\n") }] };
|
|
33
|
+
}
|
|
34
|
+
// --- Figma MCP ---
|
|
35
|
+
if (focus === "all" || focus === "figma") {
|
|
36
|
+
sections.push(await checkFigma(state, shouldFix));
|
|
37
|
+
}
|
|
38
|
+
// --- Playwright MCP ---
|
|
39
|
+
if (focus === "all" || focus === "playwright") {
|
|
40
|
+
sections.push(checkPlaywright(state, shouldFix));
|
|
41
|
+
}
|
|
42
|
+
// --- Layout MCP ---
|
|
43
|
+
if (focus === "all" || focus === "layout") {
|
|
44
|
+
sections.push(checkLayout(state));
|
|
45
|
+
}
|
|
46
|
+
// --- Next Steps ---
|
|
47
|
+
sections.push(buildNextSteps(state, shouldFix));
|
|
48
|
+
return { content: [{ type: "text", text: sections.join("\n") }] };
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function checkFigma(state, shouldFix) {
|
|
52
|
+
const lines = [];
|
|
53
|
+
if (state.figma.registered) {
|
|
54
|
+
const entry = state.figma.entry;
|
|
55
|
+
const issues = [];
|
|
56
|
+
// Check transport
|
|
57
|
+
if (!state.figma.correctTransport) {
|
|
58
|
+
issues.push(`- **Wrong transport:** Using \`${entry?.transport ?? "unknown"}\` but Figma MCP requires \`http\` transport for OAuth`);
|
|
59
|
+
}
|
|
60
|
+
// Check scope
|
|
61
|
+
if (!state.figma.correctScope) {
|
|
62
|
+
issues.push(`- **Scope warning:** Registered at \`${entry?.scope ?? "unknown"}\` scope — \`user\` scope is recommended for cross-project availability`);
|
|
63
|
+
}
|
|
64
|
+
// Check plugin shadow
|
|
65
|
+
if (state.figma.pluginShadow) {
|
|
66
|
+
issues.push("- **Plugin shadow detected:** A Claude plugin is providing a duplicate Figma registration. " +
|
|
67
|
+
"The plugin version uses OAuth that doesn't persist between sessions — " +
|
|
68
|
+
"this is the most common cause of 'listed but not connected' issues");
|
|
69
|
+
}
|
|
70
|
+
if (issues.length === 0) {
|
|
71
|
+
lines.push(`### Figma MCP ✅\n` +
|
|
72
|
+
`- Status: registered (${entry?.scope ?? "user"} scope, ${entry?.transport ?? "http"} transport)\n` +
|
|
73
|
+
`- If tools still aren't working, you may need to re-authenticate with Figma OAuth\n` +
|
|
74
|
+
`- Try restarting your Claude Code session — you'll be prompted to authenticate\n`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const icon = !state.figma.correctTransport || state.figma.pluginShadow ? "⚠️" : "✅";
|
|
78
|
+
lines.push(`### Figma MCP ${icon}\n`);
|
|
79
|
+
lines.push(`- Status: registered (${entry?.scope ?? "unknown"} scope, ${entry?.transport ?? "unknown"} transport)\n`);
|
|
80
|
+
lines.push(...issues);
|
|
81
|
+
lines.push("");
|
|
82
|
+
// Attempt fix
|
|
83
|
+
if (shouldFix &&
|
|
84
|
+
(!state.figma.correctTransport || state.figma.pluginShadow)) {
|
|
85
|
+
const result = addFigmaMcpServer();
|
|
86
|
+
if (result.success) {
|
|
87
|
+
lines.push(`- **Fix applied:** ${result.message}\n`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
lines.push(`- **Fix failed:** ${result.message}\n`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (!state.figma.correctTransport || state.figma.pluginShadow) {
|
|
94
|
+
lines.push("- **To fix:** Run `claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp`\n" +
|
|
95
|
+
"- Or call this tool again with `fix: true`\n");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
lines.push("### Figma MCP ❌\n");
|
|
101
|
+
lines.push("- Status: not registered\n");
|
|
102
|
+
lines.push("- Required for: push-to-figma, design-in-figma, url-to-figma\n");
|
|
103
|
+
if (shouldFix) {
|
|
104
|
+
const result = addFigmaMcpServer();
|
|
105
|
+
if (result.success) {
|
|
106
|
+
lines.push(`- **Fix applied:** ${result.message}\n`);
|
|
107
|
+
lines.push("- **Action needed:** Restart Claude Code to activate, then authenticate with Figma when prompted\n");
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
lines.push(`- **Fix failed:** ${result.message}\n`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
lines.push("- **To fix:** Run `claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp`\n" +
|
|
115
|
+
"- Or call this tool again with `fix: true`\n");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Endpoint reachability
|
|
119
|
+
const reachability = await testEndpointReachable("https://mcp.figma.com/mcp");
|
|
120
|
+
if (reachability.reachable) {
|
|
121
|
+
lines.push(`- Endpoint: reachable (HTTP ${reachability.status})\n`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
lines.push(`- Endpoint: **unreachable** — ${reachability.error}\n` +
|
|
125
|
+
"- Check internet connection or firewall settings\n");
|
|
126
|
+
}
|
|
127
|
+
return lines.join("\n");
|
|
128
|
+
}
|
|
129
|
+
function checkPlaywright(state, shouldFix) {
|
|
130
|
+
const lines = [];
|
|
131
|
+
if (state.playwright.registered) {
|
|
132
|
+
lines.push("### Playwright MCP ✅\n" + "- Status: registered\n");
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
lines.push("### Playwright MCP ❌\n");
|
|
136
|
+
lines.push("- Status: not registered\n");
|
|
137
|
+
lines.push("- Required for: push-to-figma, url-to-figma\n");
|
|
138
|
+
if (shouldFix) {
|
|
139
|
+
const result = addPlaywrightMcpServer();
|
|
140
|
+
if (result.success) {
|
|
141
|
+
lines.push(`- **Fix applied:** ${result.message}\n`);
|
|
142
|
+
lines.push("- **Action needed:** Restart Claude Code to activate\n");
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
lines.push(`- **Fix failed:** ${result.message}\n`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
lines.push("- **To fix:** Run `claude mcp add --scope user playwright -- npx -y @anthropic-ai/mcp-playwright`\n" +
|
|
150
|
+
"- Or call this tool again with `fix: true`\n");
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return lines.join("\n");
|
|
154
|
+
}
|
|
155
|
+
function checkLayout(state) {
|
|
156
|
+
if (state.layout.registered) {
|
|
157
|
+
return ("### Layout MCP ✅\n" +
|
|
158
|
+
"- Status: connected (you're using it right now!)\n");
|
|
159
|
+
}
|
|
160
|
+
// If they're calling this tool, Layout IS connected even if not in the list
|
|
161
|
+
// (the tool itself runs inside the Layout MCP server)
|
|
162
|
+
return ("### Layout MCP ✅\n" +
|
|
163
|
+
"- Status: connected (this tool is running inside it)\n" +
|
|
164
|
+
"- Note: not found in `claude mcp list` — may be registered under a different name or at project scope\n");
|
|
165
|
+
}
|
|
166
|
+
function buildNextSteps(state, fixApplied) {
|
|
167
|
+
const steps = [];
|
|
168
|
+
steps.push("### Next Steps\n");
|
|
169
|
+
if (fixApplied) {
|
|
170
|
+
steps.push("1. **Restart Claude Code** to activate the changes\n" +
|
|
171
|
+
"2. When prompted, **authenticate with Figma** (OAuth)\n" +
|
|
172
|
+
"3. Try your Figma command again\n");
|
|
173
|
+
return steps.join("");
|
|
174
|
+
}
|
|
175
|
+
const hasIssues = !state.figma.registered ||
|
|
176
|
+
!state.figma.correctTransport ||
|
|
177
|
+
state.figma.pluginShadow ||
|
|
178
|
+
!state.playwright.registered;
|
|
179
|
+
if (!hasIssues) {
|
|
180
|
+
steps.push("Everything looks correctly configured. If Figma tools still aren't working:\n\n" +
|
|
181
|
+
"1. **Restart Claude Code** — this forces MCP servers to reconnect\n" +
|
|
182
|
+
"2. **Re-authenticate with Figma** — OAuth tokens may have expired\n" +
|
|
183
|
+
"3. **Check Figma permissions** — ensure your Figma account has edit access to the target file\n" +
|
|
184
|
+
"4. Run this tool again with `fix: true` to re-register servers\n");
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
steps.push("Issues were found. To fix automatically:\n\n" +
|
|
188
|
+
'1. Call `check-setup` with `fix: true` to re-register servers\n' +
|
|
189
|
+
"2. **Restart Claude Code** after fixes are applied\n" +
|
|
190
|
+
"3. **Authenticate with Figma** when prompted (OAuth)\n" +
|
|
191
|
+
"4. Try your Figma command again\n");
|
|
192
|
+
}
|
|
193
|
+
return steps.join("");
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=check-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-setup.js","sourceRoot":"","sources":["../../../../src/mcp/tools/check-setup.ts"],"names":[],"mappings":"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"}
|