Skip to main content
Glama
yhoyoex

OpenCode Figma MCP

by yhoyoex

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FIGMA_TOKENNoAccepted alias for FIGMA_ACCESS_TOKEN.
FIGMA_API_KEYNoAccepted alias for FIGMA_ACCESS_TOKEN.
FIGMA_ACCESS_TOKENNoFigma personal access token used by REST API tools such as get_figma_design_from_url. Create one in Figma with the file_content:read scope.

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

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

Tools

Functions exposed to the LLM to take actions

NameDescription
get_document_infoA

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_textC

Create a new text element in Figma

create_node_from_svgA

Create vector nodes from SVG markup (e.g. to replace raster PNG icons with editable vectors). Figma wraps the result in a FRAME containing the vector paths.

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_nodeC

Clone an existing node in Figma

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_sizingC

Set horizontal and vertical sizing modes for a frame, component, component set, instance or text node 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

set_image_fillA

Fill a node in Figma with an image from a local file path, a URL, or base64 data (replaces the node's existing fills)

rename_nodeA

Rename a node in Figma

create_sectionC

Create a section in Figma to group related content on the canvas

set_parentA

Move a node into a new parent node (e.g. a section, frame or group). Preserves the node's absolute position unless x/y are provided

create_component_from_nodeB

Convert an existing node (e.g. a frame) into a Figma main Component. The node is replaced in place by the new component.

combine_as_variantsA

Combine multiple main Components into a Component Set (variants). Each component name must use the variant format "Prop=Value, Prop2=Value" (e.g. "Type=Primary, Size=Large") so Figma can derive the variant properties. Variants are then laid out in a grid (max 4 columns, 24px gap, 24px padding) and the component set is resized to fit them (skipped if the set uses auto layout).

add_component_propertyA

Add a component property (TEXT, BOOLEAN or INSTANCE_SWAP) to a COMPONENT or COMPONENT_SET. Optionally link it to a child node: TEXT controls the node's characters, BOOLEAN its visibility, INSTANCE_SWAP the main component of a nested instance.

swap_instanceB

Swap the main component of an instance, preserving overrides where possible

get_local_variablesA

Get all local variable collections (with modes) and variables in the current document. Color values are returned as hex, aliases as { aliasOf }.

create_variable_collectionA

Create a local variable collection. The default mode is renamed to modes[0]; remaining modes are added (multiple modes may require a paid Figma plan).

create_variableB

Create a variable in a collection and optionally set its value. Use slashes in the name for grouping (e.g. "color/primary"). Colors use RGBA 0-1.

set_variable_valueC

Set the value of a variable for a mode. Value may be a literal or an alias to another variable ({aliasOf: variableId}).

delete_variableA

DESTRUCTIVE: permanently delete a local variable. Nodes bound to it lose the binding. Cannot be undone through this tool.

delete_variable_collectionA

DESTRUCTIVE: permanently delete a local variable collection together with ALL variables and modes inside it. Nodes bound to those variables lose their bindings. Cannot be undone through this tool.

bind_variableB

Bind a variable to a node property. Fields: fills/strokes (COLOR, bound to the first paint), width, height, itemSpacing, counterAxisSpacing, paddingLeft/Right/Top/Bottom, topLeftRadius/topRightRadius/bottomLeftRadius/bottomRightRadius, strokeWeight, opacity, characters, visible. Shortcuts: "padding" (4 sides), "cornerRadius" (4 corners). Pass variableId null to unbind.

add_interactionA

Add a prototype interaction (trigger + action) to a node. NAVIGATE/SWAP/OVERLAY need a top-level frame on the same page as destination, SCROLL_TO a node inside the same top-level frame, CHANGE_TO a variant of the same component set (source must be an instance or inside a variant). Directional transitions (MOVE_IN, MOVE_OUT, PUSH, SLIDE_IN, SLIDE_OUT) require a direction. Appends to existing reactions unless replace is true.

set_reactionsA

Replace all prototype reactions of a node with raw Figma Plugin API Reaction objects ({ trigger, actions: [...] }). Use for advanced cases (e.g. SET_VARIABLE, CONDITIONAL, ON_KEY_DOWN). Trigger timeout/delay are in milliseconds, transition duration in seconds.

remove_interactionsB

Remove prototype interactions from a node: all of them, or only those with a given trigger type

get_flow_starting_pointsA

Get the prototype flow starting points of the current page

set_flow_starting_pointA

Add (or rename) a prototype flow starting point on a top-level frame

remove_flow_starting_pointB

Remove the prototype flow starting point of a frame

set_overlay_settingsA

Read the overlay settings (position, background, close on click outside) of a frame used as an overlay. These properties are READ-ONLY in the Figma Plugin API: calling with any setting returns an error together with the current values; set them manually in Figma's Prototype panel.

set_scroll_behaviorA

Set prototype scrolling: overflowDirection on a frame, and/or make a child FIXED (fix position when scrolling) or SCROLLS. FIXED moves the node to the top of its parent's layer order (last child); in an auto-layout parent this also changes the node's position in the flow. SCROLLS moves a fixed node back to the top of the scrolling children. STICKY_SCROLLS is not supported by the Figma Plugin API and returns an error.

set_frame_propertiesA

Set frame layout properties not covered by other tools: layoutPositioning (ABSOLUTE takes a child out of its auto-layout parent's flow, AUTO puts it back), itemReverseZIndex (auto-layout stacking: true = first child on top), clipsContent (clip overflowing children). x/y are applied last, so an ABSOLUTE child can be positioned in the same call.

create_text_styleA

Create a local text style (typography token). Use slashes in the name to group styles, e.g. 'Heading/H1'. Returns the style id for apply_text_style.

update_text_styleA

Update properties of an existing local text style. Text nodes using the style update automatically.

apply_text_styleB

Apply a text style to one or more TEXT nodes (also works on text inside instances, e.g. 'I;'). Reports per-node success.

set_visibleA

Show or hide one or more nodes (also nodes inside instances, e.g. 'I;', which creates a visibility override). Reports per-node success.

get_main_componentB

Return the main component (id, name, variant name and component set) of one or more INSTANCE nodes, read directly in the plugin (no REST API).

set_text_decorationA

Set underline / strikethrough / none on one or more TEXT nodes (also text inside instances, e.g. 'I;'), optionally only for a character range [start, end). Reports per-node success.

delete_styleA

Delete a local style (text, paint, effect or grid) by ID. Nodes using it keep their current values but are detached.

set_effectsA

Replace the effects (drop/inner shadows, layer/background blur) of a node. Pass an empty array to clear all effects.

create_effect_styleA

Create a local effect style (shadow/blur token), e.g. 'Shadow/lg'. Returns the style id for apply_effect_style.

update_effect_styleB

Update the name, description or effects of a local effect style. Nodes using the style update automatically.

apply_effect_styleA

Apply an effect style to one or more nodes (frames, components, instances, shapes). Pass styleId '' to detach. Reports per-node success.

get_design_contextA

Read a Figma design from the open file through the plugin and return a compact, code-oriented spec (layout, styles, text, components, variables, assets) for generating UI code. Uses the given nodeIds or the current selection. Spec format: each node references shared values in styles by id (layout*, fill*, stroke*, effect*, text*). Layout values are CSS-like (flex, gap, padding, sizing fill/hug/fixed). exportAs: svg marks icons/vectors to export as assets instead of rebuilding them; assets lists icons and image fills to download with download_design_assets. designStyles and variables give design-token names to map onto the project's theme.

get_figma_design_from_urlA

Read a Figma design through the Figma REST API (no plugin needed, requires FIGMA_ACCESS_TOKEN). Pass a Figma URL (figma.com/design//...?node-id=1-2) or fileKey + nodeId. With a node it returns the code-oriented spec; without a node it returns the file outline (pages and top-level frames) so you can pick one. Spec format: each node references shared values in styles by id (layout*, fill*, stroke*, effect*, text*). Layout values are CSS-like (flex, gap, padding, sizing fill/hug/fixed). exportAs: svg marks icons/vectors to export as assets instead of rebuilding them; assets lists icons and image fills to download with download_design_assets. designStyles and variables give design-token names to map onto the project's theme.

download_design_assetsA

Download icons, illustrations and image fills from a Figma design into a local folder so generated code can reference them. Use source 'plugin' for designs read with get_design_context, or 'rest' (with url/fileKey) for designs read with get_figma_design_from_url.

join_channelC

Join a specific channel to communicate with Figma

Prompts

Interactive templates invoked by user choice

NameDescription
design_strategyBest practices for working with Figma designs
read_design_strategyBest practices for reading Figma designs
text_replacement_strategySystematic approach for replacing text in Figma designs
annotation_conversion_strategyStrategy for converting manual annotations to Figma's native annotations
swap_overrides_instancesGuide to swap instance overrides between instances
reaction_to_connector_strategyStrategy for converting Figma prototype reactions to connector lines using the output of 'get_reactions'
design_to_codeWorkflow for turning a Figma design into code

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 79 tools

Disambiguation2/5

The set contains many overlapping read/selection tools, such as get_selection vs. read_my_design and get_node_info vs. get_nodes_info, making it hard to know which to call. Similar pairs exist for annotations (set_annotation vs. set_multiple_annotations) and selection (set_focus vs. set_selections), so boundaries are often unclear despite descriptive labels.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern: get_*, set_*, create_*, delete_*, apply_*, bind_*, etc. A few names like read_my_design and join_channel break the pattern, but overall naming is predictable and consistent.

Tool Count1/5

79 tools is far beyond what is appropriate for a Figma plugin, exceeding the 50+ threshold for extreme mismatch. While the domain is broad, the surface is massively over-scoped and likely overwhelms tool selection.

Completeness4/5

Coverage is broad across node creation/editing, components, variables, text/effect styles, prototyping, and asset export. Minor gaps remain, such as creating or applying paint styles and editing/removing component properties, but core design workflows are covered.

Maintenance

ActivityNo data
ResponsivenessNo issues