Figma Edit MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIGMA_EDIT_MCP_SOCKET_HOST | No | The host for the WebSocket bridge (use 0.0.0.0 for WSL) | localhost |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| page_infoA | List the document's pages; no args → all pages (no children), or pass |
| node_infoA | Read one or more nodes — recursive subtree traversal with |
| node_transformA | Move and/or resize a node by setting absolute |
| node_renameB | Rename a node (sets |
| 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 |
| 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 |
| 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_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_styleA | Link a node to a shared library style (paint/text/effect/grid) by |
| node_bind_variableA | Bind a variable to a node property, or set an explicit variable mode. Use instead of a literal |
| 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 |
| create_shapeA | Create a rectangle, ellipse, polygon, or star via |
| 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 |
| 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 |
| 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 |
| 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_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: |
| reaction_listA | Read prototype reactions from one or more nodes. Process the output with the |
| reaction_updateA | Replace a node's prototype reactions with a full new reactions array (read first via |
| channel_joinA | Join a plugin channel to establish the live connection to the Figma document. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| swap_overrides_instances | Strategy for transferring overrides between component instances in Figma |
| reaction_to_connector_strategy | Strategy for converting Figma prototype reactions to connector lines using the output of 'reaction_list' |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| constraints | Hard, plugin-enforced rules (scope, name verification, batch validation, URL IDs). |
| error-playbook | Recovery playbook for every structured error code. |
| workflows | Discover-before-acting patterns and recipe skeletons. |
| tool-selection | Guidance on choosing the right tools, using node.info, batch vs single, etc. |
| node-fields | The 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