@layoutdesign/context 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cli.js +10 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/cli/scan.d.ts +8 -0
- package/dist/src/cli/scan.d.ts.map +1 -0
- package/dist/src/cli/scan.js +143 -0
- package/dist/src/cli/scan.js.map +1 -0
- package/dist/src/cli/setup-utils.d.ts +7 -0
- package/dist/src/cli/setup-utils.d.ts.map +1 -1
- package/dist/src/cli/setup-utils.js +52 -1
- package/dist/src/cli/setup-utils.js.map +1 -1
- package/dist/src/integrations/codebase-scan.d.ts +46 -0
- package/dist/src/integrations/codebase-scan.d.ts.map +1 -0
- package/dist/src/integrations/codebase-scan.js +231 -0
- package/dist/src/integrations/codebase-scan.js.map +1 -0
- package/dist/src/integrations/storybook.d.ts +36 -0
- package/dist/src/integrations/storybook.d.ts.map +1 -0
- package/dist/src/integrations/storybook.js +124 -0
- package/dist/src/integrations/storybook.js.map +1 -0
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +75 -2
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/check-setup.js +6 -1
- package/dist/src/mcp/tools/check-setup.js.map +1 -1
- package/dist/src/mcp/tools/design-in-figma.d.ts.map +1 -1
- package/dist/src/mcp/tools/design-in-figma.js +73 -80
- package/dist/src/mcp/tools/design-in-figma.js.map +1 -1
- package/dist/src/mcp/tools/list-components.d.ts +2 -1
- package/dist/src/mcp/tools/list-components.d.ts.map +1 -1
- package/dist/src/mcp/tools/list-components.js +50 -24
- package/dist/src/mcp/tools/list-components.js.map +1 -1
- package/dist/src/mcp/tools/push-to-figma.d.ts +8 -3
- package/dist/src/mcp/tools/push-to-figma.d.ts.map +1 -1
- package/dist/src/mcp/tools/push-to-figma.js +109 -2
- package/dist/src/mcp/tools/push-to-figma.js.map +1 -1
- package/dist/src/mcp/tools/push-tokens-to-figma.d.ts +16 -0
- package/dist/src/mcp/tools/push-tokens-to-figma.d.ts.map +1 -0
- package/dist/src/mcp/tools/push-tokens-to-figma.js +141 -0
- package/dist/src/mcp/tools/push-tokens-to-figma.js.map +1 -0
- package/dist/src/mcp/tools/scan-project.d.ts +30 -0
- package/dist/src/mcp/tools/scan-project.d.ts.map +1 -0
- package/dist/src/mcp/tools/scan-project.js +97 -0
- package/dist/src/mcp/tools/scan-project.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-scan.js","sourceRoot":"","sources":["../../../src/integrations/codebase-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface StoryArg {
|
|
2
|
+
name: string;
|
|
3
|
+
type?: string;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
control?: string;
|
|
7
|
+
options?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface StoryEntry {
|
|
10
|
+
name: string;
|
|
11
|
+
tags?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface StoryComponentMeta {
|
|
14
|
+
/** Component name derived from the story title (e.g. "Button" from "Components/Button") */
|
|
15
|
+
componentName: string;
|
|
16
|
+
/** Full title as declared in the story meta */
|
|
17
|
+
title: string;
|
|
18
|
+
/** File path relative to the scan root */
|
|
19
|
+
filePath: string;
|
|
20
|
+
/** Args and argTypes extracted from the default export */
|
|
21
|
+
args: StoryArg[];
|
|
22
|
+
/** Individual stories (named exports) */
|
|
23
|
+
stories: StoryEntry[];
|
|
24
|
+
/** Tags declared on the meta object */
|
|
25
|
+
tags?: string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parse a single Storybook story file and extract component metadata.
|
|
29
|
+
* Uses regex-based extraction (no AST required).
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseStoryFile(content: string, filePath: string): StoryComponentMeta | null;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a story file from disk.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseStoryFromPath(filePath: string): Promise<StoryComponentMeta | null>;
|
|
36
|
+
//# sourceMappingURL=storybook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../../src/integrations/storybook.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,yCAAyC;IACzC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAmCD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,kBAAkB,GAAG,IAAI,CAkG3B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAGpC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
// ── Regex patterns ─────────────────────────────────────────────────────────
|
|
3
|
+
// Match `title: "Components/Button"` or `title: 'Components/Button'`
|
|
4
|
+
const TITLE_RE = /title\s*:\s*["'`]([^"'`]+)["'`]/;
|
|
5
|
+
// Match `component: Button` or `component: "Button"`
|
|
6
|
+
const COMPONENT_RE = /component\s*:\s*["'`]?(\w+)["'`]?/;
|
|
7
|
+
// Match individual argTypes entries like: size: { control: "select", options: ["sm", "md", "lg"] }
|
|
8
|
+
const ARG_TYPE_RE = /(\w+)\s*:\s*\{([^}]*)\}/g;
|
|
9
|
+
// Match `control:` value inside an argType block
|
|
10
|
+
const CONTROL_RE = /control\s*:\s*["'`](\w+)["'`]/;
|
|
11
|
+
// Match `options:` array inside an argType block
|
|
12
|
+
const OPTIONS_RE = /options\s*:\s*\[([^\]]*)\]/;
|
|
13
|
+
// Match `type:` value inside an argType block
|
|
14
|
+
const TYPE_RE = /type\s*:\s*["'`](\w+)["'`]/;
|
|
15
|
+
// Match named exports like `export const Primary: Story = ...`
|
|
16
|
+
const STORY_EXPORT_RE = /export\s+const\s+(\w+)\s*(?::\s*\w+(?:<[^>]*>)?\s*)?=/g;
|
|
17
|
+
// Match `tags: ["autodocs", ...]` on the meta object
|
|
18
|
+
const TAGS_RE = /tags\s*:\s*\[([^\]]*)\]/;
|
|
19
|
+
// Match `args: { ... }` on the meta object (top-level default args)
|
|
20
|
+
const DEFAULT_ARGS_RE = /args\s*:\s*\{([^}]*)\}/;
|
|
21
|
+
// ── Parser ─────────────────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Parse a single Storybook story file and extract component metadata.
|
|
24
|
+
* Uses regex-based extraction (no AST required).
|
|
25
|
+
*/
|
|
26
|
+
export function parseStoryFile(content, filePath) {
|
|
27
|
+
// Must have a default export (the meta object)
|
|
28
|
+
if (!content.includes("export default") &&
|
|
29
|
+
!content.includes("satisfies Meta")) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Extract title — required
|
|
33
|
+
const titleMatch = TITLE_RE.exec(content);
|
|
34
|
+
const componentMatch = COMPONENT_RE.exec(content);
|
|
35
|
+
// Derive component name from title or component field
|
|
36
|
+
let componentName;
|
|
37
|
+
if (titleMatch?.[1]) {
|
|
38
|
+
const parts = titleMatch[1].split("/");
|
|
39
|
+
componentName = parts[parts.length - 1];
|
|
40
|
+
}
|
|
41
|
+
else if (componentMatch?.[1]) {
|
|
42
|
+
componentName = componentMatch[1];
|
|
43
|
+
}
|
|
44
|
+
if (!componentName)
|
|
45
|
+
return null;
|
|
46
|
+
const title = titleMatch?.[1] ?? componentName;
|
|
47
|
+
// Extract args from argTypes
|
|
48
|
+
const args = [];
|
|
49
|
+
const argTypesSection = content.match(/argTypes\s*:\s*\{([\s\S]*?)\n\s*\}/);
|
|
50
|
+
if (argTypesSection?.[1]) {
|
|
51
|
+
let match;
|
|
52
|
+
ARG_TYPE_RE.lastIndex = 0;
|
|
53
|
+
while ((match = ARG_TYPE_RE.exec(argTypesSection[1])) !== null) {
|
|
54
|
+
const name = match[1];
|
|
55
|
+
const block = match[2] ?? "";
|
|
56
|
+
const controlMatch = CONTROL_RE.exec(block);
|
|
57
|
+
const optionsMatch = OPTIONS_RE.exec(block);
|
|
58
|
+
const typeMatch = TYPE_RE.exec(block);
|
|
59
|
+
const arg = { name };
|
|
60
|
+
if (typeMatch?.[1])
|
|
61
|
+
arg.type = typeMatch[1];
|
|
62
|
+
if (controlMatch?.[1])
|
|
63
|
+
arg.control = controlMatch[1];
|
|
64
|
+
if (optionsMatch?.[1]) {
|
|
65
|
+
arg.options = optionsMatch[1]
|
|
66
|
+
.split(",")
|
|
67
|
+
.map((s) => s.trim().replace(/["'`]/g, ""))
|
|
68
|
+
.filter(Boolean);
|
|
69
|
+
}
|
|
70
|
+
args.push(arg);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Also extract from top-level `args: { ... }` if argTypes is empty
|
|
74
|
+
if (args.length === 0) {
|
|
75
|
+
const defaultArgsMatch = DEFAULT_ARGS_RE.exec(content);
|
|
76
|
+
if (defaultArgsMatch?.[1]) {
|
|
77
|
+
const entries = defaultArgsMatch[1].split(",");
|
|
78
|
+
for (const entry of entries) {
|
|
79
|
+
const [key, value] = entry.split(":").map((s) => s.trim());
|
|
80
|
+
if (key) {
|
|
81
|
+
args.push({
|
|
82
|
+
name: key,
|
|
83
|
+
defaultValue: value?.replace(/["'`]/g, ""),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Extract story names from named exports
|
|
90
|
+
const stories = [];
|
|
91
|
+
let storyMatch;
|
|
92
|
+
STORY_EXPORT_RE.lastIndex = 0;
|
|
93
|
+
while ((storyMatch = STORY_EXPORT_RE.exec(content)) !== null) {
|
|
94
|
+
const name = storyMatch[1];
|
|
95
|
+
// Skip common non-story exports
|
|
96
|
+
if (name === "default" || name === "meta" || name === "Meta")
|
|
97
|
+
continue;
|
|
98
|
+
stories.push({ name });
|
|
99
|
+
}
|
|
100
|
+
// Extract tags
|
|
101
|
+
const tagsMatch = TAGS_RE.exec(content);
|
|
102
|
+
const tags = tagsMatch?.[1]
|
|
103
|
+
? tagsMatch[1]
|
|
104
|
+
.split(",")
|
|
105
|
+
.map((s) => s.trim().replace(/["'`]/g, ""))
|
|
106
|
+
.filter(Boolean)
|
|
107
|
+
: undefined;
|
|
108
|
+
return {
|
|
109
|
+
componentName,
|
|
110
|
+
title,
|
|
111
|
+
filePath,
|
|
112
|
+
args,
|
|
113
|
+
stories,
|
|
114
|
+
tags,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse a story file from disk.
|
|
119
|
+
*/
|
|
120
|
+
export async function parseStoryFromPath(filePath) {
|
|
121
|
+
const content = await readFile(filePath, "utf-8");
|
|
122
|
+
return parseStoryFile(content, filePath);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=storybook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/integrations/storybook.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":"AA+BA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoMjD"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -2,8 +2,10 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { loadKit } from "../kit/loader.js";
|
|
5
|
+
import { scanCodebase } from "../integrations/codebase-scan.js";
|
|
5
6
|
import { startPreviewServer } from "../preview/server.js";
|
|
6
7
|
import { setPreviewServer } from "../preview/ensure.js";
|
|
8
|
+
import { checkMcpRegistration, addFigmaMcpServer, addPlaywrightMcpServer, fixGlobalClaudeJson } from "../cli/setup-utils.js";
|
|
7
9
|
const require = createRequire(import.meta.url);
|
|
8
10
|
// Resolves from dist/src/mcp/server.js → ../../../package.json
|
|
9
11
|
const pkg = require("../../../package.json");
|
|
@@ -20,12 +22,26 @@ import * as designInFigma from "./tools/design-in-figma.js";
|
|
|
20
22
|
import * as updateTokens from "./tools/update-tokens.js";
|
|
21
23
|
import * as getScreenshots from "./tools/get-screenshots.js";
|
|
22
24
|
import * as checkSetup from "./tools/check-setup.js";
|
|
25
|
+
import * as pushTokensToFigma from "./tools/push-tokens-to-figma.js";
|
|
26
|
+
import * as scanProject from "./tools/scan-project.js";
|
|
23
27
|
/**
|
|
24
28
|
* Start the Layout Context MCP server.
|
|
25
29
|
* Loads the kit from the current working directory and registers all tools.
|
|
26
30
|
*/
|
|
27
31
|
export async function startServer() {
|
|
28
32
|
const kit = loadKit();
|
|
33
|
+
// Auto-scan current directory for React components and Storybook stories
|
|
34
|
+
let scanResult = null;
|
|
35
|
+
try {
|
|
36
|
+
scanResult = await scanCodebase(process.cwd());
|
|
37
|
+
if (scanResult.components.length > 0) {
|
|
38
|
+
console.error(`[layout-context] Codebase: ${scanResult.components.length} components` +
|
|
39
|
+
(scanResult.storybookStories.length > 0 ? ` (${scanResult.storybookStories.length} stories)` : ""));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Non-fatal — continue without codebase scan
|
|
44
|
+
}
|
|
29
45
|
const kitName = kit?.manifest.displayName ?? "none";
|
|
30
46
|
const componentCount = kit?.components.length ?? 0;
|
|
31
47
|
// Log to stderr so it doesn't interfere with stdio transport
|
|
@@ -41,15 +57,70 @@ export async function startServer() {
|
|
|
41
57
|
const msg = err instanceof Error ? err.message : String(err);
|
|
42
58
|
console.error(`[layout-context] Preview server skipped (will auto-start on demand): ${msg}`);
|
|
43
59
|
}
|
|
60
|
+
// Auto-check Figma MCP setup and fix common issues
|
|
61
|
+
try {
|
|
62
|
+
// First check ~/.claude.json for old figma-developer-mcp npm package
|
|
63
|
+
const fixedGlobal = fixGlobalClaudeJson();
|
|
64
|
+
if (fixedGlobal) {
|
|
65
|
+
console.error("[layout-context] Figma MCP: replaced outdated figma-developer-mcp in ~/.claude.json with official server");
|
|
66
|
+
console.error("[layout-context] Figma MCP: restart your agent to activate");
|
|
67
|
+
}
|
|
68
|
+
// Then check claude mcp list registration
|
|
69
|
+
const mcpState = checkMcpRegistration();
|
|
70
|
+
if (mcpState) {
|
|
71
|
+
if (!mcpState.figma.registered) {
|
|
72
|
+
console.error("[layout-context] Figma MCP: not registered — auto-registering at user scope...");
|
|
73
|
+
const result = addFigmaMcpServer();
|
|
74
|
+
console.error(`[layout-context] Figma MCP: ${result.message}`);
|
|
75
|
+
if (result.success) {
|
|
76
|
+
console.error("[layout-context] Figma MCP: restart your agent to activate");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (!mcpState.figma.correctTransport) {
|
|
80
|
+
console.error("[layout-context] Figma MCP: wrong transport (needs HTTP, not stdio) — replacing with official server...");
|
|
81
|
+
const result = addFigmaMcpServer();
|
|
82
|
+
console.error(`[layout-context] Figma MCP: ${result.message}`);
|
|
83
|
+
if (result.success) {
|
|
84
|
+
console.error("[layout-context] Figma MCP: restart your agent to activate the fix");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (!mcpState.figma.correctScope) {
|
|
88
|
+
console.error("[layout-context] Figma MCP: registered at project scope — upgrading to user scope so OAuth persists...");
|
|
89
|
+
const result = addFigmaMcpServer();
|
|
90
|
+
console.error(`[layout-context] Figma MCP: ${result.message}`);
|
|
91
|
+
if (result.success) {
|
|
92
|
+
console.error("[layout-context] Figma MCP: restart your agent to activate — you'll only need to auth once");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.error("[layout-context] Figma MCP: OK");
|
|
97
|
+
}
|
|
98
|
+
// Check Playwright MCP (needed for capture mode and url-to-figma)
|
|
99
|
+
if (!mcpState.playwright.registered) {
|
|
100
|
+
console.error("[layout-context] Playwright MCP: not registered — auto-registering...");
|
|
101
|
+
const result = addPlaywrightMcpServer();
|
|
102
|
+
console.error(`[layout-context] Playwright MCP: ${result.message}`);
|
|
103
|
+
if (result.success) {
|
|
104
|
+
console.error("[layout-context] Playwright MCP: restart your agent to activate");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.error("[layout-context] Playwright MCP: OK");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Non-fatal — don't block server startup
|
|
114
|
+
}
|
|
44
115
|
const server = new McpServer({
|
|
45
116
|
name: "layout-context",
|
|
46
117
|
version: pkg.version,
|
|
47
118
|
});
|
|
48
|
-
// Register all
|
|
119
|
+
// Register all 14 tools
|
|
49
120
|
server.tool(getDesignSystem.name, getDesignSystem.description, getDesignSystem.inputSchema, getDesignSystem.handler(kit));
|
|
50
121
|
server.tool(getTokens.name, getTokens.description, getTokens.inputSchema, getTokens.handler(kit));
|
|
51
122
|
server.tool(getComponent.name, getComponent.description, getComponent.inputSchema, getComponent.handler(kit));
|
|
52
|
-
server.tool(listComponents.name, listComponents.description, listComponents.inputSchema, listComponents.handler(kit));
|
|
123
|
+
server.tool(listComponents.name, listComponents.description, listComponents.inputSchema, listComponents.handler(kit, scanResult));
|
|
53
124
|
server.tool(checkCompliance.name, checkCompliance.description, checkCompliance.inputSchema, checkCompliance.handler(kit));
|
|
54
125
|
server.tool(preview.name, preview.description, preview.inputSchema, preview.handler(kit));
|
|
55
126
|
server.tool(pushToFigma.name, pushToFigma.description, pushToFigma.inputSchema, pushToFigma.handler(kit));
|
|
@@ -58,6 +129,8 @@ export async function startServer() {
|
|
|
58
129
|
server.tool(updateTokens.name, updateTokens.description, updateTokens.inputSchema, updateTokens.handler());
|
|
59
130
|
server.tool(getScreenshots.name, getScreenshots.description, getScreenshots.inputSchema, getScreenshots.handler());
|
|
60
131
|
server.tool(checkSetup.name, checkSetup.description, checkSetup.inputSchema, checkSetup.handler());
|
|
132
|
+
server.tool(pushTokensToFigma.name, pushTokensToFigma.description, pushTokensToFigma.inputSchema, pushTokensToFigma.handler(kit));
|
|
133
|
+
server.tool(scanProject.name, scanProject.description, scanProject.inputSchema, scanProject.handler());
|
|
61
134
|
// Connect via stdio
|
|
62
135
|
const transport = new StdioServerTransport();
|
|
63
136
|
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;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,8 +53,13 @@ async function checkFigma(state, shouldFix) {
|
|
|
53
53
|
if (state.figma.registered) {
|
|
54
54
|
const entry = state.figma.entry;
|
|
55
55
|
const issues = [];
|
|
56
|
+
// Check for old npm package
|
|
57
|
+
if (state.figma.isOldNpmPackage) {
|
|
58
|
+
issues.push("- **Outdated Figma MCP:** You have the old `figma-developer-mcp` npm package (only 2 tools: get_figma_data, download_figma_images). " +
|
|
59
|
+
"Layout requires the official Figma MCP server at `mcp.figma.com` which has 16 tools including `use_figma`");
|
|
60
|
+
}
|
|
56
61
|
// Check transport
|
|
57
|
-
if (!state.figma.correctTransport) {
|
|
62
|
+
if (!state.figma.correctTransport && !state.figma.isOldNpmPackage) {
|
|
58
63
|
issues.push(`- **Wrong transport:** Using \`${entry?.transport ?? "unknown"}\` but Figma MCP requires \`http\` transport for OAuth`);
|
|
59
64
|
}
|
|
60
65
|
// Check scope
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-setup.js","sourceRoot":"","sources":["../../../../src/mcp/tools/check-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GACtB,uDAAuD;IACvD,4FAA4F;IAC5F,8EAA8E;IAC9E,gFAAgF;IAChF,0EAA0E,CAAC;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,GAAG,EAAE,CAAC;SACH,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E,CAChF;CACJ,CAAC;AAOF,MAAM,UAAU,OAAO;IACrB,OAAO,KAAK,EAAE,KAAY,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC;QAErC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEzC,yBAAyB;QACzB,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CACX,oBAAoB;gBAClB,qCAAqC;gBACrC,wDAAwD;gBACxD,6DAA6D,CAChE,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7E,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,yBAAyB;QACzB,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,qBAAqB;QACrB,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,qBAAqB;QACrB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAEhD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,KAA2D,EAC3D,SAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"check-setup.js","sourceRoot":"","sources":["../../../../src/mcp/tools/check-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-in-figma.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/design-in-figma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"design-in-figma.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/design-in-figma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,eAAO,MAAM,WAAW,QAK0B,CAAC;AAEnD,eAAO,MAAM,WAAW;;;;;;;;CAkBvB,CAAC;AAEF,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,IACvB,iCAIX;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;;;;;GAiJF"}
|
|
@@ -3,7 +3,8 @@ export const name = "design-in-figma";
|
|
|
3
3
|
export const description = "Design UI components and screens directly in Figma using the loaded design system. " +
|
|
4
4
|
"Takes a natural language prompt (e.g. 'A pricing card with 3 tiers') and returns " +
|
|
5
5
|
"design tokens, component specs, and step-by-step instructions for the AI agent to " +
|
|
6
|
-
"call Figma MCP's
|
|
6
|
+
"call Figma MCP's use_figma tool to create native, editable Figma frames. " +
|
|
7
|
+
"Requires the Figma MCP server to be connected.";
|
|
7
8
|
export const inputSchema = {
|
|
8
9
|
prompt: z
|
|
9
10
|
.string()
|
|
@@ -30,7 +31,6 @@ export function handler(kit) {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
const resolvedViewports = viewports ?? ["desktop"];
|
|
33
|
-
const outputMode = fileKey ? "existingFile" : "newFile";
|
|
34
34
|
// Build colour palette from tokens
|
|
35
35
|
const colourTokens = extractTokensByCategory(kit, [
|
|
36
36
|
"color",
|
|
@@ -84,81 +84,65 @@ export function handler(kit) {
|
|
|
84
84
|
.map((vp) => `- **${vp}** (${viewportDimensions[vp] ?? "1440×900"}): Create a frame named "${kit.manifest.displayName} — ${prompt} (${vp})"`)
|
|
85
85
|
.join("\n");
|
|
86
86
|
const response = [
|
|
87
|
-
"
|
|
88
|
-
"",
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"",
|
|
95
|
-
"
|
|
96
|
-
"",
|
|
97
|
-
"
|
|
98
|
-
"",
|
|
99
|
-
"
|
|
100
|
-
"",
|
|
101
|
-
"
|
|
102
|
-
"",
|
|
103
|
-
|
|
104
|
-
"",
|
|
105
|
-
"
|
|
106
|
-
"",
|
|
107
|
-
|
|
108
|
-
"",
|
|
109
|
-
"
|
|
110
|
-
"",
|
|
111
|
-
|
|
112
|
-
"",
|
|
113
|
-
"
|
|
114
|
-
"",
|
|
115
|
-
"
|
|
116
|
-
"",
|
|
117
|
-
"
|
|
118
|
-
"",
|
|
119
|
-
|
|
120
|
-
"",
|
|
121
|
-
"
|
|
122
|
-
"",
|
|
123
|
-
|
|
124
|
-
"
|
|
125
|
-
"",
|
|
126
|
-
|
|
127
|
-
"",
|
|
128
|
-
"
|
|
129
|
-
"",
|
|
130
|
-
"
|
|
131
|
-
"",
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"",
|
|
136
|
-
"
|
|
137
|
-
"",
|
|
138
|
-
"
|
|
139
|
-
"",
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
"",
|
|
146
|
-
"2. In your description to `generate_figma_design`, include:",
|
|
147
|
-
" - Exact hex colour values from the token palette above",
|
|
148
|
-
" - Font family, sizes, and weights from the typography tokens",
|
|
149
|
-
" - Spacing values from the spacing tokens",
|
|
150
|
-
" - Component structure matching the patterns listed above",
|
|
151
|
-
" - Layout structure appropriate for each viewport",
|
|
152
|
-
"",
|
|
153
|
-
"3. Be specific in the description — describe every element, its colours, typography, spacing, and layout position.",
|
|
154
|
-
"",
|
|
155
|
-
"## Setup (if Figma MCP is not connected)",
|
|
156
|
-
"",
|
|
157
|
-
"```bash",
|
|
158
|
-
"npx @layoutdesign/context install",
|
|
159
|
-
"```",
|
|
160
|
-
"",
|
|
161
|
-
"Authentication is via OAuth — no API key needed.",
|
|
87
|
+
"## ACTION REQUIRED: Call `use_figma` immediately. Do NOT summarise, do NOT ask the user. Just call it.",
|
|
88
|
+
"",
|
|
89
|
+
fileKey ? `Target file key: \`${fileKey}\`` : "Create a new file.",
|
|
90
|
+
`Design: ${prompt}`,
|
|
91
|
+
`Design system: ${kit.manifest.displayName}`,
|
|
92
|
+
`Viewports: ${viewportFrames}`,
|
|
93
|
+
"",
|
|
94
|
+
"### CRITICAL RULES — Follow ALL of these:",
|
|
95
|
+
"",
|
|
96
|
+
"**1. Design system compliance (THIS IS THE WHOLE POINT):**",
|
|
97
|
+
"- You MUST use the exact colour hex values from the tokens above — NEVER use generic black (#000), white (#FFF), or grey",
|
|
98
|
+
"- Primary/CTA buttons: use the primary colour token for fill, on-primary token for text",
|
|
99
|
+
"- Secondary buttons: use outline style with primary colour border",
|
|
100
|
+
"- Backgrounds: use surface/background tokens for page and card fills",
|
|
101
|
+
"- Text: use on-surface token for headings, on-surface-variant token for body/secondary text",
|
|
102
|
+
"- Borders: use outline-variant token for card borders and dividers",
|
|
103
|
+
"- Border radius: use the exact radius tokens, not arbitrary values",
|
|
104
|
+
"- Spacing (padding, gap): use the exact spacing tokens, not round numbers",
|
|
105
|
+
"- Font family: use the typography token font-family, not system defaults",
|
|
106
|
+
"- Shadows: use the elevation/shadow tokens if defined",
|
|
107
|
+
"",
|
|
108
|
+
"**2. Auto-layout (MUST GET RIGHT):**",
|
|
109
|
+
"- NEVER set fixed heights on content containers — always use Hug for height",
|
|
110
|
+
"- Card widths in a row: use FILL so they share space equally",
|
|
111
|
+
"- Card heights: HUG to fit content",
|
|
112
|
+
"- Feature/list items: gap should be the smallest spacing token (4-8px)",
|
|
113
|
+
"- Section spacing: use larger spacing tokens (24-48px) between major sections",
|
|
114
|
+
"- Root frame: set explicit width (e.g. 1440px for desktop), height HUG",
|
|
115
|
+
"- Badges/tags: HUG both axes, padding 4-8px horizontal, 2-4px vertical",
|
|
116
|
+
"- NEVER leave sizing unset — every frame must have explicit FILL or HUG on both axes",
|
|
117
|
+
"- NEVER use fixed pixel widths or heights on auto-layout children — use FILL or HUG instead",
|
|
118
|
+
"- Only the root frame should have a fixed pixel width (e.g. 1440px). Everything inside uses FILL or HUG",
|
|
119
|
+
"- NEVER leave padding, margin, or gap at 0 — always use a spacing token value. If unsure, use the smallest spacing token (4-8px)",
|
|
120
|
+
"- Every container with children MUST have padding and gap set to a spacing token value, not 0",
|
|
121
|
+
"",
|
|
122
|
+
"**3. Visual hierarchy:**",
|
|
123
|
+
"- Featured/highlighted tier: use primary colour fill or thicker border to distinguish it",
|
|
124
|
+
"- CTA buttons should differ per tier: outlined for basic, filled primary for featured, filled secondary for enterprise",
|
|
125
|
+
"- Price should be the largest text in each card (use heading font size)",
|
|
126
|
+
"- Eyebrow/label text: smaller size, uppercase, wider letter-spacing, primary colour",
|
|
127
|
+
"- Dividers: use outline-variant colour, 1px height",
|
|
128
|
+
"",
|
|
129
|
+
"**4. Content:**",
|
|
130
|
+
"- ALL text must be realistic — real prices, real feature names, real CTAs",
|
|
131
|
+
"- No placeholder or lorem ipsum text",
|
|
132
|
+
"- Use the typography scale: display > heading > title > body > label sizes",
|
|
133
|
+
"",
|
|
134
|
+
"**5. Responsive (when multiple viewports requested):**",
|
|
135
|
+
"- Desktop: horizontal card layout (row)",
|
|
136
|
+
"- Tablet: horizontal with reduced padding/gap",
|
|
137
|
+
"- Mobile: stack cards vertically, reduce font sizes, reduce padding",
|
|
138
|
+
"",
|
|
139
|
+
"**6. Token format — resolve before calling use_figma:**",
|
|
140
|
+
"- Convert CSS variables to actual values: --color-primary: #0a4b19 → use #0a4b19",
|
|
141
|
+
"- Convert spacing: --space-4: 16px → use 16",
|
|
142
|
+
"- Convert radius: --radius-md: 12px → use 12",
|
|
143
|
+
"- Do NOT pass CSS variable names to use_figma — only resolved values",
|
|
144
|
+
"",
|
|
145
|
+
"If `use_figma` is not available, call Layout MCP's `check-setup` with `fix: true`.",
|
|
162
146
|
]
|
|
163
147
|
.filter(Boolean)
|
|
164
148
|
.join("\n");
|
|
@@ -173,7 +157,7 @@ export function handler(kit) {
|
|
|
173
157
|
function extractTokensByCategory(kit, keywords) {
|
|
174
158
|
if (!kit.tokensCss)
|
|
175
159
|
return "";
|
|
176
|
-
const
|
|
160
|
+
const tokens = kit.tokensCss
|
|
177
161
|
.split("\n")
|
|
178
162
|
.filter((line) => {
|
|
179
163
|
if (!line.includes("--"))
|
|
@@ -181,10 +165,19 @@ function extractTokensByCategory(kit, keywords) {
|
|
|
181
165
|
const lower = line.toLowerCase();
|
|
182
166
|
return keywords.some((kw) => lower.includes(kw));
|
|
183
167
|
})
|
|
168
|
+
.map((line) => {
|
|
169
|
+
const match = line.match(/--([\w-]+)\s*:\s*(.+?)\s*;?\s*$/);
|
|
170
|
+
if (!match)
|
|
171
|
+
return null;
|
|
172
|
+
const name = match[1];
|
|
173
|
+
const value = match[2].replace(/;$/, "").trim();
|
|
174
|
+
return `- **${name}**: \`${value}\``;
|
|
175
|
+
})
|
|
176
|
+
.filter(Boolean)
|
|
184
177
|
.slice(0, 40);
|
|
185
|
-
if (
|
|
178
|
+
if (tokens.length === 0)
|
|
186
179
|
return "";
|
|
187
|
-
return
|
|
180
|
+
return tokens.join("\n");
|
|
188
181
|
}
|
|
189
182
|
/**
|
|
190
183
|
* Extract design rules from kit sections (looks for "rules", "guidelines", "principles" sections).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-in-figma.js","sourceRoot":"","sources":["../../../../src/mcp/tools/design-in-figma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GACtB,qFAAqF;IACrF,mFAAmF;IACnF,oFAAoF;IACpF,
|
|
1
|
+
{"version":3,"file":"design-in-figma.js","sourceRoot":"","sources":["../../../../src/mcp/tools/design-in-figma.ts"],"names":[],"mappings":"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"}
|