Read, create, and modify Figma designs programmatically via MCP, empowering AI to execute Figma changes safer, cleaner, and faster.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
annotation_list
Read annotations on a node; optionally include categories
-
annotation_set
Batch create or update native annotations (markdown)
-
channel_join
Join a WebSocket channel to establish communication with the plugin
-
component_delete_property
Remove a component-property definition
-
component_list
List components, with filtering and scope options
-
component_manage_property
Add or edit a component-property definition (BOOLEAN/TEXT/INSTANCE_SWAP)
-
create_component
Convert an existing frame into a main component
-
create_component_set
Combine components into a component set (variants)
-
create_connection
Draw connector lines between nodes, or set/check the default connector
-
create_frame
Create a frame with optional fill/stroke and full auto-layout
-
create_instance
Instantiate a component at a position
-
create_shape
Create a rectangle, ellipse, polygon, or star (type) with optional fill/stroke
-
create_svg
Create a node from an SVG markup string
-
create_text
Create a text node with optional font size/weight/color
-
instance_get_overrides
Read the override properties from a source instance
-
instance_set_overrides
Apply copied overrides to target instances
-
instance_set_property
Set one property on an instance (toggle, text, swap, or variant)
-
node_apply_style
Link a node to a shared library style (paint/text/effect/grid)
-
node_bind_variable
Bind a variable to a node property, or set an explicit variable mode
-
node_clone
Duplicate a node, optionally at a new position
-
node_delete
Delete one or more nodes in a single validated batch
-
node_export_visual
Render a node to an image (PNG / JPG / SVG / PDF)
-
node_flatten
Flatten a node and its children into a single vector
-
node_group
Wrap nodes in a new group
-
node_info
Read one or more nodes — recursive traversal with fields, filter, and maxDepth (the workhorse read; also returns bound variables / explicit modes)
-
node_insert_child
Reparent a node under a new parent at an optional index
-
node_rename
Rename a node
-
node_select
Set the canvas selection and focus the nodes in the viewport
-
node_set_auto_layout
Configure a frame's auto-layout (mode, padding, spacing, alignment, sizing)
-
node_set_corner_radius
Set corner radius (uniform or per-corner)
-
node_set_effects
Set the effect array (shadows, blurs)
-
node_set_fill
Set a node's fill to a literal RGBA color
-
node_set_stroke
Set stroke color and weight (uniform or per-side)
-
node_transform
Move and/or resize a node by setting absolute x / y / width / height
-
node_ungroup
Dissolve a group, promoting its children
-
page_info
List the document's pages; with pageIds, return those pages and their top-level children
-
reaction_list
Read prototype reactions (click flows, overlays) from nodes
-
reaction_update
Replace a node's reactions with a full new array
-
style_delete
Delete a local style by id (detaches consumers, which keep their resolved values)
-
style_list
List all local styles (paint/text/effect/grid)
-
style_manage
Create a named style, or update one when styleId is given
-
text_set_content
Batch-set the text of one or more text nodes
-
text_set_style
Set any combination of typography properties on a text node
-
variable_delete
Delete variables or a collection (rejected if still in use)
-
variable_list
List variables/collections, or detail by ID; optionally scan consumers
-
variable_manage
Create collections and variables and set values/aliases
analyzed commit dad009e · analyzer v17 · 15h ago
skills & prompt files 7
- agent-rulesneozhehan-figma-edit-mcp-dad009e/.cursorrules
- agent-rulesneozhehan-figma-edit-mcp-dad009e/.github/copilot-instructions.md
- agent-rulesneozhehan-figma-edit-mcp-dad009e/AGENTS.md
- agent-rulesneozhehan-figma-edit-mcp-dad009e/CLAUDE.md
- prompt-fileneozhehan-figma-edit-mcp-dad009e/documentation/completed/v2.0.0/drafts/prompts/reaction_to_connector_strategy.draft.md
- prompt-fileneozhehan-figma-edit-mcp-dad009e/documentation/completed/v2.0.0/drafts/prompts/swap_overrides_instances.draft.md
- skillneozhehan-figma-edit-mcp-dad009e/skills/figma-edit/SKILL.md
filesystem 6
- fs neozhehan-figma-edit-mcp-dad009e/figma_plugin/build.js :8
import { existsSync } from 'fs'; - fs neozhehan-figma-edit-mcp-dad009e/scripts/gen-manifest-tools.ts :19
import { readFileSync, writeFileSync } from "fs"; - fs neozhehan-figma-edit-mcp-dad009e/scripts/gen-node-fields.ts :22
import { writeFileSync } from "fs"; - fs neozhehan-figma-edit-mcp-dad009e/src/cli.ts :1
import { readFileSync } from "fs"; - fs neozhehan-figma-edit-mcp-dad009e/src/mcp_server/resources.ts :2
import { readFileSync, existsSync } from "fs"; - fs neozhehan-figma-edit-mcp-dad009e/src/mcp_server/server.ts :11
import { readFileSync, existsSync } from "fs";
shell / exec 3
- shell neozhehan-figma-edit-mcp-dad009e/scripts/check-plugin-build.ts :1
import { execSync } from "child_process"; - shell neozhehan-figma-edit-mcp-dad009e/scripts/smoke-mcp.mjs :10
import { spawn } from "node:child_process"; - shell neozhehan-figma-edit-mcp-dad009e/scripts/smoke-socket.mjs :9
import { spawn } from "node:child_process";
network 1
- net neozhehan-figma-edit-mcp-dad009e/src/socket.ts :1
import { createServer } from "http";
declared dependencies 9
- @modelcontextprotocol/sdk@1.29.0
- uuid@14.0.0
- ws@8.20.0
- zod@4.4.3
- @figma/plugin-typings@1.125.0
- @types/bun@1.3.13
- esbuild@0.28.0
- tsup@8.5.1
- typescript@6.0.3