Skip to main content
Glama
neozhehan

Figma Edit MCP

by neozhehan

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

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
}
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. Inspect coverage: a failed page is omitted with a structured pageErrors row while other pages still return.

node_infoA

Read one or more nodes — recursive subtree traversal with properties selection, filter, and maxDepth. Returns only the requested properties (incl. resolved boundVariables/explicitVariableModes) under each node's properties key. A node whose containing page could not be read is listed in pageFailedNodes with that page's ID, and the page's structured reason is in coverage.pageErrors — other pages still return normally. 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_renameA

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. If the status is 'partial_success', treat it as an incomplete operation, report the failed and skipped items to the user, and retry every non-success item (both failed and skipped).

node_cloneA

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

view_navigateA

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. Valid range is 0 to parent's child count. Omit index to append.

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, an image, or clear it. 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. Ordering rules: set auto-layout before binding padding/spacing; set a solid fill before binding a colour 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_frameA

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_svgB

Create a node from an SVG markup string.

create_componentA

Convert an existing frame into a main component.

create_instanceB

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

create_component_setA

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

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. UPDATE requires currentStyleName.

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. If the status is 'partial_success', treat it as an incomplete operation, report the failed and skipped items to the user, and retry every non-success item (both failed and skipped).

text_set_styleA

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

component_listA

List components in the document, with filtering and scope options. Document scans isolate page failures and report them in coverage; page-scoped failures return their structured error directly.

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. If the status is 'partial_success', treat it as an incomplete operation, report the failed and skipped items to the user, and retry every non-success item (both failed and skipped).

variable_listA

List local variables/collections, or detailed info for specific variable ids; optionally scan for consumers. Document consumer scans isolate page failures and report them in coverage; page-scoped failures return their structured error directly.

variable_manageA

Create collections and variables and set their values/aliases (create/update router). UPDATE_VARIABLE requires currentVariableName. CREATE_VARIABLE requires collectionName and scopes.

variable_deleteA

Delete specific variables or an entire collection. Runs a full-document consumer check first, before any removal: if a target is still in use the call is refused with VARIABLE_IN_USE, whose details.variablesInUse lists every consumer; if any page cannot be loaded and read it is refused with DOCUMENT_SCAN_INCOMPLETE, because a page error can never mean zero consumers.

annotation_listA

Read the native annotations on a page or node (and subtree); exactly one of pageId or nodeId is required. The file's annotation categories are returned by default; pass includeCategories: false to omit them. Page loading is bounded; a page-scoped failure returns its structured error directly and successful reads include coverage.

annotation_setA

Append native annotations to one or more nodes in a batched call. If the status is 'partial_success', treat it as an incomplete operation and report the failed and skipped items to the user. Appending is NOT idempotent and a 'failed' row may already have appended its annotation (verified counts differ, or outcomeUnknown is true when post-state is unreadable; both carry partialMutation: true) — before retrying any non-success item, call annotation_list and compare the labels already on the node, or you will create a duplicate.

reaction_listA

Read prototype reactions from one or more nodes and their descendants.

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

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 `properties` (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