Skip to main content
Glama
neozhehan

Figma Edit MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FIGMA_EDIT_MCP_SOCKET_HOSTNoThe host for the WebSocket bridge (use 0.0.0.0 for WSL)localhost

Capabilities

Features and capabilities supported by this server

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

Tools

Functions exposed to the LLM to take actions

NameDescription
page_infoA

List the document's pages; no args → all pages (no children), or pass pageIds → those pages with their top-level children. Batch ≤25 ids/call.

node_infoA

Read one or more nodes — recursive subtree traversal with fields selection, filter, and maxDepth. Returns only requested fields (incl. resolved boundVariables/explicitVariableModes). The workhorse read; start here before any write.

node_transformA

Move and/or resize a node by setting absolute x/y/width/height (any subset).

node_renameB

Rename a node (sets name to an exact value).

node_deleteA

Delete one or more nodes in a single batched, per-item-validated call. No API undo.

node_cloneA

Duplicate an existing node, optionally at a new x/y. Produces a new node id.

view_navigateB

Navigate the editor view to a page or node(s).

node_groupB

Wrap multiple nodes in a new group node.

node_ungroupA

Dissolve a group, promoting its children to the parent. Removes the group container.

node_flattenA

Flatten a node and its children into a single vector. Lossy — original structure is not recoverable.

node_insert_childA

Reparent a node under a new parent at an optional index.

node_set_auto_layoutA

Configure a frame's auto-layout (mode, padding, spacing, alignment, sizing) in one unified setter.

node_set_fillA

Set a node's fill to a literal RGBA color. Use node_apply_style to link a shared paint style, or node_bind_variable to bind a color token.

node_set_strokeA

Set a node's stroke color and weight; supports uniform or per-side weights.

node_set_corner_radiusA

Set a node's corner radius — uniform or per-corner.

node_set_effectsA

Set a node's effect array (shadows, blurs). Use node_apply_style to link a shared effect style instead.

node_apply_styleA

Link a node to a shared library style (paint/text/effect/grid) by styleId. Use the raw node_set_* setters for ad-hoc values not backed by a style.

node_bind_variableA

Bind a variable to a node property, or set an explicit variable mode. Use instead of a literal node_set_* when the value should track a design token.

node_export_visualA

Render a node to an image (PNG/JPG/SVG/PDF) at a given scale. Read-only; the canonical way to visually verify edits. SVG returns raw XML in svg (directly readable); PNG/JPG/PDF return base64 in imageData (PDF is a delivery artifact — prefer PNG/SVG for inspection).

create_shapeA

Create a rectangle, ellipse, polygon, or star via type, with position/size and optional fillColor/strokeColor. Shape-specific params (arcData; pointCount/innerRadius) validated by type. pointCount = sides (polygon) or points (star), native count — no even-parity rule.

create_frameC

Create a frame (container) with optional fill/stroke and full auto-layout configuration.

create_textB

Create a text node with content and optional font size/weight/color.

create_svgC

Create a node from an SVG markup string.

create_componentC

Convert an existing frame into a main component.

create_instanceC

Instantiate a component (by componentKey or componentId) at a position.

create_component_setB

Combine components into a component set (variants) with property definitions.

create_connectionA

Create connector lines between nodes, or set/check the default connector template. Pass connectorId to set a default, connections to draw lines, or nothing to check the current default.

style_listA

List all local styles (paint/text/effect/grid) in the document.

style_manageA

Create a named style (paint/text/effect/grid), or update an existing one when styleId is given.

style_deleteA

Delete a local style by id. Detaches consumers — they keep their resolved values and lose only the style link.

text_set_contentA

Set the text of one or more text nodes in a single batched, per-item-validated call.

text_set_styleC

Set any combination of typography properties (font, size, weight, spacing, decoration, …) on a text node.

component_listB

List components in the document, with filtering and scope options.

component_manage_propertyA

Add or edit a component-property definition (BOOLEAN/TEXT/INSTANCE_SWAP) on a main component or variant set. Deleting is component_delete_property.

component_delete_propertyA

Remove a component-property definition from a main component or variant set; propagates to every instance.

instance_set_propertyA

Set one property on an instance — boolean toggle, text override, instance swap, or variant selection.

instance_get_overridesA

Read the override properties from a source instance, to later apply them to other instances.

instance_set_overridesA

Apply previously-read overrides to target instances; targets are swapped to the source component and all overrides applied.

variable_listA

List local variables/collections, or detailed info for specific variable ids; optionally scan for consumers.

variable_manageC

Create collections and variables and set their values/aliases (create/update router).

variable_deleteA

Delete specific variables or an entire collection. Runs a full-document consumer check first and rejects the whole operation if any target is still in use.

annotation_listA

Read the native annotations on a page or node (and subtree); exactly one of pageId or nodeId is required. Optionally include the file's annotation categories.

annotation_setA

Create or update native annotations on one or more nodes in a batched call (per item: annotationId present = update, absent = create).

reaction_listA

Read prototype reactions from one or more nodes. Process the output with the reaction_to_connector_strategy prompt to build create_connection parameters.

reaction_updateA

Replace a node's prototype reactions with a full new reactions array (read first via reaction_list).

channel_joinA

Join a plugin channel to establish the live connection to the Figma document.

Prompts

Interactive templates invoked by user choice

NameDescription
swap_overrides_instancesStrategy for transferring overrides between component instances in Figma
reaction_to_connector_strategyStrategy for converting Figma prototype reactions to connector lines using the output of 'reaction_list'

Resources

Contextual data attached and managed by the client

NameDescription
constraintsHard, plugin-enforced rules (scope, name verification, batch validation, URL IDs).
error-playbookRecovery playbook for every structured error code.
workflowsDiscover-before-acting patterns and recipe skeletons.
tool-selectionGuidance on choosing the right tools, using node.info, batch vs single, etc.
node-fieldsThe full set of node_info `fields` (generated from @figma/plugin-typings), with types and how reference fields resolve.

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/neozhehan/figma-edit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server