figma-mcp-go
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_variable_modeA | Add a new mode to an existing variable collection (e.g. Light/Dark, Desktop/Mobile). |
| apply_style_to_nodeA | Apply an existing local style (paint, text, effect, or grid) to a node, linking the node to that style. |
| bind_variable_to_nodeA | Bind a local variable to a node property, so the property is driven by the variable's value. Use 'fillColor' to bind a COLOR variable to the node's fill color. Use other fields (opacity, width, height, cornerRadius, itemSpacing, paddingTop, paddingRight, paddingBottom, paddingLeft) for FLOAT variables. |
| clone_nodeB | Clone an existing node, optionally repositioning it or placing it in a new parent. |
| create_componentA | Convert an existing FRAME node into a reusable COMPONENT. The frame is replaced in place by the new component. |
| create_effect_styleA | Create a new local effect style (drop shadow, inner shadow, or blur). |
| create_ellipseB | Create a new ellipse (circle/oval) on the current page or inside a parent node. |
| create_frameB | Create a new frame on the current page or inside a parent node. |
| create_grid_styleB | Create a new local layout grid style. |
| create_paint_styleB | Create a new local paint style with a solid fill color. |
| create_rectangleA | Create a new rectangle on the current page or inside a parent node. |
| create_textC | Create a new text node on the current page or inside a parent node. |
| create_text_styleC | Create a new local text style. |
| create_variableC | Create a new variable in a collection. |
| create_variable_collectionB | Create a new local variable collection. |
| delete_nodesA | Delete one or more nodes. This cannot be undone via MCP — use with care. |
| delete_styleA | Delete a style (paint, text, effect, or grid) by its ID. |
| delete_variableA | Delete a variable or an entire variable collection. Provide either variableId or collectionId. |
| detach_instanceA | Detach one or more component instances, converting them to plain frames. The link to the main component is broken; all visual properties are preserved. |
| export_frames_to_pdfA | Export multiple frames as a single multi-page PDF file. Each frame becomes one page in order. Ideal for pitch decks, proposals, and slide exports. |
| export_tokensA | Export all design tokens (variables and paint styles) as JSON or CSS custom properties. Ideal for bridging Figma variables into your codebase. |
| get_annotationsC | Get all dev-mode annotations in the current document or on a specific node. |
| get_design_contextB | Get a depth-limited tree of the current selection or page. More token-efficient than get_document for large files. |
| get_documentC | Get the current Figma page document tree |
| get_fontsB | List all fonts used in the current page, sorted by usage frequency. Useful for understanding typography without scanning all text nodes. |
| get_local_componentsB | Get all components defined in the current Figma file. |
| get_metadataB | Get metadata about the current Figma document: file name, pages, current page |
| get_nodeB | Get a specific Figma node by ID. Must use colon format e.g. '4029:12345', never hyphens. |
| get_nodes_infoB | Get detailed information about multiple Figma nodes by ID in a single call. |
| get_pagesA | List all pages in the document with their IDs and names. Lightweight alternative to get_document. |
| get_reactionsC | Get prototype/interaction reactions on a node. Useful for understanding interactive prototypes. |
| get_screenshotB | Export a screenshot of selected or specific nodes. Returns base64-encoded image data. |
| get_selectionC | Get the currently selected nodes in Figma |
| get_stylesC | Get all local styles in the document: paint, text, effect, and grid styles |
| get_variable_defsB | Get all local variable definitions: collections, modes, and values. Variables are Figma's design token system. |
| get_viewportB | Get the current Figma viewport: scroll center, zoom level, and visible bounds. |
| group_nodesA | Group two or more nodes into a GROUP. All nodes must share the same parent. |
| import_imageA | Import a base64-encoded image into Figma as a rectangle with an image fill. Use get_screenshot to capture images or provide your own base64 PNG/JPG. |
| move_nodesA | Move one or more nodes to an absolute position on the canvas. |
| navigate_to_pageA | Switch the active Figma page. Provide either pageId or pageName. |
| remove_reactionsA | Remove prototype reactions from a node. Omit indices to remove all reactions. Provide a zero-based indices array to remove specific reactions (use get_reactions first to see current indices). |
| rename_nodeC | Rename a node. |
| resize_nodesA | Resize one or more nodes. Provide width, height, or both. |
| save_screenshotsA | Export screenshots for multiple nodes and save them to the local filesystem. Returns metadata only (no base64). |
| scan_nodes_by_typesC | Find all nodes matching specific types (e.g. FRAME, COMPONENT, INSTANCE) within a subtree. |
| scan_text_nodesB | Scan all TEXT nodes in a subtree. Useful for extracting all copy from a component or frame. |
| search_nodesA | Search for nodes by name substring and/or type within a subtree. Avoids dumping the entire document tree. |
| set_auto_layoutA | Set or update auto-layout (flex) properties on an existing frame. |
| set_corner_radiusA | Set corner radius on one or more nodes. Provide a uniform cornerRadius or individual per-corner values. |
| set_fillsC | Set the fill color of a node. |
| set_opacityA | Set the opacity of one or more nodes (0 = fully transparent, 1 = fully opaque). |
| set_reactionsA | Set prototype reactions on a node. Use mode "replace" (default) to overwrite all reactions, or "append" to add to existing ones. Supported triggers: ON_CLICK, ON_HOVER, ON_PRESS, ON_DRAG, AFTER_TIMEOUT, MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_DOWN Supported action types: NODE (navigation), BACK, CLOSE, URL NODE navigation values: NAVIGATE, OVERLAY, SCROLL_TO, SWAP, CHANGE_TO Transition types: DISSOLVE, SMART_ANIMATE, MOVE_IN, MOVE_OUT, PUSH, SLIDE_IN, SLIDE_OUT DISSOLVE / SMART_ANIMATE: {"type":"DISSOLVE","duration":0.3,"easing":{"type":"EASE_OUT"}} Directional (PUSH, MOVE_IN, MOVE_OUT, SLIDE_IN, SLIDE_OUT): also require "direction" (LEFT|RIGHT|TOP|BOTTOM) and "matchLayers" (bool): {"type":"PUSH","direction":"LEFT","matchLayers":false,"duration":0.3,"easing":{"type":"EASE_OUT"}} Each reaction has a "trigger" and an "actions" array (plural). Each action in the array is an Action object. Example — on-click navigate with dissolve: {"nodeId":"1:2","reactions":[{"trigger":{"type":"ON_CLICK"},"actions":[{"type":"NODE","destinationId":"1:3","navigation":"NAVIGATE","transition":{"type":"DISSOLVE","duration":0.3,"easing":{"type":"EASE_OUT"}},"preserveScrollPosition":false}]}]} Example — on-click navigate with push (directional transition): {"nodeId":"1:2","reactions":[{"trigger":{"type":"ON_CLICK"},"actions":[{"type":"NODE","destinationId":"1:3","navigation":"NAVIGATE","transition":{"type":"PUSH","direction":"LEFT","matchLayers":false,"duration":0.3,"easing":{"type":"EASE_OUT"}},"preserveScrollPosition":false}]}]} Example — open URL on hover: {"nodeId":"1:2","reactions":[{"trigger":{"type":"ON_HOVER"},"actions":[{"type":"URL","url":"https://example.com"}]}]} Example — auto-advance after 3 seconds: {"nodeId":"1:2","reactions":[{"trigger":{"type":"AFTER_TIMEOUT","timeout":3000},"actions":[{"type":"NODE","destinationId":"1:4","navigation":"NAVIGATE","transition":{"type":"DISSOLVE","duration":0.3,"easing":{"type":"EASE_OUT"}},"preserveScrollPosition":false}]}]} Example — go back on click: {"nodeId":"1:2","reactions":[{"trigger":{"type":"ON_CLICK"},"actions":[{"type":"BACK"}]}]} |
| set_strokesC | Set the stroke color and weight of a node. |
| set_textB | Update the text content of an existing TEXT node. |
| set_variable_valueB | Set a variable's value for a specific mode. |
| swap_componentA | Swap the main component of an existing INSTANCE node, replacing it with a different component while keeping position and size. |
| ungroup_nodesA | Ungroup one or more GROUP nodes, moving their children to the parent and removing the group. |
| update_paint_styleA | Update the name, color, or description of an existing paint style. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| annotation_conversion_strategy | Strategy for converting manual annotations to Figma's native annotations |
| bulk_rename_strategy | Rename nodes across a design following a naming convention |
| design_strategy | Best practices for working with Figma designs |
| design_token_generation_strategy | Extract raw values from an existing design and build a structured variable + style token system |
| generate_color_palette | Generate a complete semantic color palette (primitive scale + semantic aliases) from one or more brand colors |
| generate_component_variants | Generate design variants of an existing component or frame (size, color, state, theme) |
| generate_type_scale | Generate a complete typography scale (text styles) from a base font and size |
| reaction_to_connector_strategy | Strategy for analyzing Figma prototype reactions and mapping interaction flows |
| read_design_strategy | Best practices for reading Figma designs with figma-mcp-go |
| style_audit_strategy | Audit a design for nodes using raw values instead of linked styles or variables |
| swap_overrides_instances | Strategy for transferring overrides between component instances in Figma |
| 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/vkhanhqui/figma-mcp-go'
If you have feedback or need assistance with the MCP directory API, please join our Discord server