Talk to Figma 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_figma_commentsA | Stub: reading Figma comments requires the REST API, which is disabled in this build. The Figma Plugin API cannot access comments, so there is no plugin-based equivalent. |
| post_figma_commentA | Stub: posting Figma comments requires the REST API, which is disabled in this build. The Figma Plugin API cannot post comments, so there is no plugin-based equivalent. |
| get_document_infoB | Get detailed information about the current Figma document |
| get_selectionB | Get information about the current selection in Figma |
| read_my_designA | Get detailed information about the current selection in Figma, including all node details |
| get_node_infoB | Get detailed information about a specific node in Figma |
| get_nodes_infoC | Get detailed information about multiple nodes in Figma |
| create_rectangleC | Create a new rectangle in Figma |
| create_frameC | Create a new frame in Figma |
| create_textA | Create a new text element in Figma. To match an existing design-system layer (e.g. a Poppins Bold card title), set fontFamily/fontStyle, textAlignHorizontal, width, and lineHeight to the target layer's values instead of relying on the Inter defaults. |
| set_fill_colorC | Set the fill color of a node in Figma can be TextNode or FrameNode |
| set_stroke_colorB | Set the stroke color of a node in Figma |
| move_nodeC | Move a node to a new position in Figma |
| clone_nodeA | Clone an existing node in Figma. By default x/y are PARENT-RELATIVE (same coordinate space as Figma's x/y). Set positionMode to "frame" to pass absolute canvas coordinates instead, which are converted to the parent's local space. The response returns both the parent-relative position and the absolute bounding box so you can verify placement. |
| resize_nodeC | Resize a node in Figma |
| delete_nodeC | Delete a node from Figma |
| delete_multiple_nodesB | Delete multiple nodes from Figma at once |
| export_node_as_imageC | Export a node as an image from Figma |
| set_text_contentA | Set the text content of an existing text node in Figma |
| get_stylesA | Get all styles from the current Figma document |
| get_local_componentsA | Get all local components from the Figma document |
| get_annotationsB | Get all annotations in the current document or specific node |
| set_annotationB | Create or update an annotation |
| set_multiple_annotationsC | Set multiple annotations parallelly in a node |
| create_component_instanceA | Create an instance of a component in Figma. For LOCAL components (from get_local_components), use componentId with the id field. For published LIBRARY components, use componentKey with the publishedKey field. |
| get_instance_overridesA | Get 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. |
| set_instance_overridesA | Apply 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_corner_radiusA | Set the corner radius of a node in Figma |
| scan_text_nodesC | Scan all text nodes in the selected Figma node |
| scan_nodes_by_typesC | Scan for child nodes with specific types in the selected Figma node |
| set_multiple_text_contentsB | Set multiple text contents parallelly in a node |
| set_layout_modeB | Set the layout mode and wrap behavior of a frame in Figma |
| set_paddingB | Set padding values for an auto-layout frame in Figma |
| set_axis_alignA | Set primary and counter axis alignment for an auto-layout frame in Figma |
| set_layout_sizingA | Set horizontal and vertical sizing modes for an auto-layout frame in Figma |
| set_item_spacingA | Set distance between children in an auto-layout frame |
| get_reactionsA | Get 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. |
| set_default_connectorB | Set a copied connector node as the default connector |
| create_connectionsB | Create connections between nodes using the default connector style |
| set_focusA | Set focus on a specific node in Figma by selecting it and scrolling viewport to it |
| set_selectionsA | Set selection to multiple nodes in Figma and scroll viewport to show them |
| join_channelA | Optional: switch the Figma communication channel. The server auto-joins the default channel ('cursor-figma') on startup, so this is only needed to use a non-default channel or to recover after a connection issue. |
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 |
| annotation_conversion_strategy | Strategy for converting manual annotations to Figma's native annotations |
| swap_overrides_instances | Guide to swap instance overrides between instances |
| reaction_to_connector_strategy | Strategy for converting Figma prototype reactions to connector lines using the output of 'get_reactions' |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 42 tools
There are redundant tools like get_selection and read_my_design which both retrieve selection info with unclear distinction. scan_text_nodes and scan_nodes_by_types also overlap, as you can filter by type. While most tools are distinct, these overlaps make misselection likely.
Most tool names follow a verb_noun pattern (get_, set_, create_, delete_, move_, etc.). A few outliers like read_my_design, get_figma_comments, and post_figma_comment break the convention slightly, but overall it's fairly consistent.
42 tools is excessive for the scope, with many granular variants (single vs multiple) that could be consolidated with parameters. Stub tools for comments add to the clutter, making it heavy and potentially overwhelming for agents.
The set covers many core Figma operations (read nodes, create shapes, edit layout, export), but lacks common operations like modifying text font properties, grouping nodes, deleting annotations, and comments are non-functional stubs. These gaps will require workarounds or cause failures.