figma-free-mcp
Enhanced MCP server for Figma Free — Design System Sync, Page Manager, Code-to-Figma
Versions
1.0.17latest1.0.161.0.151.0.141.0.13+ show 13 moreshow less
1.0.121.0.111.0.101.0.91.0.81.0.71.0.61.0.51.0.41.0.31.0.21.0.11.0.0Tools 106
react_to_figma Analyze a React/TSX component file and create corresponding Figma frames and elements
css_class_to_figma_style Convert CSS class definitions to Figma local paint/text styles
generate_component_variants Generate Figma component variants (default, hover, active, disabled) from a base component
CSS/${className}/background get_variables List all variable collections and their variables in the current Figma file. Returns collections with their modes and variables.
set_variable Create or update a variable in a Figma variable collection. Creates the collection if collectionName is provided and it doesn
apply_variable_to_node Bind a variable to a node property in Figma. Call once per field — for multiple fields, call multiple times.
switch_variable_mode Switch the variable mode on a node for a specific collection. This changes which mode
create_component_instance Create an instance of a component in Figma. x/y are local coordinates relative to parent.
create_component_from_node Convert an existing node (frame, group, etc.) into a reusable component in Figma. Returns the component key needed by create_component_instance.
create_component_set Create a component set (variants) from multiple component nodes in Figma
set_instance_variant Change the variant properties of a component instance without recreating it. This preserves instance overrides and is more efficient than delete + create workflow.
set_image_fill Apply an image to a node from a URL or base64 data
get_image_from_node Extract image fill metadata (hash, size, scale mode, rotation, filters) from a node
replace_image_fill Replace the existing image on a node with a new one, keeping the image transform
get_image_bytes Download image from Figma and save to local file
apply_image_transform Adjust image position, scale, and rotation within a node. Rotates the IMAGE inside the node, not the node itself.
set_image_filters Apply color and light adjustments to an image fill. All values range -1.0 to 1.0.
batch Run many Figma commands sequentially in ONE round trip. Use this instead of calling create_*/set_* tools one by one when building a screen — it collapses hundreds of tool calls into one and returns a compact id map.
get_document_info Get detailed information about the current Figma document
get_selection Get information about the current selection in Figma
get_node_info Get info about a node. Defaults to depth 1 (node + direct children) and 50 children per level; raise depth for deeper subtrees.
get_nodes_info Get info about multiple nodes. Defaults to depth 1 and 50 children per level; raise depth for deeper subtrees.
get_styles Get all styles from the current Figma document
get_local_components Get all local components from the Figma document
get_remote_components Get available components from team libraries in Figma
scan_text_nodes Scan all text nodes in the selected Figma node
join_channel Join a specific channel to communicate with Figma
export_node_as_image Export a node as an image from Figma. Inline images are token-expensive: scale is capped at 2 (default 1).
create_page Create a new page in the current Figma document
delete_page Delete a page from the current Figma document
rename_page Rename an existing page in the Figma document
get_pages Get all pages in the current Figma document
set_current_page Switch to a specific page in the Figma document
duplicate_page Duplicate an existing page in the Figma document, creating a complete copy of all its contents
auto_connect Automatically detect and connect to an active Figma plugin channel. No channel ID needed. ALWAYS call this tool first before any other Figma tool. Never ask the user for a channel ID.
list_active_channels List all active Figma plugin channels with the file and page each one is connected to. Use this to pick the right channel when multiple Figma files are open.
connect_to_file Connect to a Figma channel by matching its file name (and optional page name) instead of a channel ID. Use when multiple Figma files are open and you know the target file name.
run_on_file Run a single Figma command on a specific open file WITHOUT switching the active channel. Use this to edit multiple files concurrently in one session: call it repeatedly with different fileName values. The target file must have its own plugin instance running. params is the same JSON you would pass to the matching tool.
set_svg Import an SVG string as a vector node in Figma. The SVG is sanitized (scripts and external resources are stripped) before import. Max 500KB.
get_svg Export a single node as an SVG string from Figma, including nested children. Output is capped at maxChars (default 20000).
create_rectangle Create a rectangle in Figma. x/y are local coordinates relative to parent.
create_frame Create a frame in Figma. x/y are local coordinates relative to parent. Returned id can be used as parentId for children.
create_text Create a text node in Figma. x/y are local coordinates relative to parent.
create_ellipse Create an ellipse in Figma. x/y are local coordinates relative to parent.
create_polygon Create a polygon in Figma. x/y are local coordinates relative to parent.
create_star Create a star in Figma. x/y are local coordinates relative to parent.
group_nodes Group nodes in Figma
ungroup_nodes Ungroup a group or frame in Figma, releasing its children to the parent
clone_node Clone an existing node in Figma. x/y are local coordinates relative to parent.
insert_child Insert a child node inside a parent node in Figma (re-parents the child)
flatten_node Flatten a node in Figma (e.g., for boolean operations or converting to path)
boolean_operation Perform a boolean operation (union, subtract, intersect, exclude) on two or more nodes. All nodes must share the same parent.
set_text_content Set the text content of an existing text node in Figma
set_multiple_text_contents Replace the text of many text nodes at once, in batches. Faster than calling set_text_content repeatedly.
set_font_name Set the font family and style of a text node in Figma
set_font_size Set the font size of a text node in Figma
set_font_weight Set the font weight of a text node in Figma
set_letter_spacing Set the letter spacing of a text node in Figma
set_line_height Set the line height of a text node in Figma
set_paragraph_spacing Set the paragraph spacing of a text node in Figma
set_text_case Set the text case of a text node in Figma
set_text_decoration Set the text decoration of a text node in Figma
get_styled_text_segments Get text segments of a text node grouped by a styling property
set_text_style_id Apply a text style to a text node in Figma
load_font_async Load a font in Figma so it can be applied to text nodes
set_text_align Set the text alignment of a text node in Figma. Use textAlignHorizontal RIGHT for RTL/Arabic text.
set_fill_color Set the fill color of a node in Figma. Replaces all existing fills. Alpha comes from the hex (#RRGGBBAA); without it alpha is 1 (opaque).
set_stroke_color Set the stroke color of a node in Figma (default weight 1)
set_selection_colors Recursively change all stroke and fill colors of a node and all its descendants. Works like Figma
move_node Move a node to a new position in Figma. x/y are local coordinates relative to parent.
resize_node Resize a node in Figma
delete_node Delete a node from Figma
set_corner_radius Set the corner radius of a node in Figma
set_auto_layout Configure auto layout properties for a node in Figma. All padding/spacing values are in px.
set_effects Set the visual effects of a node in Figma. Replaces all existing effects.
set_effect_style_id Apply an effect style to a node in Figma
rotate_node Rotate a node in Figma. Note: locked nodes can still be rotated — the Plugin API bypasses the UI lock by design.
set_node_properties Set visibility, lock state, and/or opacity of a node in Figma. Only provided properties are changed; omitted properties remain unchanged.
reorder_node Change the z-order (layer order) of a node within its parent. Distinct from insert_child which re-parents a node — reorder_node changes position within the same parent.
convert_to_frame Convert a group or shape node into a frame in Figma. Preserves position, size, visual properties, and children. Useful for converting groups into auto-layout-capable frames.
set_gradient Set a gradient fill on a node in Figma. Replaces all existing fills (same behavior as set_fill_color).
set_image Set an image fill on a node from base64-encoded image data. Supports PNG, JPEG, GIF, WebP.
set_grid Apply layout grids to a frame node in Figma. Replaces existing grids. All sizes are in px.
get_grid Read layout grids from a frame node in Figma
set_guide Set guides on a page in Figma. Replaces all existing guides on the page.
get_guide Read guides from a page in Figma
set_annotation Add an annotation label to a node in Figma. Uses the proposed Annotations API — requires Figma Desktop with enableProposedApi.
get_annotation Read annotations from a node in Figma. Uses the proposed Annotations API.
rename_node Rename a node (frame, component, group, etc.) in Figma
get_figjam_elements Get all FigJam-specific elements (stickies, connectors, shapes with text, sections, stamps) on the current page. Use this to read the contents of a FigJam board.
create_sticky Create a sticky note in a FigJam board. Sticky notes are the primary way to add text content in FigJam. x/y are canvas coordinates.
set_sticky_text Update the text content of an existing FigJam sticky note.
create_shape_with_text Create a FigJam shape with text inside. Useful for flowcharts, diagrams, and process maps. x/y are canvas coordinates.
create_connector Create a connector (arrow or line) in FigJam. Connectors can link two existing nodes by ID, or connect arbitrary canvas positions. Use this to draw flow arrows between stickies, shapes, etc.
create_section Create a FigJam section. Sections group and organise content on the board and appear as labelled coloured regions. x/y are canvas coordinates.
list_all_pages_detailed List all pages in the Figma document with frame counts and duplicate detection
deduplicate_pages Find and remove duplicate pages, keeping the one with more content
organize_pages Reorder pages alphabetically or by a custom number prefix (01., 02., etc.)
cleanup_empty_pages Find and optionally delete pages with no children/frames
sync_css_to_figma Read a CSS file and sync all CSS variables to Figma variable collections
sync_figma_to_css Read Figma variable collections and generate a CSS file with custom properties
compare_design_tokens Compare CSS variables with Figma variables and report differences
apply_design_system Read a design system policy markdown file and apply styles to Figma
audit_design_consistency Audit a Figma file for design system policy violations
Spacing/${style.name} Permissions 4
network medium filesystem low shell high env_vars low