figma-free-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_document_infoA | Get detailed information about the current Figma document |
| get_selectionB | Get information about the current selection in Figma |
| get_node_infoB | Get detailed information about a specific node in Figma |
| get_nodes_infoA | Get detailed information about multiple nodes in Figma |
| get_stylesA | Get all styles from the current Figma document |
| get_local_componentsB | Get all local components from the Figma document |
| get_remote_componentsA | Get available components from team libraries in Figma |
| scan_text_nodesC | Scan all text nodes in the selected Figma node |
| join_channelC | Join a specific channel to communicate with Figma |
| export_node_as_imageC | Export a node as an image from Figma |
| create_pageB | Create a new page in the current Figma document |
| delete_pageB | Delete a page from the current Figma document |
| rename_pageC | Rename an existing page in the Figma document |
| get_pagesA | Get all pages in the current Figma document |
| set_current_pageB | Switch to a specific page in the Figma document |
| duplicate_pageA | Duplicate an existing page in the Figma document, creating a complete copy of all its contents |
| create_rectangleB | Create a new rectangle in Figma |
| create_frameC | Create a new frame in Figma |
| create_textB | Create a new text element in Figma |
| create_ellipseB | Create a new ellipse in Figma |
| create_polygonB | Create a new polygon in Figma |
| create_starC | Create a new star in Figma |
| group_nodesC | Group nodes in Figma |
| ungroup_nodesC | Ungroup nodes in Figma |
| clone_nodeC | Clone an existing node in Figma |
| insert_childB | Insert a child node inside a parent node in Figma |
| flatten_nodeB | Flatten a node in Figma (e.g., for boolean operations or converting to path) |
| boolean_operationB | Perform a boolean operation (union, subtract, intersect, exclude) on two or more nodes. All nodes must share the same parent. |
| set_fill_colorA | Set the fill color of a node in Figma. Alpha component defaults to 1 (fully opaque) if not specified. Use alpha 0 for fully transparent. |
| set_stroke_colorB | Set the stroke color of a node in Figma (defaults: opacity 1, weight 1) |
| set_selection_colorsA | Recursively change all stroke and fill colors of a node and all its descendants. Works like Figma's 'Selection colors' feature - perfect for recoloring icon instances. |
| move_nodeB | Move a node to a new position in Figma |
| resize_nodeB | Resize a node in Figma |
| delete_nodeC | Delete a node from Figma |
| set_corner_radiusC | Set the corner radius of a node in Figma |
| set_auto_layoutC | Configure auto layout properties for a node in Figma |
| set_effectsC | Set the visual effects of a node in Figma |
| set_effect_style_idC | Apply an effect style to a node in Figma |
| rotate_nodeA | Rotate a node in Figma by a specified angle in degrees (clockwise). Use relative=true to add to the current rotation instead of setting an absolute value. Note: locked nodes can still be rotated — the Plugin API bypasses the UI lock by design. |
| set_node_propertiesA | Set visibility, lock state, and/or opacity of a node in Figma. Only provided properties are changed; omitted properties remain unchanged. |
| reorder_nodeA | 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_frameA | 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_gradientA | Set a gradient fill on a node in Figma. Supports linear, radial, angular, and diamond gradients. Replaces all existing fills (same behavior as set_fill_color). |
| set_imageA | Set an image fill on a node from base64-encoded image data. Supports PNG, JPEG, GIF, WebP. Max ~5MB after decode. |
| set_gridB | Apply layout grids to a frame node in Figma. Supports columns, rows, and grid patterns. |
| get_gridA | Read layout grids from a frame node in Figma |
| set_guideA | Set guides on a page in Figma. Replaces all existing guides on the page. |
| get_guideC | Read guides from a page in Figma |
| set_annotationA | Add an annotation label to a node in Figma. Uses the proposed Annotations API — requires Figma Desktop with enableProposedApi. |
| get_annotationC | Read annotations from a node in Figma. Uses the proposed Annotations API. |
| rename_nodeB | Rename a node (frame, component, group, etc.) in Figma |
| set_text_contentB | Set the text content of an existing text node in Figma |
| set_multiple_text_contentsB | Set multiple text contents parallelly in a node |
| set_font_nameB | Set the font name and style of a text node in Figma |
| set_font_sizeB | Set the font size of a text node in Figma |
| set_font_weightB | Set the font weight of a text node in Figma |
| set_letter_spacingB | Set the letter spacing of a text node in Figma |
| set_line_heightB | Set the line height of a text node in Figma |
| set_paragraph_spacingB | Set the paragraph spacing of a text node in Figma |
| set_text_caseB | Set the text case of a text node in Figma |
| set_text_decorationC | Set the text decoration of a text node in Figma |
| get_styled_text_segmentsA | Get text segments with specific styling in a text node |
| set_text_style_idC | Apply a text style to a text node in Figma |
| load_font_asyncC | Load a font asynchronously in Figma |
| set_text_alignB | Set the text alignment of a text node in Figma. Use textAlignHorizontal RIGHT for RTL/Arabic text. |
| create_component_instanceB | Create an instance of a component in Figma |
| create_component_from_nodeB | Convert an existing node (frame, group, etc.) into a reusable component in Figma |
| create_component_setA | Create a component set (variants) from multiple component nodes in Figma |
| set_instance_variantA | 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_fillC | Apply image to node from URL or base64 data |
| get_image_from_nodeB | Extract image metadata from a node |
| replace_image_fillA | Replace existing image on node with new image while preserving transform |
| apply_image_transformC | Adjust image position, scale, and rotation within node. Rotates the IMAGE inside the node, not the node itself. |
| set_image_filtersC | Apply color and light adjustments to image fills |
| set_svgA | 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_svgA | Export a single node as an SVG string from Figma. Returns the SVG markup including all nested children. |
| get_variablesA | List all variable collections and their variables in the current Figma file. Returns collections with their modes and variables. |
| set_variableA | Create or update a variable in a Figma variable collection. Creates the collection if collectionName is provided and it doesn't exist. |
| apply_variable_to_nodeA | Bind a variable to a node property in Figma. Call once per field — for multiple fields, call multiple times. |
| switch_variable_modeB | Switch the variable mode on a node for a specific collection. This changes which mode's values are used for bound variables. |
| get_figjam_elementsA | 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_stickyA | Create a sticky note in a FigJam board. Sticky notes are the primary way to add text content in FigJam. |
| set_sticky_textB | Update the text content of an existing FigJam sticky note. |
| create_shape_with_textB | Create a FigJam shape with text inside. Useful for flowcharts, diagrams, and process maps. Supported shapes: SQUARE, ELLIPSE, ROUNDED_RECTANGLE, DIAMOND, TRIANGLE_UP, TRIANGLE_DOWN, PARALLELOGRAM_RIGHT, PARALLELOGRAM_LEFT. |
| create_connectorA | 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_sectionB | Create a FigJam section. Sections are used to group and organise content on the FigJam board. They appear as labelled coloured regions. |
| auto_connectA | Automatically detect and connect to an active Figma plugin channel. No channel ID needed. |
| list_active_channelsA | List all active Figma plugin channels currently connected to the WebSocket server. |
| sync_css_to_figmaB | Read a CSS file and sync all CSS variables to Figma variable collections |
| sync_figma_to_cssA | Read Figma variable collections and generate a CSS file with custom properties |
| compare_design_tokensB | Compare CSS variables with Figma variables and report differences |
| apply_design_systemB | Read a design system policy markdown file and apply styles to Figma |
| audit_design_consistencyC | Audit a Figma file for design system policy violations |
| list_all_pages_detailedA | List all pages in the Figma document with frame counts and duplicate detection |
| deduplicate_pagesB | Find and remove duplicate pages, keeping the one with more content |
| organize_pagesA | Reorder pages alphabetically or by a custom number prefix (01., 02., etc.) |
| cleanup_empty_pagesA | Find and optionally delete pages with no children/frames |
| react_to_figmaB | Analyze a React/TSX component file and create corresponding Figma frames and elements |
| css_class_to_figma_styleB | Convert CSS class definitions to Figma local paint/text styles |
| generate_component_variantsA | Generate Figma component variants (default, hover, active, disabled) from a base component |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| design_strategy | Best practices for working with Figma designs |
| read_design_strategy | Best practices for reading Figma designs |
| text_replacement_strategy | Systematic approach for replacing text in Figma designs |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/haju-xp/figma-free-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server