Server data from the Official MCP Registry
Programmatically read, create, and modify Figma designs via MCP.
Programmatically read, create, and modify Figma designs via MCP.
Valid MCP server (1 strong, 2 medium validity signals). 1 code issue detected. 1 known CVE in dependencies Package registry verified. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.
6 files analyzed Β· 3 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-neozhehan-figma-edit-mcp": {
"args": [
"-y",
"figma-edit-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
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.
Read more about our design philosophy here.
The quickest way to run Figma Edit MCP is directly from the NPM registry. You do not need to clone this repository.
Add the server to your AI assistant's MCP configuration:
{
"mcpServers": {
"FigmaEdit": {
"command": "npx",
"args": ["-y", "figma-edit-mcp"]
}
}
}
The config file location depends on your host β see Integration-Specific Setup below. Bun users can substitute bunx for npx; both resolve the same package.
In a terminal, start the bridge that connects the MCP server to the Figma plugin. Keep this terminal running:
npx figma-edit-mcp-socket
The Figma plugin ships inside the NPM package. Install the package once to materialize the plugin files on disk:
# In any directory of your choosing (e.g., ~/figma-edit-mcp/)
npm install figma-edit-mcp
Then in the Figma desktop app:
node_modules/figma-edit-mcp/figma_plugin/manifest.json from the directory above.The plugin is now available under Plugins β Development in any Figma file.
Running from a local clone? See CONTRIBUTING.md for the contributor-only --local development workflow.
Paste the JSON snippet from the Quick Start into your host's MCP config file:
| Integration | Config File Location | Notes |
|---|---|---|
| Cursor | ~/.cursor/mcp.json | Restart Cursor after editing |
| VS Code / GitHub Copilot | ~/Library/Application Support/Code/User/mcp.json | Requires VS Code 1.102+ with Copilot; enable Agent Mode |
| Google Antigravity | ~/.gemini/antigravity/mcp_config.json | Restart Antigravity to load |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json | β |
| Claude Code (CLI / VS Code) | run claude mcp add FigmaEdit npx figma-edit-mcp | No file edit needed |
| LM Studio | edit mcp.json via the Developer tab | Or use a deeplink, if provided |
If you prefer to edit your host's MCP config directly, paste this snippet into the appropriate config file:
{
"mcpServers": {
"FigmaEdit": {
"command": "npx",
"args": ["-y", "figma-edit-mcp"]
}
}
}
| Integration | Config File Location |
|---|---|
| Cursor | ~/.cursor/mcp.json |
| VS Code / Copilot | ~/Library/Application Support/Code/User/mcp.json |
| Antigravity | ~/.gemini/antigravity/mcp_config.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| LM Studio | Use the in-app editor (via Developer tab) or edit mcp.json |
Running from a local clone? See CONTRIBUTING.md for the --local workflow.
For local development β building from source, running the bridge from a clone, and the --local integrate workflow β see CONTRIBUTING.md.
To allow Figma (running on Windows) to connect to the bridge (running inside WSL), the bridge needs to listen on 0.0.0.0 instead of localhost:
npx figma-edit-mcp-socket --host 0.0.0.0
# or via environment variable:
FIGMA_EDIT_MCP_SOCKET_HOST=0.0.0.0 npx figma-edit-mcp-socket
Then point the Figma plugin's WebSocket address at your WSL instance's IP.
npx figma-edit-mcp-socketjoin_channel MCP tool to establish communicationThe MCP server provides the following tools for interacting with Figma:
| Tool | Description |
|---|---|
get_pages_info | Get information about specific pages in Figma including their children |
get_nodes_info | Get detailed information about one or more nodes. Supports recursive depth (maxDepth), filtering (filter), and specifying fields (fields) |
set_selections | Set selection to one or more nodes and scroll the viewport to show them |
| Tool | Description |
|---|---|
create_frame | Create a frame with optional fill, stroke, and full auto-layout configuration |
create_rectangle | Create a rectangle with position, size, and optional name |
create_text | Create a text node with customizable font, size, weight, and color |
create_node_from_svg | Create a node from an SVG XML string |
| Tool | Description |
|---|---|
move_node | Move a node to a new position |
resize_node | Resize a node to new dimensions |
clone_node | Clone an existing node with an optional position offset |
delete_multiple_nodes | Delete one or more nodes in a single operation |
set_node_name | Rename a node in the Figma layer panel |
| Tool | Description |
|---|---|
set_fill_color | Set the fill color of a node (RGBA) |
set_stroke_color | Set the stroke color and weight of a node |
set_corner_radius | Set corner radius with optional per-corner control |
set_effects | Apply drop shadow, inner shadow, layer blur, or background blur |
| Tool | Description |
|---|---|
set_layout_mode | Set layout mode (NONE, HORIZONTAL, VERTICAL) and wrap behavior |
set_padding | Set padding values (top, right, bottom, left) for an auto-layout frame |
set_axis_align | Set primary and counter axis alignment for auto-layout frames |
set_layout_sizing | Set horizontal and vertical sizing modes (FIXED, HUG, FILL) |
set_item_spacing | Set spacing between children and across wrapped rows/columns |
| Tool | Description |
|---|---|
set_multiple_text_contents | Batch-update text content across multiple nodes in parallel |
| Tool | Description |
|---|---|
get_annotations | Get annotations on a node, including available categories |
set_multiple_annotations | Batch create or update annotations with markdown support |
| Tool | Description |
|---|---|
get_styles | List all local styles in the document |
get_local_components | List all local components in the document |
manage_style | Create or update a named style (Text, Paint, Effect, or Grid) |
apply_style | Apply an existing named style to a node |
create_component | Convert a frame into a main component |
create_component_instance | Instantiate a component by key at a given position |
get_instance_overrides | Extract all override properties from a component instance |
set_instance_overrides | Apply extracted overrides to one or more target instances |
| Tool | Description |
|---|---|
get_variables | List all variable collections, or get details for a specific variable by ID |
get_node_variables | Inspect bound variables and explicit variable modes on a node |
set_bound_variable | Bind a variable to a node property, or set an explicit variable mode |
manage_variables | Create collections, create variables, and set values or aliases |
| Tool | Description |
|---|---|
get_reactions | Extract prototype reactions (click flows, overlays) from nodes |
set_default_connector | Set a FigJam connector as the default style for new connections |
create_connections | Draw connector lines between nodes based on mappings or prototype flows |
| Tool | Description |
|---|---|
export_node_as_image | Export a node as PNG, JPG, SVG, or PDF |
| Tool | Description |
|---|---|
join_channel | Join a WebSocket channel to establish communication with the Figma plugin |
Built-in prompts guide complex multi-step design tasks:
| Prompt | Description |
|---|---|
design_strategy | Best practices for creating Figma designs with proper hierarchy and naming |
read_design_strategy | Best practices for reading and exploring Figma designs |
text_replacement_strategy | Chunked, progressive approach to bulk text replacement with visual verification |
annotation_conversion_strategy | Convert legacy manual annotations to Figma's native annotation system |
swap_overrides_instances | Transfer component instance overrides from a source to multiple targets |
reaction_to_connector_strategy | Convert prototype reaction flows into visual FigJam connector lines |
The plugin enforces hard constraints (scope locking, name verification, batch validation) that AI agents cannot bypass. See AGENTS.md for the full rules and error codes.
When working with Figma Edit MCP:
join_channel before sending any other commandsNode IDs copied from Figma URLs use dashes (20485-41), but the plugin API expects colons (20485:41). The MCP server automatically converts dash-format IDs before forwarding, so either format works without manual intervention.
Built on prior work by sonnylazuardi and the contributors to grab/cursor-talk-to-figma-mcp. Thank you for the foundation this project builds on.
Thanks to @dusskapark for the following contributions:
The MIT License (MIT)
Copyright (c) 2025 sonnylazuardi
Copyright (c) 2026 Neo Product LLC
Be the first to review this server!
by Toleno Β· Developer Tools
Toleno Network MCP Server β Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace Β· Developer Tools
Create, build, and publish Python MCP servers to PyPI β conversationally.
by Microsoft Β· Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption