set_auto_layout
Configure auto layout properties for Figma design elements to control spacing, alignment, and arrangement of components within frames or groups.
Instructions
Configure auto layout properties for a node in Figma
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | The ID of the node to configure auto layout | |
| layoutMode | Yes | Layout direction | |
| paddingTop | No | Top padding in pixels | |
| paddingBottom | No | Bottom padding in pixels | |
| paddingLeft | No | Left padding in pixels | |
| paddingRight | No | Right padding in pixels | |
| itemSpacing | No | Spacing between items in pixels | |
| primaryAxisAlignItems | No | Alignment along primary axis | |
| counterAxisAlignItems | No | Alignment along counter axis | |
| layoutWrap | No | Whether items wrap to new lines | |
| strokesIncludedInLayout | No | Whether strokes are included in layout calculations |
Implementation Reference
- src/talk_to_figma_mcp/tools/modification-tools.ts:260-313 (registration)MCP tool registration for 'set_auto_layout', including input schema (Zod), description, and handler function that forwards the command to Figma via WebSocket.server.tool( "set_auto_layout", "Configure auto layout properties for a node in Figma", { nodeId: z.string().describe("The ID of the node to configure auto layout"), layoutMode: z.enum(["HORIZONTAL", "VERTICAL", "NONE"]).describe("Layout direction"), paddingTop: z.number().optional().describe("Top padding in pixels"), paddingBottom: z.number().optional().describe("Bottom padding in pixels"), paddingLeft: z.number().optional().describe("Left padding in pixels"), paddingRight: z.number().optional().describe("Right padding in pixels"), itemSpacing: z.number().optional().describe("Spacing between items in pixels"), primaryAxisAlignItems: z.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]).optional().describe("Alignment along primary axis"), counterAxisAlignItems: z.enum(["MIN", "CENTER", "MAX"]).optional().describe("Alignment along counter axis"), layoutWrap: z.enum(["WRAP", "NO_WRAP"]).optional().describe("Whether items wrap to new lines"), strokesIncludedInLayout: z.boolean().optional().describe("Whether strokes are included in layout calculations") }, async ({ nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }) => { try { const result = await sendCommandToFigma("set_auto_layout", { nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }); const typedResult = result as { name: string }; return { content: [ { type: "text", text: `Applied auto layout to node "${typedResult.name}" with mode: ${layoutMode}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error setting auto layout: ${error instanceof Error ? error.message : String(error)}` } ] }; } } );
- The handler function executes the tool by sending a 'set_auto_layout' command to Figma with the provided parameters and returns a formatted response.async ({ nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }) => { try { const result = await sendCommandToFigma("set_auto_layout", { nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }); const typedResult = result as { name: string }; return { content: [ { type: "text", text: `Applied auto layout to node "${typedResult.name}" with mode: ${layoutMode}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error setting auto layout: ${error instanceof Error ? error.message : String(error)}` } ] }; } }
- Zod input schema defining parameters for the set_auto_layout tool.nodeId: z.string().describe("The ID of the node to configure auto layout"), layoutMode: z.enum(["HORIZONTAL", "VERTICAL", "NONE"]).describe("Layout direction"), paddingTop: z.number().optional().describe("Top padding in pixels"), paddingBottom: z.number().optional().describe("Bottom padding in pixels"), paddingLeft: z.number().optional().describe("Left padding in pixels"), paddingRight: z.number().optional().describe("Right padding in pixels"), itemSpacing: z.number().optional().describe("Spacing between items in pixels"), primaryAxisAlignItems: z.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]).optional().describe("Alignment along primary axis"), counterAxisAlignItems: z.enum(["MIN", "CENTER", "MAX"]).optional().describe("Alignment along counter axis"), layoutWrap: z.enum(["WRAP", "NO_WRAP"]).optional().describe("Whether items wrap to new lines"), strokesIncludedInLayout: z.boolean().optional().describe("Whether strokes are included in layout calculations") },
- Type definition including 'set_auto_layout' in FigmaCommand union type.| "set_auto_layout"