Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
add_page

Add a new page to the Figma document.

add_variable_mode

Add a new mode to an existing variable collection (e.g. Light/Dark, Desktop/Mobile). IMPORTANT — Figma free plan only allows 1 mode per collection; calling this tool on a free-plan account will return the error 'Limited to 1 modes only'. If that error occurs, stop retrying and switch to the name-prefix workaround: keep the single default mode and create variables prefixed by mode, e.g. 'light/color-bg' and 'dark/color-bg' in the same collection. Tell the user that native multi-mode variables require a paid Figma plan (Professional or above).

apply_style_to_node

Apply an existing local style (paint, text, effect, or grid) to a node, linking the node to that style.

batch_rename_nodes

Rename multiple nodes using find/replace, regex substitution, or prefix/suffix addition.

bind_variable_to_node

Bind a local variable to a node property so the property is driven by the variable's value. COLOR variables: use fillColor or strokeColor. BOOLEAN variables: use visible. FLOAT variables: use opacity, rotation, width, height, cornerRadius, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius, strokeWeight, itemSpacing, paddingTop, paddingRight, paddingBottom, paddingLeft.

clone_node

Clone an existing node, optionally repositioning it or placing it in a new parent.

create_component

Convert an existing FRAME node into a reusable COMPONENT. The frame is replaced in place by the new component.

create_effect_style

Create a new local effect style (drop shadow, inner shadow, or blur).

create_ellipse

Create a new ellipse (circle/oval) on the current page or inside a parent node.

create_frame

Create a new frame on the current page or inside a parent node.

create_grid_style

Create a new local layout grid style.

create_paint_style

Create a new local paint style with a solid fill color.

create_rectangle

Create a new rectangle on the current page or inside a parent node.

create_section

Create a Figma Section node on the current page. Sections are the modern way to organize frames and groups on a page.

create_text

Create a new text node on the current page or inside a parent node. The font is loaded automatically before insertion. Returns the created node ID and bounds. Use set_text to update the content of an existing text node.

create_text_style

Create a new local text style (typography preset). Returns the new style's ID. Apply it to nodes with apply_style_to_node. Use get_styles to list existing text styles.

create_variable

Create a new variable (design token) inside an existing collection. Returns the new variable's ID. Use get_variable_defs to find collection IDs, set_variable_value to set values per mode, and bind_variable_to_node to apply the variable to a node property.

create_variable_collection

Create a new local variable collection with an optional initial mode name. NOTE — Figma free plan limits each collection to 1 mode. If you need Light/Dark (or any multi-mode) theming and the user is on the free plan, do NOT try to call add_variable_mode; instead use the name-prefix workaround: create all variables in a single collection and prefix each variable name with its mode, e.g. 'light/color-bg' and 'dark/color-bg'. Inform the user of this limitation.

delete_nodes

Delete one or more nodes. This cannot be undone via MCP — use with care.

delete_page

Delete a page from the Figma document. Cannot delete the only remaining page.

delete_style

Delete a style (paint, text, effect, or grid) by its ID.

delete_variable

Delete a single variable (provide variableId) or an entire collection and all its variables (provide collectionId). Provide exactly one of the two — not both.

detach_instance

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_pdf

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_tokens

Export all design tokens (variables and paint styles) as JSON or CSS custom properties. Ideal for bridging Figma variables into your codebase.

find_replace_text

Find and replace text content across all TEXT nodes in a subtree. Searches the entire current page if no nodeId is given.

get_annotations

Get dev-mode annotations in the current document or scoped to a specific node. Returns annotation objects with label text, measurement type, and the ID of the annotated node. Omit nodeId to retrieve all annotations on the current page.

get_design_context

Get a depth-limited, token-efficient tree of the current selection or page. Use this instead of get_document when exploring large files. Supports detail levels (minimal/compact/full) and dedupe_components for pages heavy with repeated component instances.

get_document

Get the full node tree of the current page (not the whole file — only the active page). Returns all nodes recursively and can be very large. Prefer get_design_context for exploration or when token efficiency matters.

get_fonts

List all fonts used in the current page, sorted by usage frequency. Useful for understanding typography without scanning all text nodes.

get_local_components

Get all components defined in the current Figma file.

get_metadata

Get metadata about the current Figma document: file name, pages, current page

get_node

Get a single node by ID with full detail. Use get_nodes_info to fetch multiple nodes in one round-trip instead of calling this repeatedly. Node ID must be colon format e.g. '4029:12345', never hyphens.

get_nodes_info

Get full details for multiple nodes by ID in one round-trip. Prefer this over calling get_node repeatedly when you need several nodes.

get_pages

List all pages in the document with their IDs and names. Lightweight alternative to get_document.

get_reactions

Get the prototype reactions defined on a node. Returns an array of reaction objects — each has a trigger (e.g. ON_CLICK, ON_HOVER, AFTER_TIMEOUT) and an actions array (navigate to node, open URL, go back, etc.). Use set_reactions to add or replace reactions, remove_reactions to delete them.

get_screenshot

Export a screenshot of one or more nodes as base64-encoded image data (held in memory). Use save_screenshots instead when you want to write images directly to disk without base64 in the response.

get_selection

Get the nodes currently selected in Figma. Returns an empty array if nothing is selected. Use get_design_context or get_node to retrieve deeper detail about a specific node by ID.

get_styles

Get all local styles in the document (paint, text, effect, and grid). Returns each style's ID, name, type, and properties. Use the style ID with apply_style_to_node or update_paint_style. For design tokens (variables), use get_variable_defs instead.

get_variable_defs

Get all local variable definitions: collections, modes, and values. Variables are Figma's design token system.

get_viewport

Get the current Figma viewport: scroll center, zoom level, and visible bounds.

group_nodes

Group two or more nodes into a GROUP. All nodes must share the same parent.

import_image

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.

lock_nodes

Lock one or more nodes to prevent accidental edits in Figma.

move_nodes

Move one or more nodes to an absolute canvas position. The same x/y is applied to every node independently (not a relative offset from current position).

navigate_to_page

Switch the active Figma page. Provide either pageId or pageName.

remove_reactions

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_node

Rename a single node by ID. Returns the updated node with its new name. Use batch_rename_nodes to rename multiple nodes at once or to apply find/replace patterns across many nodes.

rename_page

Rename an existing page in the Figma document.

reorder_nodes

Change the z-order (layer stack position) of one or more nodes.

reparent_nodes

Move one or more nodes to a different parent frame, group, or section.

resize_nodes

Resize one or more nodes. The same width/height is applied to every node in the list independently. Provide width, height, or both.

rotate_nodes

Rotate one or more nodes to an absolute angle in degrees.

save_screenshots

Export screenshots for multiple nodes and write them to the local filesystem. Returns file metadata (path, size, dimensions) — no base64 in the response. Use get_screenshot instead when you need the image data in memory.

scan_nodes_by_types

Find all nodes of specific types in a subtree, regardless of name. Use search_nodes instead when you need to filter by name.

scan_text_nodes

Scan all TEXT nodes in a subtree and return their content. Shorthand for scan_nodes_by_types with ['TEXT'] — use when you only need text copy from a component or frame.

search_nodes

Search for nodes by name substring and/or type within a subtree. Use this when you know (part of) the node name. Use scan_nodes_by_types when you want all nodes of a type regardless of name.

set_auto_layout

Set or update auto-layout (flex) properties on an existing frame.

set_blend_mode

Set the blend mode of one or more nodes (e.g. MULTIPLY, SCREEN, OVERLAY).

set_constraints

Set layout constraints (pinning behaviour) on one or more nodes relative to their parent.

set_corner_radius

Set corner radius on one or more nodes. Provide a uniform cornerRadius or individual per-corner values.

set_effects

Apply one or more effects (drop shadow, inner shadow, layer blur, background blur) directly to a node. Replaces all existing effects. Pass an empty array to clear all effects.

set_fills

Set the fill color on a single node (takes one nodeId, not an array). Use mode='append' to stack a new fill on top of existing fills instead of replacing them.

set_opacity

Set the opacity of one or more nodes (0 = fully transparent, 1 = fully opaque).

set_reactions

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_strokes

Set the stroke color and weight on a single node (takes one nodeId, not an array). Use mode='append' to stack a new stroke on top of existing strokes instead of replacing them.

set_text

Update the text content of an existing TEXT node.

set_variable_value

Set a variable's value for a specific mode.

set_visible

Show or hide one or more nodes by setting their visibility.

swap_component

Swap the main component of an existing INSTANCE node, replacing it with a different component while keeping position and size.

ungroup_nodes

Ungroup one or more GROUP nodes, moving their children to the parent and removing the group.

unlock_nodes

Unlock one or more nodes, allowing them to be edited again.

update_paint_style

Update an existing paint style's name, color, or description. Only paint styles support in-place updates — to modify text, effect, or grid styles, use delete_style and recreate them.

Prompts

Interactive templates invoked by user choice

NameDescription
annotation_conversion_strategyStrategy for converting manual annotations to Figma's native annotations
bulk_rename_strategyRename nodes across a design following a naming convention
design_strategyBest practices for working with Figma designs
design_token_generation_strategyExtract raw values from an existing design and build a structured variable + style token system
generate_color_paletteGenerate a complete semantic color palette (primitive scale + semantic aliases) from one or more brand colors
generate_component_variantsGenerate design variants of an existing component or frame (size, color, state, theme)
generate_type_scaleGenerate a complete typography scale (text styles) from a base font and size
reaction_to_connector_strategyStrategy for analyzing Figma prototype reactions and mapping interaction flows
read_design_strategyBest practices for reading Figma designs with figma-mcp-go
style_audit_strategyAudit a design for nodes using raw values instead of linked styles or variables
swap_overrides_instancesStrategy for transferring overrides between component instances in Figma
text_replacement_strategySystematic approach for replacing text in Figma designs

Resources

Contextual data attached and managed by the client

NameDescription

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