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
| 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"