clone_node
Clone an existing node in Figma
Read a Figma document and change it — copy, layout, component instances, annotations — from the editor you are writing code in.
LABSCO SUMMARY
Scanning the text nodes and then rewriting them in bulk changes a whole screen's copy in one pass, and extracting one instance's overrides carries them to the rest. The channel is the catch worth knowing first: nothing works until join_channel has run.
A two-way channel into an open Figma document, carried over a WebSocket to a Figma plugin. Forty tools cover reads across the document, selection, nodes, styles, components and annotations, and writes across creation, layout, text, component instances, connectors and what is selected on screen. Six prompts encode the multi-step strategies.
get_document_info, get_selection, read_my_design, get_node_info, get_nodes_info)create_frame, create_section, set_parent, clone_node, delete_multiple_nodes, export_node_as_image)set_layout_mode, set_padding, set_axis_align, set_layout_sizing, set_item_spacing)set_fill_color, set_stroke_color, set_corner_radius, set_image_fill)scan_text_nodes, set_text_content, set_multiple_text_contents)get_local_components, get_styles, create_component_instance, get_instance_overrides, set_instance_overrides)get_annotations, set_multiple_annotations, scan_nodes_by_types, get_reactions, set_default_connector, create_connections)set_focus, set_selections)text_replacement_strategy, swap_overrides_instances, reaction_to_connector_strategy, annotation_conversion_strategyBun on your PATH, the Figma plugin installed and running on the document, and the WebSocket server (bun socket, run from a clone of the repository) between them. Call join_channel first — every other call travels over that channel and nothing works until it has run. Creating connector lines has its own order: set_default_connector has to be given a copied FigJam connector before create_connections will draw anything.
Build from source — git clone https://github.com/grab/cursor-talk-to-figma-mcp.git
USE CASES
Scan the text nodes in the frame — chunked, so a large design does not choke — then set them all in one call. Localisation and copy passes stop being a click-by-click job.
Set the layout mode on the frame, then the padding, alignment, sizing and spacing. Five calls turn a hand-positioned mock into something that reflows the way the implementation will.
Extract the overrides from the instance you have already got right, then apply them to the others. The swap_overrides_instances prompt walks the sequence when you would rather not think about it.
Read the node and the local styles instead of eyedropping a screenshot. Padding, radius and colour come back as numbers, which is the difference between matching a design and approximating it.
Read the prototype reactions and turn them into FigJam connector lines, then write annotations onto the nodes in bulk. Set the default connector first — nothing draws until that is done.
Export the node directly as PNG, JPG, SVG or PDF. Useful when you need one icon and would rather not open a design file that takes a minute to load.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
clone_nodeClone an existing node in Figma
create_component_instanceCreate an instance of a component in Figma. For LOCAL components (from get_local_components), use componentId with the id field. For published LIBRARY components, use componentKey with the publishedKey field.
create_connectionsCreate connections between nodes using the default connector style
create_frameCreate a new frame in Figma
create_rectangleCreate a new rectangle in Figma
create_textCreate a new text element in Figma
delete_multiple_nodesDelete multiple nodes from Figma at once
delete_nodeDelete a node from Figma
export_node_as_imageExport a node as an image from Figma
get_annotationsGet all annotations in the current document or specific node
get_document_infoGet detailed information about the current Figma document
get_instance_overridesGet all override properties from a selected component instance. These overrides can be applied to other instances, which will swap them to match the source component.
get_local_componentsGet all local components from the Figma document
get_node_infoGet detailed information about a specific node in Figma
get_nodes_infoGet detailed information about multiple nodes in Figma
get_reactionsGet Figma Prototyping Reactions from multiple nodes. CRITICAL: The output MUST be processed using the 'reaction_to_connector_strategy' prompt IMMEDIATELY to generate parameters for connector lines via the 'create_connections' tool.
get_selectionGet information about the current selection in Figma
get_stylesGet all styles from the current Figma document
join_channelJoin a specific channel to communicate with Figma
move_nodeMove a node to a new position in Figma
read_my_designGet detailed information about the current selection in Figma, including all node details
resize_nodeResize a node in Figma
scan_nodes_by_typesScan for child nodes with specific types in the selected Figma node
scan_text_nodesScan all text nodes in the selected Figma node
set_annotationCreate or update an annotation
set_axis_alignSet primary and counter axis alignment for an auto-layout frame in Figma
set_corner_radiusSet the corner radius of a node in Figma
set_default_connectorSet a copied connector node as the default connector
set_fill_colorSet the fill color of a node in Figma can be TextNode or FrameNode
set_focusSet focus on a specific node in Figma by selecting it and scrolling viewport to it
set_instance_overridesApply previously copied overrides to selected component instances. Target instances will be swapped to the source component and all copied override properties will be applied.
set_item_spacingSet distance between children in an auto-layout frame
set_layout_modeSet the layout mode and wrap behavior of a frame in Figma
set_layout_sizingSet horizontal and vertical sizing modes for an auto-layout frame in Figma
set_multiple_annotationsSet multiple annotations parallelly in a node
set_multiple_text_contentsSet multiple text contents parallelly in a node
set_paddingSet padding values for an auto-layout frame in Figma
set_selectionsSet selection to multiple nodes in Figma and scroll viewport to show them
set_stroke_colorSet the stroke color of a node in Figma
set_text_contentSet the text content of an existing text node in Figma
BEFORE YOU INSTALL
40 tools when we connected.
The documented client runs the server on your machine.
CONTEXT COST
Rated by the size of the 40 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
This one is built from source rather than installed with a single command.
Install Bun if you haven't already
curl -fsSL https://bun.sh/install | bash
git clone https://github.com/grab/cursor-talk-to-figma-mcp.git
cd cursor-talk-to-figma-mcpRun setup, this will also install MCP in your Cursor's active project
bun setupStart the Websocket server
bun socketInstall the Figma plugin from its Figma community page (https://www.figma.com/community/plugin/1485687494525374295/cursor-talk-to-figma-mcp-plugin), open Figma and run the plugin, then connect it to the WebSocket server by joining a channel using join_channel.
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": [
"cursor-talk-to-figma-mcp@latest"
]
}
}
}This goes in ~/.cursor/mcp.json. The bun setup step already adds it to Cursor's active project; add it by hand for other projects.