figma-free-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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