clone_node
Duplicate Figma design elements by creating copies at specified coordinates. Use this tool to replicate nodes within your Figma workspace.
Instructions
Clone an existing node in Figma
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | The ID of the node to clone | |
| x | No | New X position for the clone | |
| y | No | New Y position for the clone |
Implementation Reference
- src/talk_to_figma_mcp/server.ts:723-755 (handler)Handler function for the 'clone_node' MCP tool. Registers the tool, defines input schema (nodeId required, x/y optional), and proxies execution to Figma plugin via sendCommandToFigma('clone_node'). Returns success message with new node ID or error.// Clone Node Tool server.tool( "clone_node", "Clone an existing node in Figma", { nodeId: z.string().describe("The ID of the node to clone"), x: z.number().optional().describe("New X position for the clone"), y: z.number().optional().describe("New Y position for the clone") }, async ({ nodeId, x, y }) => { try { const result = await sendCommandToFigma('clone_node', { nodeId, x, y }); const typedResult = result as { name: string, id: string }; return { content: [ { type: "text", text: `Cloned node "${typedResult.name}" with new ID: ${typedResult.id}${x !== undefined && y !== undefined ? ` at position (${x}, ${y})` : ''}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error cloning node: ${error instanceof Error ? error.message : String(error)}` } ] }; } } );
- Input schema for clone_node tool using Zod: nodeId (string, required), x (number, optional), y (number, optional).{ nodeId: z.string().describe("The ID of the node to clone"), x: z.number().optional().describe("New X position for the clone"), y: z.number().optional().describe("New Y position for the clone") },
- src/talk_to_figma_mcp/server.ts:723-755 (registration)Registration of 'clone_node' tool on McpServer instance with name, description, schema, and handler.// Clone Node Tool server.tool( "clone_node", "Clone an existing node in Figma", { nodeId: z.string().describe("The ID of the node to clone"), x: z.number().optional().describe("New X position for the clone"), y: z.number().optional().describe("New Y position for the clone") }, async ({ nodeId, x, y }) => { try { const result = await sendCommandToFigma('clone_node', { nodeId, x, y }); const typedResult = result as { name: string, id: string }; return { content: [ { type: "text", text: `Cloned node "${typedResult.name}" with new ID: ${typedResult.id}${x !== undefined && y !== undefined ? ` at position (${x}, ${y})` : ''}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error cloning node: ${error instanceof Error ? error.message : String(error)}` } ] }; } } );
- TypeScript type definition for clone_node command parameters in CommandParams union.clone_node: { nodeId: string; x?: number; y?: number; };
- src/talk_to_figma_mcp/server.ts:2570-2570 (registration)Inclusion of 'clone_node' in FigmaCommand type union for sendCommandToFigma.| "clone_node"