@gethopp/figma-mcp-bridge 0.0.12 → 0.0.13
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 +37 -0
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.js +12 -1
- package/dist/bridge.js.map +1 -1
- package/dist/leader.js +2 -1
- package/dist/leader.js.map +1 -1
- package/dist/schema.d.ts +1842 -1
- package/dist/schema.js +522 -6
- package/dist/schema.js.map +1 -1
- package/dist/tools.js +264 -3
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/schema.js
CHANGED
|
@@ -1,13 +1,430 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Figma node IDs:
|
|
4
|
+
* - top-level node: "4029:12345"
|
|
5
|
+
* - child inside INSTANCE: "I12740:17806;12740:17793" (and deeper, semicolon-separated)
|
|
6
|
+
*
|
|
7
|
+
* Both forms are valid for figma.getNodeById and are returned as-is by the plugin
|
|
8
|
+
* from get_selection / get_design_context.
|
|
9
|
+
*/
|
|
3
10
|
export const figmaNodeId = z
|
|
4
11
|
.string()
|
|
5
|
-
.regex(
|
|
12
|
+
.regex(/^(\d+:\d+|I\d+:\d+(;\d+:\d+)+)$/, "Node ID must use colon format, e.g. '4029:12345', or instance-child format 'I12740:17806;12740:17793'");
|
|
6
13
|
const exportFormat = z.enum(["PNG", "SVG", "JPG", "PDF"]);
|
|
14
|
+
const hexColor = z
|
|
15
|
+
.string()
|
|
16
|
+
.regex(/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/, "Color must be a hex value like '#FFAA00'");
|
|
17
|
+
const textAlignHorizontal = z.enum(["LEFT", "CENTER", "RIGHT", "JUSTIFIED"]);
|
|
18
|
+
const textAlignVertical = z.enum(["TOP", "CENTER", "BOTTOM"]);
|
|
19
|
+
const textAutoResize = z.enum(["NONE", "WIDTH_AND_HEIGHT", "HEIGHT", "TRUNCATE"]);
|
|
20
|
+
const shapeType = z.enum(["RECTANGLE", "ELLIPSE", "LINE"]);
|
|
21
|
+
const imageScaleMode = z.enum(["FILL", "FIT"]);
|
|
7
22
|
const fileKeyField = z
|
|
8
23
|
.string()
|
|
9
24
|
.optional()
|
|
10
25
|
.describe("The fileKey of the Figma file to query. Required when multiple files are connected. Use list_files to see connected files.");
|
|
26
|
+
const gradientStop = z.object({
|
|
27
|
+
position: z
|
|
28
|
+
.number()
|
|
29
|
+
.min(0)
|
|
30
|
+
.max(1)
|
|
31
|
+
.describe("Stop position from 0 (start of gradient) to 1 (end)"),
|
|
32
|
+
hex: hexColor.describe("Stop color as hex"),
|
|
33
|
+
opacity: z
|
|
34
|
+
.number()
|
|
35
|
+
.min(0)
|
|
36
|
+
.max(1)
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Optional per-stop alpha (default 1)"),
|
|
39
|
+
});
|
|
40
|
+
const gradientTransform = z
|
|
41
|
+
.tuple([
|
|
42
|
+
z.tuple([z.number(), z.number(), z.number()]),
|
|
43
|
+
z.tuple([z.number(), z.number(), z.number()]),
|
|
44
|
+
])
|
|
45
|
+
.describe("2x3 affine matrix [[a,b,tx],[c,d,ty]] mapping the unit gradient onto the shape (Figma's gradientTransform). Defaults to identity (horizontal left→right).");
|
|
46
|
+
export const setGradientFillInput = z.object({
|
|
47
|
+
nodeId: figmaNodeId.describe("The node ID to update"),
|
|
48
|
+
gradientType: z
|
|
49
|
+
.enum(["LINEAR", "RADIAL", "ANGULAR", "DIAMOND"])
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Gradient family (default LINEAR)"),
|
|
52
|
+
gradientStops: z
|
|
53
|
+
.array(gradientStop)
|
|
54
|
+
.min(2)
|
|
55
|
+
.describe("Ordered list of gradient color stops (at least 2)"),
|
|
56
|
+
gradientTransform: gradientTransform.optional(),
|
|
57
|
+
opacity: z
|
|
58
|
+
.number()
|
|
59
|
+
.min(0)
|
|
60
|
+
.max(1)
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Overall paint opacity (default 1)"),
|
|
63
|
+
target: z
|
|
64
|
+
.enum(["fill", "stroke"])
|
|
65
|
+
.optional()
|
|
66
|
+
.describe("Apply to fills or strokes (default fill)"),
|
|
67
|
+
fileKey: fileKeyField,
|
|
68
|
+
});
|
|
69
|
+
export const setNodePropertiesInput = z.object({
|
|
70
|
+
nodeId: figmaNodeId.describe("The node ID to update"),
|
|
71
|
+
name: z.string().optional().describe("Optional new node name"),
|
|
72
|
+
x: z.number().optional().describe("Optional x position"),
|
|
73
|
+
y: z.number().optional().describe("Optional y position"),
|
|
74
|
+
width: z.number().positive().optional().describe("Optional width"),
|
|
75
|
+
height: z.number().positive().optional().describe("Optional height"),
|
|
76
|
+
rotation: z.number().optional().describe("Optional rotation in degrees"),
|
|
77
|
+
opacity: z
|
|
78
|
+
.number()
|
|
79
|
+
.min(0)
|
|
80
|
+
.max(1)
|
|
81
|
+
.optional()
|
|
82
|
+
.describe("Optional opacity from 0 to 1"),
|
|
83
|
+
visible: z.boolean().optional().describe("Optional visibility"),
|
|
84
|
+
cornerRadius: z
|
|
85
|
+
.number()
|
|
86
|
+
.min(0)
|
|
87
|
+
.optional()
|
|
88
|
+
.describe("Optional corner radius"),
|
|
89
|
+
fileKey: fileKeyField,
|
|
90
|
+
});
|
|
91
|
+
export const setSolidFillInput = z.object({
|
|
92
|
+
nodeId: figmaNodeId.describe("The node ID to update"),
|
|
93
|
+
hex: hexColor.describe("Solid color as hex (e.g. '#FFAA00')"),
|
|
94
|
+
opacity: z
|
|
95
|
+
.number()
|
|
96
|
+
.min(0)
|
|
97
|
+
.max(1)
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("Optional paint opacity from 0 to 1 (default 1)"),
|
|
100
|
+
target: z
|
|
101
|
+
.enum(["fill", "stroke"])
|
|
102
|
+
.optional()
|
|
103
|
+
.describe("Apply to fills or strokes (default fill)"),
|
|
104
|
+
fileKey: fileKeyField,
|
|
105
|
+
});
|
|
106
|
+
const blendMode = z.enum([
|
|
107
|
+
"PASS_THROUGH",
|
|
108
|
+
"NORMAL",
|
|
109
|
+
"DARKEN",
|
|
110
|
+
"MULTIPLY",
|
|
111
|
+
"LINEAR_BURN",
|
|
112
|
+
"COLOR_BURN",
|
|
113
|
+
"LIGHTEN",
|
|
114
|
+
"SCREEN",
|
|
115
|
+
"LINEAR_DODGE",
|
|
116
|
+
"COLOR_DODGE",
|
|
117
|
+
"OVERLAY",
|
|
118
|
+
"SOFT_LIGHT",
|
|
119
|
+
"HARD_LIGHT",
|
|
120
|
+
"DIFFERENCE",
|
|
121
|
+
"EXCLUSION",
|
|
122
|
+
"HUE",
|
|
123
|
+
"SATURATION",
|
|
124
|
+
"COLOR",
|
|
125
|
+
"LUMINOSITY",
|
|
126
|
+
]);
|
|
127
|
+
const shadowEffect = z.object({
|
|
128
|
+
type: z.enum(["DROP_SHADOW", "INNER_SHADOW"]),
|
|
129
|
+
color: hexColor.describe("Shadow color as hex"),
|
|
130
|
+
opacity: z
|
|
131
|
+
.number()
|
|
132
|
+
.min(0)
|
|
133
|
+
.max(1)
|
|
134
|
+
.optional()
|
|
135
|
+
.describe("Shadow alpha 0..1 (default 1)"),
|
|
136
|
+
offset: z
|
|
137
|
+
.object({
|
|
138
|
+
x: z.number(),
|
|
139
|
+
y: z.number(),
|
|
140
|
+
})
|
|
141
|
+
.describe("Shadow offset in pixels"),
|
|
142
|
+
radius: z.number().min(0).describe("Blur radius (>= 0)"),
|
|
143
|
+
spread: z
|
|
144
|
+
.number()
|
|
145
|
+
.optional()
|
|
146
|
+
.describe("Expand/contract distance (default 0). Only honored on rects/ellipses, or on frames/components/instances with visible fills and clipsContent."),
|
|
147
|
+
blendMode: blendMode.optional().describe("Default NORMAL"),
|
|
148
|
+
visible: z.boolean().optional().describe("Default true"),
|
|
149
|
+
});
|
|
150
|
+
const blurEffect = z.object({
|
|
151
|
+
type: z.enum(["LAYER_BLUR", "BACKGROUND_BLUR"]),
|
|
152
|
+
radius: z.number().min(0).describe("Blur radius (>= 0)"),
|
|
153
|
+
visible: z.boolean().optional().describe("Default true"),
|
|
154
|
+
});
|
|
155
|
+
export const setSelectionInput = z.object({
|
|
156
|
+
nodeIds: z
|
|
157
|
+
.array(figmaNodeId)
|
|
158
|
+
.describe("Node IDs to select. Pass [] to clear the selection."),
|
|
159
|
+
fileKey: fileKeyField,
|
|
160
|
+
});
|
|
161
|
+
export const scrollAndZoomIntoViewInput = z.object({
|
|
162
|
+
nodeIds: z
|
|
163
|
+
.array(figmaNodeId)
|
|
164
|
+
.min(1)
|
|
165
|
+
.describe("Node IDs to frame in the viewport"),
|
|
166
|
+
fileKey: fileKeyField,
|
|
167
|
+
});
|
|
168
|
+
export const groupNodesInput = z.object({
|
|
169
|
+
nodeIds: z
|
|
170
|
+
.array(figmaNodeId)
|
|
171
|
+
.min(1)
|
|
172
|
+
.describe("Node IDs to group. Must share a common parent."),
|
|
173
|
+
parentId: figmaNodeId
|
|
174
|
+
.optional()
|
|
175
|
+
.describe("Optional explicit parent for the new group. Defaults to the shared parent of the input nodes."),
|
|
176
|
+
name: z.string().optional().describe("Optional name for the new group"),
|
|
177
|
+
fileKey: fileKeyField,
|
|
178
|
+
});
|
|
179
|
+
export const ungroupNodeInput = z.object({
|
|
180
|
+
nodeId: figmaNodeId.describe("Group or frame to ungroup. Children move up to its parent and the wrapper is removed."),
|
|
181
|
+
fileKey: fileKeyField,
|
|
182
|
+
});
|
|
183
|
+
export const setEffectsInput = z.object({
|
|
184
|
+
nodeId: figmaNodeId.describe("The node ID to update"),
|
|
185
|
+
effects: z
|
|
186
|
+
.array(z.discriminatedUnion("type", [shadowEffect, blurEffect]))
|
|
187
|
+
.describe("Full replacement list of effects. Pass [] to clear all effects. Each entry is a drop/inner shadow or a layer/background blur."),
|
|
188
|
+
fileKey: fileKeyField,
|
|
189
|
+
});
|
|
190
|
+
export const setStrokePropertiesInput = z.object({
|
|
191
|
+
nodeId: figmaNodeId.describe("The node ID to update"),
|
|
192
|
+
strokeWeight: z
|
|
193
|
+
.number()
|
|
194
|
+
.min(0)
|
|
195
|
+
.optional()
|
|
196
|
+
.describe("Stroke thickness in pixels"),
|
|
197
|
+
strokeAlign: z
|
|
198
|
+
.enum(["INSIDE", "OUTSIDE", "CENTER"])
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("How the stroke is positioned relative to the geometry edge"),
|
|
201
|
+
dashPattern: z
|
|
202
|
+
.array(z.number().min(0))
|
|
203
|
+
.optional()
|
|
204
|
+
.describe("Dash pattern as [dash, gap, dash, gap, ...] in pixels. Pass [] for a solid stroke."),
|
|
205
|
+
strokeCap: z
|
|
206
|
+
.enum([
|
|
207
|
+
"NONE",
|
|
208
|
+
"ROUND",
|
|
209
|
+
"SQUARE",
|
|
210
|
+
"ARROW_LINES",
|
|
211
|
+
"ARROW_EQUILATERAL",
|
|
212
|
+
])
|
|
213
|
+
.optional()
|
|
214
|
+
.describe("End-cap style (only meaningful on open paths/lines)"),
|
|
215
|
+
strokeJoin: z
|
|
216
|
+
.enum(["MITER", "BEVEL", "ROUND"])
|
|
217
|
+
.optional()
|
|
218
|
+
.describe("Corner join style"),
|
|
219
|
+
fileKey: fileKeyField,
|
|
220
|
+
});
|
|
221
|
+
export const setAutoLayoutInput = z.object({
|
|
222
|
+
nodeId: figmaNodeId.describe("The node ID to update (must be a frame)"),
|
|
223
|
+
layoutMode: z
|
|
224
|
+
.enum(["NONE", "HORIZONTAL", "VERTICAL"])
|
|
225
|
+
.optional()
|
|
226
|
+
.describe("Auto-layout direction. 'NONE' disables auto-layout."),
|
|
227
|
+
itemSpacing: z
|
|
228
|
+
.number()
|
|
229
|
+
.optional()
|
|
230
|
+
.describe("Gap between children along the primary axis (pixels)"),
|
|
231
|
+
counterAxisSpacing: z
|
|
232
|
+
.number()
|
|
233
|
+
.optional()
|
|
234
|
+
.describe("Gap between wrapped rows/columns (only when layoutWrap=WRAP)"),
|
|
235
|
+
paddingTop: z.number().min(0).optional(),
|
|
236
|
+
paddingRight: z.number().min(0).optional(),
|
|
237
|
+
paddingBottom: z.number().min(0).optional(),
|
|
238
|
+
paddingLeft: z.number().min(0).optional(),
|
|
239
|
+
primaryAxisAlignItems: z
|
|
240
|
+
.enum(["MIN", "MAX", "CENTER", "SPACE_BETWEEN"])
|
|
241
|
+
.optional()
|
|
242
|
+
.describe("Alignment along the primary axis"),
|
|
243
|
+
counterAxisAlignItems: z
|
|
244
|
+
.enum(["MIN", "MAX", "CENTER", "BASELINE"])
|
|
245
|
+
.optional()
|
|
246
|
+
.describe("Alignment along the counter axis"),
|
|
247
|
+
primaryAxisSizingMode: z
|
|
248
|
+
.enum(["FIXED", "AUTO"])
|
|
249
|
+
.optional()
|
|
250
|
+
.describe("AUTO = hug contents along primary axis"),
|
|
251
|
+
counterAxisSizingMode: z
|
|
252
|
+
.enum(["FIXED", "AUTO"])
|
|
253
|
+
.optional()
|
|
254
|
+
.describe("AUTO = hug contents along counter axis"),
|
|
255
|
+
layoutWrap: z
|
|
256
|
+
.enum(["NO_WRAP", "WRAP"])
|
|
257
|
+
.optional()
|
|
258
|
+
.describe("Allow children to wrap onto multiple rows/columns"),
|
|
259
|
+
fileKey: fileKeyField,
|
|
260
|
+
});
|
|
261
|
+
export const createFrameInput = z.object({
|
|
262
|
+
name: z.string().optional().describe("Optional frame name"),
|
|
263
|
+
parentId: figmaNodeId
|
|
264
|
+
.optional()
|
|
265
|
+
.describe("Optional parent node ID to append the frame into"),
|
|
266
|
+
x: z.number().optional().describe("Optional x position"),
|
|
267
|
+
y: z.number().optional().describe("Optional y position"),
|
|
268
|
+
width: z.number().positive().optional().describe("Frame width"),
|
|
269
|
+
height: z.number().positive().optional().describe("Frame height"),
|
|
270
|
+
fillHex: hexColor
|
|
271
|
+
.optional()
|
|
272
|
+
.describe("Optional solid fill color as hex"),
|
|
273
|
+
fillOpacity: z
|
|
274
|
+
.number()
|
|
275
|
+
.min(0)
|
|
276
|
+
.max(1)
|
|
277
|
+
.optional()
|
|
278
|
+
.describe("Optional solid fill opacity from 0 to 1"),
|
|
279
|
+
fileKey: fileKeyField,
|
|
280
|
+
});
|
|
281
|
+
export const setTextPropertiesShape = z.object({
|
|
282
|
+
nodeId: figmaNodeId.describe("The text node ID to update"),
|
|
283
|
+
fontFamily: z.string().optional().describe("Optional font family"),
|
|
284
|
+
fontStyle: z.string().optional().describe("Optional font style"),
|
|
285
|
+
fontSize: z.number().positive().optional().describe("Optional font size"),
|
|
286
|
+
textAlignHorizontal: textAlignHorizontal
|
|
287
|
+
.optional()
|
|
288
|
+
.describe("Optional horizontal alignment"),
|
|
289
|
+
textAlignVertical: textAlignVertical
|
|
290
|
+
.optional()
|
|
291
|
+
.describe("Optional vertical alignment"),
|
|
292
|
+
textAutoResize: textAutoResize
|
|
293
|
+
.optional()
|
|
294
|
+
.describe("Optional text auto-resize mode"),
|
|
295
|
+
lineHeightPx: z
|
|
296
|
+
.number()
|
|
297
|
+
.positive()
|
|
298
|
+
.optional()
|
|
299
|
+
.describe("Optional line height in pixels"),
|
|
300
|
+
letterSpacingPx: z
|
|
301
|
+
.number()
|
|
302
|
+
.optional()
|
|
303
|
+
.describe("Optional letter spacing in pixels"),
|
|
304
|
+
fillHex: hexColor.optional().describe("Optional text fill color as hex"),
|
|
305
|
+
fillOpacity: z
|
|
306
|
+
.number()
|
|
307
|
+
.min(0)
|
|
308
|
+
.max(1)
|
|
309
|
+
.optional()
|
|
310
|
+
.describe("Optional text fill opacity from 0 to 1"),
|
|
311
|
+
x: z.number().optional().describe("Optional x position"),
|
|
312
|
+
y: z.number().optional().describe("Optional y position"),
|
|
313
|
+
width: z.number().positive().optional().describe("Optional width"),
|
|
314
|
+
height: z.number().positive().optional().describe("Optional height"),
|
|
315
|
+
fileKey: fileKeyField,
|
|
316
|
+
});
|
|
317
|
+
export const setTextPropertiesInput = setTextPropertiesShape
|
|
318
|
+
.refine((value) => value.fontFamily !== undefined ||
|
|
319
|
+
value.fontStyle !== undefined ||
|
|
320
|
+
value.fontSize !== undefined ||
|
|
321
|
+
value.textAlignHorizontal !== undefined ||
|
|
322
|
+
value.textAlignVertical !== undefined ||
|
|
323
|
+
value.textAutoResize !== undefined ||
|
|
324
|
+
value.lineHeightPx !== undefined ||
|
|
325
|
+
value.letterSpacingPx !== undefined ||
|
|
326
|
+
value.fillHex !== undefined ||
|
|
327
|
+
value.fillOpacity !== undefined ||
|
|
328
|
+
value.x !== undefined ||
|
|
329
|
+
value.y !== undefined ||
|
|
330
|
+
value.width !== undefined ||
|
|
331
|
+
value.height !== undefined, "At least one text property must be provided")
|
|
332
|
+
.refine((value) => value.fillOpacity === undefined || value.fillHex !== undefined, "fillHex is required when fillOpacity is provided");
|
|
333
|
+
export const createTextShape = z.object({
|
|
334
|
+
name: z.string().optional().describe("Optional text node name"),
|
|
335
|
+
parentId: figmaNodeId
|
|
336
|
+
.optional()
|
|
337
|
+
.describe("Optional parent node ID to append the text into"),
|
|
338
|
+
characters: z.string().optional().describe("Initial text content"),
|
|
339
|
+
fontFamily: z.string().optional().describe("Font family, defaults to Inter"),
|
|
340
|
+
fontStyle: z.string().optional().describe("Font style, defaults to Regular"),
|
|
341
|
+
fontSize: z.number().positive().optional().describe("Optional font size"),
|
|
342
|
+
textAlignHorizontal: textAlignHorizontal
|
|
343
|
+
.optional()
|
|
344
|
+
.describe("Optional horizontal alignment"),
|
|
345
|
+
textAutoResize: textAutoResize
|
|
346
|
+
.optional()
|
|
347
|
+
.describe("Optional text auto-resize mode"),
|
|
348
|
+
fillHex: hexColor.optional().describe("Optional text fill color as hex"),
|
|
349
|
+
fillOpacity: z
|
|
350
|
+
.number()
|
|
351
|
+
.min(0)
|
|
352
|
+
.max(1)
|
|
353
|
+
.optional()
|
|
354
|
+
.describe("Optional text fill opacity from 0 to 1"),
|
|
355
|
+
x: z.number().optional().describe("Optional x position"),
|
|
356
|
+
y: z.number().optional().describe("Optional y position"),
|
|
357
|
+
width: z.number().positive().optional().describe("Optional width"),
|
|
358
|
+
height: z.number().positive().optional().describe("Optional height"),
|
|
359
|
+
fileKey: fileKeyField,
|
|
360
|
+
});
|
|
361
|
+
export const createTextInput = createTextShape
|
|
362
|
+
.refine((value) => value.fillOpacity === undefined || value.fillHex !== undefined, "fillHex is required when fillOpacity is provided");
|
|
363
|
+
export const createShapeShape = z.object({
|
|
364
|
+
shapeType: shapeType.describe("Shape type to create"),
|
|
365
|
+
name: z.string().optional().describe("Optional shape name"),
|
|
366
|
+
parentId: figmaNodeId
|
|
367
|
+
.optional()
|
|
368
|
+
.describe("Optional parent node ID to append the shape into"),
|
|
369
|
+
x: z.number().optional().describe("Optional x position"),
|
|
370
|
+
y: z.number().optional().describe("Optional y position"),
|
|
371
|
+
width: z.number().positive().optional().describe("Optional width"),
|
|
372
|
+
height: z.number().positive().optional().describe("Optional height"),
|
|
373
|
+
rotation: z.number().optional().describe("Optional rotation in degrees"),
|
|
374
|
+
cornerRadius: z
|
|
375
|
+
.number()
|
|
376
|
+
.min(0)
|
|
377
|
+
.optional()
|
|
378
|
+
.describe("Optional corner radius for supported shapes"),
|
|
379
|
+
fillHex: hexColor.optional().describe("Optional fill color as hex"),
|
|
380
|
+
fillOpacity: z
|
|
381
|
+
.number()
|
|
382
|
+
.min(0)
|
|
383
|
+
.max(1)
|
|
384
|
+
.optional()
|
|
385
|
+
.describe("Optional fill opacity from 0 to 1"),
|
|
386
|
+
strokeHex: hexColor.optional().describe("Optional stroke color as hex"),
|
|
387
|
+
strokeOpacity: z
|
|
388
|
+
.number()
|
|
389
|
+
.min(0)
|
|
390
|
+
.max(1)
|
|
391
|
+
.optional()
|
|
392
|
+
.describe("Optional stroke opacity from 0 to 1"),
|
|
393
|
+
strokeWeight: z
|
|
394
|
+
.number()
|
|
395
|
+
.positive()
|
|
396
|
+
.optional()
|
|
397
|
+
.describe("Optional stroke weight"),
|
|
398
|
+
fileKey: fileKeyField,
|
|
399
|
+
});
|
|
400
|
+
export const createShapeInput = createShapeShape
|
|
401
|
+
.refine((value) => value.fillOpacity === undefined || value.fillHex !== undefined, "fillHex is required when fillOpacity is provided")
|
|
402
|
+
.refine((value) => value.strokeOpacity === undefined || value.strokeHex !== undefined, "strokeHex is required when strokeOpacity is provided")
|
|
403
|
+
.refine((value) => value.shapeType !== "LINE" || value.fillHex === undefined, "LINE shapes do not support fillHex — use strokeHex instead")
|
|
404
|
+
.refine((value) => value.shapeType !== "LINE" || value.strokeHex !== undefined, "LINE shapes require strokeHex (lines have no fill and would be invisible otherwise)");
|
|
405
|
+
export const createImageInput = z.object({
|
|
406
|
+
source: z
|
|
407
|
+
.string()
|
|
408
|
+
.min(1)
|
|
409
|
+
.describe("Image source. Accepts a local file path (absolute or relative to the MCP server cwd), an http/https URL, or a data URI."),
|
|
410
|
+
name: z.string().optional().describe("Optional image node name"),
|
|
411
|
+
parentId: figmaNodeId
|
|
412
|
+
.optional()
|
|
413
|
+
.describe("Optional parent node ID to append the image into"),
|
|
414
|
+
x: z.number().optional().describe("Optional x position"),
|
|
415
|
+
y: z.number().optional().describe("Optional y position"),
|
|
416
|
+
width: z.number().positive().optional().describe("Optional width"),
|
|
417
|
+
height: z.number().positive().optional().describe("Optional height"),
|
|
418
|
+
cornerRadius: z
|
|
419
|
+
.number()
|
|
420
|
+
.min(0)
|
|
421
|
+
.optional()
|
|
422
|
+
.describe("Optional corner radius"),
|
|
423
|
+
scaleMode: imageScaleMode
|
|
424
|
+
.optional()
|
|
425
|
+
.describe("How the image should fit its bounds: FILL (default) or FIT"),
|
|
426
|
+
fileKey: fileKeyField,
|
|
427
|
+
});
|
|
11
428
|
export const toolInputSchemas = {
|
|
12
429
|
get_document: z.object({
|
|
13
430
|
fileKey: fileKeyField,
|
|
@@ -16,7 +433,7 @@ export const toolInputSchemas = {
|
|
|
16
433
|
fileKey: fileKeyField,
|
|
17
434
|
}),
|
|
18
435
|
get_node: z.object({
|
|
19
|
-
nodeId: figmaNodeId.describe("The node ID to fetch"),
|
|
436
|
+
nodeId: figmaNodeId.describe("The node ID to fetch. Accepts top-level IDs like '4029:12345' and instance-child IDs like 'I12740:17806;12740:17793'."),
|
|
20
437
|
fileKey: fileKeyField,
|
|
21
438
|
}),
|
|
22
439
|
get_styles: z.object({
|
|
@@ -39,7 +456,7 @@ export const toolInputSchemas = {
|
|
|
39
456
|
nodeIds: z
|
|
40
457
|
.array(figmaNodeId)
|
|
41
458
|
.optional()
|
|
42
|
-
.describe("Optional list of node IDs to export
|
|
459
|
+
.describe("Optional list of node IDs to export. Accepts top-level IDs like '4029:12345' and instance-child IDs like 'I12740:17806;12740:17793'. Never use hyphens. If empty, exports the current selection."),
|
|
43
460
|
format: exportFormat
|
|
44
461
|
.optional()
|
|
45
462
|
.describe("Export format: PNG (default) or SVG or JPG or PDF"),
|
|
@@ -49,10 +466,89 @@ export const toolInputSchemas = {
|
|
|
49
466
|
.describe("Export scale for raster formats (default 2)"),
|
|
50
467
|
fileKey: fileKeyField,
|
|
51
468
|
}),
|
|
469
|
+
set_node_visibility: z.object({
|
|
470
|
+
items: z
|
|
471
|
+
.array(z.object({
|
|
472
|
+
nodeId: figmaNodeId.describe("The node ID to modify"),
|
|
473
|
+
visible: z.boolean().describe("true to show, false to hide"),
|
|
474
|
+
}))
|
|
475
|
+
.min(1)
|
|
476
|
+
.describe("List of nodes with their target visibility"),
|
|
477
|
+
fileKey: fileKeyField,
|
|
478
|
+
}),
|
|
479
|
+
set_text_content: z.object({
|
|
480
|
+
nodeId: figmaNodeId.describe("The text node ID to update"),
|
|
481
|
+
text: z.string().describe("The new text content"),
|
|
482
|
+
fileKey: fileKeyField,
|
|
483
|
+
}),
|
|
484
|
+
set_text_properties: setTextPropertiesInput,
|
|
485
|
+
set_gradient_fill: setGradientFillInput,
|
|
486
|
+
set_solid_fill: setSolidFillInput,
|
|
487
|
+
set_effects: setEffectsInput,
|
|
488
|
+
set_stroke_properties: setStrokePropertiesInput.refine((value) => value.strokeWeight !== undefined ||
|
|
489
|
+
value.strokeAlign !== undefined ||
|
|
490
|
+
value.dashPattern !== undefined ||
|
|
491
|
+
value.strokeCap !== undefined ||
|
|
492
|
+
value.strokeJoin !== undefined, "At least one stroke property must be provided"),
|
|
493
|
+
set_auto_layout: setAutoLayoutInput.refine((value) => value.layoutMode !== undefined ||
|
|
494
|
+
value.itemSpacing !== undefined ||
|
|
495
|
+
value.counterAxisSpacing !== undefined ||
|
|
496
|
+
value.paddingTop !== undefined ||
|
|
497
|
+
value.paddingRight !== undefined ||
|
|
498
|
+
value.paddingBottom !== undefined ||
|
|
499
|
+
value.paddingLeft !== undefined ||
|
|
500
|
+
value.primaryAxisAlignItems !== undefined ||
|
|
501
|
+
value.counterAxisAlignItems !== undefined ||
|
|
502
|
+
value.primaryAxisSizingMode !== undefined ||
|
|
503
|
+
value.counterAxisSizingMode !== undefined ||
|
|
504
|
+
value.layoutWrap !== undefined, "At least one auto-layout property must be provided"),
|
|
505
|
+
set_node_properties: setNodePropertiesInput.refine((value) => value.name !== undefined ||
|
|
506
|
+
value.x !== undefined ||
|
|
507
|
+
value.y !== undefined ||
|
|
508
|
+
value.width !== undefined ||
|
|
509
|
+
value.height !== undefined ||
|
|
510
|
+
value.rotation !== undefined ||
|
|
511
|
+
value.opacity !== undefined ||
|
|
512
|
+
value.visible !== undefined ||
|
|
513
|
+
value.cornerRadius !== undefined, "At least one property must be provided"),
|
|
514
|
+
create_frame: createFrameInput
|
|
515
|
+
.refine((value) => value.fillOpacity === undefined || value.fillHex !== undefined, "fillHex is required when fillOpacity is provided"),
|
|
516
|
+
create_text: createTextInput,
|
|
517
|
+
create_shape: createShapeInput,
|
|
518
|
+
create_image: createImageInput,
|
|
519
|
+
duplicate_nodes: z.object({
|
|
520
|
+
nodeIds: z
|
|
521
|
+
.array(figmaNodeId)
|
|
522
|
+
.min(1)
|
|
523
|
+
.describe("List of node IDs to duplicate"),
|
|
524
|
+
fileKey: fileKeyField,
|
|
525
|
+
}),
|
|
526
|
+
reparent_nodes: z.object({
|
|
527
|
+
nodeIds: z
|
|
528
|
+
.array(figmaNodeId)
|
|
529
|
+
.min(1)
|
|
530
|
+
.describe("List of node IDs to move"),
|
|
531
|
+
parentId: figmaNodeId.describe("Destination parent node ID"),
|
|
532
|
+
fileKey: fileKeyField,
|
|
533
|
+
}),
|
|
534
|
+
group_nodes: groupNodesInput,
|
|
535
|
+
ungroup_node: ungroupNodeInput,
|
|
536
|
+
set_selection: setSelectionInput,
|
|
537
|
+
scroll_and_zoom_into_view: scrollAndZoomIntoViewInput,
|
|
538
|
+
delete_nodes: z.object({
|
|
539
|
+
nodeIds: z
|
|
540
|
+
.array(figmaNodeId)
|
|
541
|
+
.min(1)
|
|
542
|
+
.describe("List of node IDs to delete"),
|
|
543
|
+
confirm: z
|
|
544
|
+
.boolean()
|
|
545
|
+
.describe("Must be true to confirm deletion"),
|
|
546
|
+
fileKey: fileKeyField,
|
|
547
|
+
}),
|
|
52
548
|
save_screenshots: z.object({
|
|
53
549
|
items: z
|
|
54
550
|
.array(z.object({
|
|
55
|
-
nodeId: figmaNodeId.describe("The node ID to export"),
|
|
551
|
+
nodeId: figmaNodeId.describe("The node ID to export. Accepts top-level IDs like '4029:12345' and instance-child IDs like 'I12740:17806;12740:17793'."),
|
|
56
552
|
outputPath: z
|
|
57
553
|
.string()
|
|
58
554
|
.min(1)
|
|
@@ -85,12 +581,32 @@ export const toolInputSchemas = {
|
|
|
85
581
|
const rpcToArgs = {
|
|
86
582
|
get_document: (_nodeIds, params) => ({ ...params }),
|
|
87
583
|
get_selection: (_nodeIds, params) => ({ ...params }),
|
|
88
|
-
get_node: (nodeIds, params) => ({ nodeId: nodeIds?.[0]
|
|
584
|
+
get_node: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
89
585
|
get_styles: (_nodeIds, params) => ({ ...params }),
|
|
90
586
|
get_metadata: (_nodeIds, params) => ({ ...params }),
|
|
91
587
|
get_design_context: (_nodeIds, params) => ({ ...params }),
|
|
92
588
|
get_variable_defs: (_nodeIds, params) => ({ ...params }),
|
|
93
589
|
get_screenshot: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
590
|
+
set_node_visibility: (_nodeIds, params) => ({ ...params }),
|
|
591
|
+
set_text_content: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
592
|
+
set_text_properties: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
593
|
+
set_node_properties: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
594
|
+
set_gradient_fill: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
595
|
+
set_solid_fill: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
596
|
+
set_effects: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
597
|
+
set_stroke_properties: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
598
|
+
set_auto_layout: (nodeIds, params) => ({ ...params, nodeId: nodeIds?.[0] }),
|
|
599
|
+
create_frame: (_nodeIds, params) => ({ ...params }),
|
|
600
|
+
create_text: (_nodeIds, params) => ({ ...params }),
|
|
601
|
+
create_shape: (_nodeIds, params) => ({ ...params }),
|
|
602
|
+
create_image: (_nodeIds, params) => ({ ...params }),
|
|
603
|
+
duplicate_nodes: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
604
|
+
reparent_nodes: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
605
|
+
group_nodes: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
606
|
+
ungroup_node: (nodeIds, params) => ({ nodeId: nodeIds?.[0], ...params }),
|
|
607
|
+
set_selection: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
608
|
+
scroll_and_zoom_into_view: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
609
|
+
delete_nodes: (nodeIds, params) => ({ nodeIds, ...params }),
|
|
94
610
|
save_screenshots: (_nodeIds, params) => ({ ...params }),
|
|
95
611
|
};
|
|
96
612
|
/**
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|