Mmcp.market

Figma Edit MCP server

by neozhehan·io.github.neozhehan/figma-edit-mcp·v2.3.3

Programmatically read, create, and modify Figma designs via MCP.

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Growing

9 stars65 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • annotation_list

    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_set

    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) \u201

  • channel_join

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

  • component_delete_propertywrite action

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

  • component_list

    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_property

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

  • create_componentwrite action

    Convert an existing frame into a main component.

  • create_component_setwrite action

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

  • create_framewrite action

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

  • create_instancewrite action

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

  • create_shapewrite action

    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 \u2014 no even-parity rule.

  • create_svgwrite action

    Create a node from an SVG markup string.

  • create_textwrite action

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

  • instance_get_overrides

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

  • instance_set_overrides

    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).

  • instance_set_property

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

  • node_apply_style

    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_variable

    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_clone

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

  • node_deletewrite action

    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_export_visual

    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 \u2014 prefer PNG/SVG for inspection).

  • node_flatten

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

  • node_group

    Wrap multiple nodes in a new group node.

  • node_info

    Read 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 action

    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_rename

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

  • node_set_auto_layout

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

  • node_set_corner_radius

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

  • node_set_effects

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

  • node_set_fill

    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_stroke

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

  • node_transform

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

  • node_ungroup

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

  • page_info

    List 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_list

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

  • reaction_updatewrite action

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

  • style_deletewrite action

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

  • style_list

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

  • style_managewrite action

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

  • text_set_content

    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_style

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

  • variable_deletewrite action

    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.

  • variable_list

    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_managewrite action

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

  • view_navigate

    Navigate 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

1 medium
  • 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 usedexec.eval
    dist/server.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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.

All Figma Edit alternatives →
  • Codesign
    Local design engine for AI agents: create, edit and export real, editable designs.
    A
  • Layerbridge
    Read, edit and export the Figma file open in a local plugin. No REST API, no rate limits.
    B
  • KiCad MCP Pro
    Production-grade MCP server for KiCad EDA—PCB design, DRC, simulation, BOM, DFM, and manufacturing.
    A
  • EasyEDA Copilot
    Connect MCP clients to EasyEDA Desktop for schematic and PCB design, routing, inspection, and DRC.
    A
  • Kiln
    Kiln MCP server for agents: design, slice, print, monitor, and recover physical objects safely.
    B

More from neozhehan →