Figma Edit MCP server
Programmatically read, create, and modify Figma designs via MCP.
9 stars65 downloads/wk
Reviews
Write oneNobody has reviewed Figma Edit yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Figma Edit tools (45, 15 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
annotation_listRead 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_setAppend 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) \u201
channel_joinJoin a plugin channel to establish the live connection to the Figma document.
component_delete_propertywrite actionRemove a component-property definition from a main component or variant set; propagates to every instance.
component_listList 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_propertyAdd or edit a component-property definition (BOOLEAN/TEXT/INSTANCE_SWAP) on a main component or variant set. Deleting is `component_delete_property`.
create_componentwrite actionConvert an existing frame into a main component.
create_component_setwrite actionCombine components into a component set (variants) with property definitions.
create_framewrite actionCreate a frame (container) with optional fill/stroke and full auto-layout configuration.
create_instancewrite actionInstantiate a component (by `componentKey` or `componentId`) at a position.
create_shapewrite actionCreate 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 \u2014 no even-parity rule.
create_svgwrite actionCreate a node from an SVG markup string.
create_textwrite actionCreate a text node with content and optional font size/weight/color.
instance_get_overridesRead the override properties from a source instance, to later apply them to other instances.
instance_set_overridesApply 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).
instance_set_propertySet one property on an instance \u2014 boolean toggle, text override, instance swap, or variant selection.
node_apply_styleLink 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_variableBind 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_cloneDuplicate an existing node, optionally at a new `x`/`y`. Produces a new node id.
node_deletewrite actionDelete 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_export_visualRender 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 \u2014 prefer PNG/SVG for inspection).
node_flattenFlatten a node and its children into a single vector. Lossy \u2014 original structure is not recoverable.
node_groupWrap multiple nodes in a new group node.
node_infoRead one or more nodes \u2014 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.pageErr
node_insert_childwrite actionReparent a node under a new parent at an optional `index`. Valid range is 0 to parent's child count. Omit `index` to append.
node_renameRename a node (sets `name` to an exact value).
node_set_auto_layoutConfigure a frame's auto-layout (mode, padding, spacing, alignment, sizing) in one unified setter.
node_set_corner_radiusSet a node's corner radius \u2014 uniform or per-corner.
node_set_effectsSet a node's effect array (shadows, blurs). Use `node_apply_style` to link a shared effect style instead.
node_set_fillSet 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_strokeSet a node's stroke color and weight; supports uniform or per-side weights.
node_transformMove and/or resize a node by setting absolute `x`/`y`/`width`/`height` (any subset).
node_ungroupDissolve a group, promoting its children to the parent. Removes the group container.
page_infoList the document's pages; no args \u2192 all pages (no children), or pass `pageIds` \u2192 those pages with their top-level children. Batch \u226425 ids/call. Inspect `coverage`: a failed page is omitted with a structured `pageErrors` row while other pages still return.
reaction_listRead prototype reactions from one or more nodes and their descendants.
reaction_updatewrite actionReplace a node's prototype reactions with a full new reactions array (read first via `reaction_list`).
style_deletewrite actionDelete a local style by id. Detaches consumers \u2014 they keep their resolved values and lose only the style link.
style_listList all local styles (paint/text/effect/grid) in the document.
style_managewrite actionCreate a named style (paint/text/effect/grid), or update an existing one when `styleId` is given. UPDATE requires currentStyleName.
text_set_contentSet 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_styleSet any combination of typography properties (font, size, weight, spacing, decoration, \u2026) on a text node.
variable_deletewrite actionDelete 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.
variable_listList 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_managewrite actionCreate collections and variables and set their values/aliases (create/update router). UPDATE_VARIABLE requires `currentVariableName`. CREATE_VARIABLE requires `collectionName` and `scopes`.
view_navigateNavigate the editor view to a page or node(s).
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan37 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/server.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
What the publisher says
From the Figma Edit repository's README, as published. We do not edit it. Read it on GitHub
Figma Edit MCP
Connect AI assistants to Figma via Model Context Protocol to read designs, create and modify elements, and manage design systems programmatically.
This plugin empowers your AI assistant to become a Figma assistant, executing design updates Safer, Cleaner, and Faster than a human ever could.
This plugin allows you as a Designer to focus purely on creative decision-making, leaving the error-prone & repetitive manual changes to the automated systems.
🏆 Featured by IDEO: Letting AI edit live Figma files without trusting it to behave
📖 Documentation: neozhehan.github.io/figma-edit-mcp
What This Does for You
The project has three goals: Safer, Cleaner, and Faster.
- 🛡️ Safer: The plugin checks every action the AI requests before that action runs. If an action would damage the file, the plugin refuses it and tells the AI why. For example, the plugin will not delete a color variable while layers still use it. Figma itself does not warn you when you delete a variable that is in use — the deletion leaves broken references that are very hard to find afterwards.
- ✨ Cleaner: Because damaging actions are refused, the file does not accumulate broken references or leftover values. Bulk updates cover every layer that matches your request, not just the layers a person remembers to check.
- ⚡ Faster: The AI applies one change across hundreds of layers in seconds. For example, it can replace a product name in every text layer on a page, or copy the overrides from one component instance to fifty others.
These goals support each other: when the plugin refuses mistakes, the file stays consistent, and a consistent file is easier for both you and the AI to work with.
Read the full reasoning behind these goals →
What the AI Cannot Do to Your File
AI assistants sometimes invent things. An AI can name a layer that does not exist, or misremember which layer it was editing. This plugin does not depend on the AI being right. The plugin checks every edit itself, inside Figma, and refuses any edit that fails a check. The AI cannot skip these checks.
What the plugin enforces:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y figma-edit-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add figma-edit-mcp -- npx -y figma-edit-mcp
Figma Edit: common questions
- Is Figma Edit MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the Figma Edit safety report
- How do I install Figma Edit?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Figma Edit need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Figma Edit maintained?
- The last commit was in the last day (2026-09-24). The latest release is v2.3.3.
- What can I use instead of Figma Edit?
- Servers from other publishers that do the same job: Codesign MCP server, Layerbridge MCP server and KiCad MCP Pro MCP server. Compare all Figma Edit alternatives.
Alternatives to Figma Edit
Same job from other publishers: the closest match first, then the best rated.
CodesignLocal design engine for AI agents: create, edit and export real, editable designs.not reviewedEstablishedA- LayerbridgeRead, edit and export the Figma file open in a local plugin. No REST API, no rate limits.not reviewedGrowingB
KiCad MCP ProProduction-grade MCP server for KiCad EDA—PCB design, DRC, simulation, BOM, DFM, and manufacturing.not reviewedEstablishedA- EasyEDA CopilotConnect MCP clients to EasyEDA Desktop for schematic and PCB design, routing, inspection, and DRC.not reviewedEstablishedA
- KilnKiln MCP server for agents: design, slice, print, monitor, and recover physical objects safely.not reviewedEstablishedB