clone_multiple_nodes
Clone a node to multiple positions in one operation. Significantly faster than multiple individual clone operations.
Read and edit a live Figma file from the assistant — create frames and text, drive auto-layout, rewrite hundreds of text nodes without losing their formatting, and build slides and tables.
LABSCO SUMMARY
The tools that pay for the setup are the bulk ones: cloning a node to many positions, setting the same property across a selection, updating many text nodes with their styling in one call, and running a batch of commands as a single round trip. The text model is the other reason to reach for this over a general design tool — styling is addressed by character range, so updating copy keeps the bold, the colours and the fonts that were already there. Remember the plugin and socket server are separate processes; if commands do nothing, the channel is usually the thing that was never joined.
A bridge into an open Figma document through a plugin and a local WebSocket connection. The assistant reads the current selection and node tree, then creates, moves, restyles and deletes nodes in the file you are looking at.
Three pieces have to be running, not one: Bun on the machine, the WebSocket server started with bun socket, and the Figma Copilot plugin installed and open in Figma. The MCP server itself runs as bunx figma-copilot@latest. Before any command will reach the document, the plugin has to be paired by joining a channel — that call comes first in every session. Some tools are Slides or FigJam only. Several older tools remain as deprecated aliases pointing at their replacements. This is an independent project, not affiliated with Figma. MIT.
One command — bunx figma-copilot
USE CASES
Read the current context and the selection in full, then pull the specific nodes involved rather than scanning the whole document.
Update many text nodes in one call and let unchanged portions keep their formatting, or replace one phrase and restyle only the replacement.
Set the layout mode, padding, axis alignment, child sizing and spacing, so the frame reflows rather than needing to be nudged.
Capture the overrides from the instance you have already tuned and apply them to the rest, rather than repeating the edits.
Clone one node into many positions in a single operation and set shared properties across the result, then run the whole sequence as one batch.
Create slides and rows, arrange them into a grid, set transitions, and pull an outline of the presentation or the content of one slide back out.
Extract a table as an array, an object or CSV, read the annotations on the document, and export a node as an image.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
clone_multiple_nodesClone a node to multiple positions in one operation. Significantly faster than multiple individual clone operations.
clone_nodeClone an existing node in Figma
create_component_instanceCreate an instance of a component in Figma
create_connectionsCreate connections between nodes using the default connector style
create_frameCreate a new frame in Figma
create_gifCreate a GIF (available in Figma Slides and FigJam)
create_rectangleCreate a new rectangle in Figma
create_shape_with_textCreate a shape with text (available in Figma Slides and FigJam)
create_slideCreate a new slide in Figma Slides
create_slide_rowCreate a new slide row in Figma Slides
create_tableCreate a table (available in Figma Design and Slides)
create_textCreate a new text element in Figma
delete_multiple_nodesDelete multiple nodes from Figma at once
delete_nodeDelete a node from Figma
execute_batchExecute multiple commands in sequence with a single round-trip. Ideal for complex operations that require multiple steps.
export_node_as_imageExport a node as an image from Figma
extract_slide_contentExtract all content from a Figma slide including text, tables, and optionally images
get_annotationsGet all annotations in the current document or specific node
get_component_descriptionGet the description of a component in Markdown format
get_connection_statusGet the current connection status and statistics for the Figma plugin connection
get_current_contextGet comprehensive context about the current state including selection, focused slide (if in Slides mode), and optionally document info
get_document_infoGet detailed information about the current Figma document
get_focused_slide[DEPRECATED] Get the currently focused slide in Figma Slides. Use 'get_current_context' instead.
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_multiple_nodes_info[DEPRECATED] Get information for multiple nodes in a single request. Use 'get_nodes' instead.
get_node_info[DEPRECATED] Get detailed information about a specific node in Figma. Use 'get_nodes' instead.
get_nodesGet detailed information about one or more nodes in Figma. Accepts either a single node ID or array of IDs.
get_nodes_info[DEPRECATED] Get detailed information about multiple nodes in Figma. Use 'get_nodes' instead.
get_presentation_summaryGenerate an overview of a Figma presentation including slide count, slide titles, and optionally an outline summarizing key points
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_selection[DEPRECATED] Get information about the current selection in Figma. Use 'get_current_context' instead.
get_slide_gridGet the current slide grid arrangement in Figma Slides
get_slide_transitionGet the transition settings for a slide in Figma Slides
get_slides_mode[DEPRECATED] Get the current viewport mode in Figma Slides. Use 'get_current_context' instead.
get_styled_text_segmentsGet detailed text segments with all their styling properties
get_stylesGet all styles from the current Figma document
get_table_dataExtract data from a Figma table node in various formats (array, object, or CSV)
get_text_decoration_rangeGet the text decoration properties for a specific text range
get_text_style_rangeGet the text styling (bold, italic, underline, strikethrough) for a specific range of text
join_channelJoin a specific channel to communicate with Figma
move_nodeMove a node to a new position in Figma
normalize_markdownNormalize Markdown text to match Figma's supported subset
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_nodes_with_optionsScan for nodes with advanced options including depth limit, timeout control, and partial results. Use this when scan_text_nodes times out.
scan_text_nodes[DEPRECATED] Scan all text nodes in the selected Figma node - Use scan_nodes_with_options instead
set_annotationCreate or update an annotation
set_axis_alignSet primary and counter axis alignment for an auto-layout frame in Figma
set_component_descriptionSet the description of a component with Markdown formatting support
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_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_nodes_propertySet the same property value on multiple nodes at once. Useful for bulk updates like visibility, opacity, or position.
set_multiple_text_contentsSet multiple text contents parallelly in a node
set_multiple_text_contents_with_stylesUpdate multiple text nodes with content and optional styling in a single operation. More efficient than separate text and style updates.
set_paddingSet padding values for an auto-layout frame in Figma
set_range_fillsSet the text color for a specific text range
set_range_fontSet the font family and style for a specific text range
set_range_font_sizeSet the font size for a specific text range
set_slide_gridRearrange slides into a grid layout in Figma Slides
set_slide_transitionSet the transition for a slide in Figma Slides
set_slides_modeSet the viewport mode in Figma Slides
set_stroke_colorSet the stroke color of a node in Figma
set_text_contentSet the text content of an existing text node in Figma
set_text_decoration_rangeSet advanced text decoration properties (style, color, thickness, offset) for a text range
set_text_style_rangeApply text styling (bold, italic, underline, strikethrough) to a specific range of text in a text node
smart_text_replaceReplace specific text in a node while preserving the formatting of unchanged portions. Only replaced text gets default formatting.
update_text_preserve_formattingUpdate text content while preserving existing character formatting. Choose a strategy for handling formatting when text length changes.
BEFORE YOU INSTALL
75 tools when we connected. Ten Slides and FigJam tools, such as create_slide and set_slides_mode, are undocumented. get_selection, get_node_info, get_nodes_info, get_focused_slide, get_slides_mode, scan_text_nodes and get_multiple_nodes_info are deprecated but still exposed.
Bun
Both documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 75 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
bunx figma-copilot{
"mcpServers": {
"figma-copilot": {
"command": "bunx",
"args": [
"figma-copilot@latest"
]
}
}
}