Claude Talk to Figma 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_infoB | Get detailed information about multiple nodes in Figma |
| get_stylesB | Get all styles from the current Figma document |
| get_local_componentsA | 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_channelB | Join a specific channel to communicate with Figma |
| export_node_as_imageC | Export a node as an image from Figma |
| create_pageA | Create a new page in the current Figma document |
| delete_pageB | Delete a page from the current Figma document |
| rename_pageB | Rename an existing page in the Figma document |
| get_pagesB | Get all pages in the current Figma document |
| set_current_pageA | DEPRECATED — this stateful command is blocked by the relay server. Instead, pass the target page's node ID as parentId on creation commands (e.g., create_rectangle, create_frame). Use get_pages to discover page IDs. |
| 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_textC | Create a new text element in Figma |
| create_ellipseC | Create a new ellipse in Figma |
| create_polygonC | Create a new polygon in Figma |
| create_starB | Create a new star in Figma |
| group_nodesC | Group nodes in Figma |
| ungroup_nodesC | Ungroup nodes in Figma |
| clone_nodeB | Clone an existing node in Figma |
| insert_childB | Insert a child node inside a parent node in Figma |
| flatten_nodeA | Flatten a node in Figma (e.g., for boolean operations or converting to path) |
| boolean_operationA | 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_nodeC | Resize a node in Figma |
| delete_nodeB | Delete a node from Figma |
| set_corner_radiusB | Set the corner radius of a node in Figma |
| set_auto_layoutB | Configure auto layout properties for a node in Figma |
| set_effectsB | 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_guideB | 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_annotationB | 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_contentsC | 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_sizeA | 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_segmentsB | Get text segments with specific styling in a text node |
| set_text_style_idB | Apply a text style to a text node in Figma |
| load_font_asyncB | Load a font asynchronously in Figma |
| set_text_alignA | 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_reactionsA | Set prototype interactions (reactions) on a node in Figma. Use this to add hover effects, click interactions, etc. For component variants, set on the default variant to add 'While hovering -> Change to hover variant' interactions. |
| get_reactionsA | Read all prototype interactions (reactions) from a node in Figma. Useful for debugging and inspecting existing interactions. |
| detach_instanceA | Detach a component instance, converting it into a regular frame. This breaks the link with the main component. |
| set_image_fillC | Apply image to node from URL or base64 data |
| get_image_from_nodeB | Extract image metadata from a node |
| replace_image_fillB | Replace existing image on node with new image while preserving transform |
| apply_image_transformA | Adjust image position, scale, and rotation within node. Rotates the IMAGE inside the node, not the node itself. |
| set_image_filtersB | 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_modeA | 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_stickyB | 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_textA | 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. |
| create_text_styleC | Create a reusable text style (typography) in Figma's local styles. This is useful for design system consistency. |
| create_paint_styleA | Create a reusable color/paint style (SOLID) in Figma's local styles. |
| create_effect_styleB | Create a reusable effect style (shadows, blurs) in Figma's local styles. |
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/arinspunk/claude-talk-to-figma-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server