TF

thanhducpham/figma-remote-mcp-go

Developer tools
9 stars 17 forks Quality 81 Trend 21MIT

cloned and improved feature in remote mcp from https://github.com/vkhanhqui/figma-mcp-go.git

Overview

Open-source Figma MCP server with full read/write access via plugin — , no REST API, no rate limits. Turn text into designs and designs into real code. Works with Cursor, Claude, GitHub Copilot, and any MCP-compatible AI tool. - No Figma API token required - No rate limits — free plan friendly - live Figma data via plugin bridge — 73 tools total - Full design automation — styles, variables, components, prototypes, and content - Design strategies included — read_design_strategy, design_strategy, and more prompts built in https://github.com/user-attachments/assets/eae41471-fc72-4574-8261-4f42c38b8c99 https://github.com/user-attachments/assets/17bda971-0e83-4f18-8758-8ac2b8dcba62 If you're experimenting with AI tools, you'll burn through that in minutes. I didn't have enough money to pay for higher limits. So I built something that . Install via npx — no build step required. Watch the setup video or follow the steps below.

README

figma-remote-mcp-go

Figma MCP with Remote Agent Support

Open-source Figma MCP server with full read/write access via plugin — remote agent support with auth tokens, no REST API, no rate limits. Turn text into designs and designs into real code. Works with Cursor, Claude, GitHub Copilot, and any MCP-compatible AI tool.

Highlights

  • No Figma API token required
  • No rate limits — free plan friendly
  • Read and Write live Figma data via plugin bridge — 73 tools total
  • Full design automation — styles, variables, components, prototypes, and content
  • Design strategies included — read_design_strategy, design_strategy, and more prompts built in

Styles, Variables, Components, Prototypes, and Content

https://github.com/user-attachments/assets/eae41471-fc72-4574-8261-4f42c38b8c99

Text to Design, Design to Code

https://github.com/user-attachments/assets/17bda971-0e83-4f18-8758-8ac2b8dcba62


Why this exists

Most Figma MCP servers rely on the Figma REST API.

That sounds fine… until you hit this:

Plan Limit
Starter / View / Collab 6 tool calls/month
Pro / Org (Dev seat) 200 tool calls/day
Enterprise 600 tool calls/day

If you’re experimenting with AI tools, you’ll burn through that in minutes.

I didn’t have enough money to pay for higher limits. So I built something that doesn’t use the API at all.


Installation & Setup

Install via npx — no build step required. Watch the setup video or follow the steps below.

1. Configure your AI tool

Choose one of the two modes below based on how you want to run the server:

Mode A: Standalone Mode (IDE runs the Leader)

If you don’t run a separate Leader server in a terminal, configure it without FIGMA_MCP_LEADER_URL. The IDE will spawn the process, which will run as a Leader and bind to port 1994 (default). You then connect the Figma Desktop plugin directly to 127.0.0.1:1994.

Cursor / VS Code (.vscode/mcp.json):

{
  "servers": {
    "figma-remote-mcp-go": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@natsudvn/figma-remote-mcp-go"
      ]
    }
  }
}

Claude Desktop / Other MCP clients (.mcp.json):

{
  "mcpServers": {
    "figma-remote-mcp-go": {
      "command": "npx",
      "args": ["-y", "@natsudvn/figma-remote-mcp-go"]
    }
  }
}

If you run a separate Leader process in a terminal (e.g., npx @natsudvn/figma-remote-mcp-go to keep the Figma plugin connected when the IDE restarts), you must configure the IDE’s MCP client as a Follower by setting the FIGMA_MCP_LEADER_URL environment variable. This prevents port conflicts on port 1994.

Cursor / VS Code (.vscode/mcp.json):

{
  "servers": {
    "figma-remote-mcp-go": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@natsudvn/figma-remote-mcp-go"
      ],
      "env": {
        "FIGMA_MCP_LEADER_URL": "http://127.0.0.1:1994"
      }
    }
  }
}

Claude Desktop / Other MCP clients (.mcp.json):

{
  "mcpServers": {
    "figma-remote-mcp-go": {
      "command": "npx",
      "args": ["-y", "@natsudvn/figma-remote-mcp-go"],
      "env": {
        "FIGMA_MCP_LEADER_URL": "http://127.0.0.1:1994"
      }
    }
  }
}

Claude Code CLI:

claude mcp add -s project figma-remote-mcp-go -- npx -y @natsudvn/figma-remote-mcp-go@latest
# Note: Edit ~/.claude/mcp_servers.json to add FIGMA_MCP_LEADER_URL if using Follower mode

Codex CLI:

codex mcp add figma-remote-mcp-go -- npx -y @natsudvn/figma-remote-mcp-go@latest

2. Install the Figma plugin

  1. In Figma Desktop: Plugins → Development → Import plugin from manifest
  2. Select manifest.json from the plugin.zip
  3. Run the plugin inside any Figma file

Available Tools

Write — Create

Tool Description
create_frame Create a frame with optional auto-layout, fill, and parent
create_rectangle Create a rectangle with optional fill and corner radius
create_ellipse Create an ellipse or circle
create_text Create a text node (font loaded automatically)
import_image Decode base64 image and place it as a rectangle fill
create_component Convert an existing FRAME node into a reusable component
create_section Create a Figma Section node to organise frames on a page

Write — Modify

Tool Description
set_text Update text content of an existing TEXT node
set_fills Set solid fill color (hex) on a node
set_strokes Set solid stroke color and weight on a node
set_opacity Set opacity of one or more nodes (0 = transparent, 1 = opaque)
set_corner_radius Set corner radius — uniform or per-corner
set_auto_layout Set or update auto-layout (flex) properties on a frame
set_visible Show or hide one or more nodes
lock_nodes Lock one or more nodes to prevent accidental edits
unlock_nodes Unlock one or more nodes
rotate_nodes Set absolute rotation in degrees on one or more nodes
reorder_nodes Change z-order: bringToFront, sendToBack, bringForward, sendBackward
set_blend_mode Set blend mode (MULTIPLY, SCREEN, OVERLAY, …) on one or more nodes
set_constraints Set responsive constraints { horizontal, vertical } on one or more nodes
move_nodes Move nodes to an absolute x/y position
resize_nodes Resize nodes by width and/or height
rename_node Rename a node
clone_node Clone a node, optionally repositioning or reparenting
reparent_nodes Move nodes to a different parent frame, group, or section
batch_rename_nodes Bulk rename nodes via find/replace, regex, or prefix/suffix
find_replace_text Find and replace text across all TEXT nodes in a subtree or page; supports regex

Write — Delete

Tool Description
delete_nodes Delete one or more nodes permanently

Write — Prototype

Tool Description
set_reactions Set prototype reactions (triggers + actions) on a node; mode replace or append
remove_reactions Remove all or specific reactions by zero-based index from a node

Write — Styles

Tool Description
set_effects Apply drop shadow / blur effects directly on a node (no style required)
create_paint_style Create a named paint style with a solid color
create_text_style Create a named text style with font, size, and spacing
create_effect_style Create a named effect style (drop shadow, inner shadow, blur)
create_grid_style Create a named layout grid style (columns, rows, or grid)
update_paint_style Rename or recolor an existing paint style
apply_style_to_node Apply an existing local style to a node, linking it to that style
delete_style Delete any style (paint, text, effect, or grid) by ID

Write — Variables

Tool Description
create_variable_collection Create a new local variable collection with an optional initial mode
add_variable_mode Add a new mode to an existing collection (e.g. Light/Dark)
create_variable Create a variable (COLOR/FLOAT/STRING/BOOLEAN) in a collection
set_variable_value Set a variable’s value for a specific mode
bind_variable_to_node Bind a variable to a node property — supports fillColor, strokeColor, visible, opacity, rotation, width, height, corner radii, spacing, and more
delete_variable Delete a variable or an entire collection

Write — Pages

Tool Description
add_page Add a new page to the document (optional name and index)
delete_page Delete a page by ID or name (cannot delete the only page)
rename_page Rename a page by ID or current name

Write — Components & Navigation

Tool Description
navigate_to_page Switch the active Figma page by ID or name
group_nodes Group two or more nodes into a GROUP
ungroup_nodes Ungroup GROUP nodes, moving children to the parent
swap_component Swap the main component of an INSTANCE node
detach_instance Detach component instances, converting them to plain frames

Read — Document & Selection

Tool Description
get_document Full current page tree
get_metadata File name, pages, current page
get_pages All pages (IDs + names) — lightweight, no tree loading
get_selection Currently selected nodes
get_node Single node by ID
get_nodes_info Multiple nodes by ID
get_design_context Depth-limited tree with detail level (minimal/compact/full)
search_nodes Find nodes by name substring and/or type within a subtree
scan_text_nodes All text nodes in a subtree
scan_nodes_by_types Nodes matching given type list
get_viewport Current viewport center, zoom, and visible bounds

Read — Styles & Variables

Tool Description
get_styles Paint, text, effect, and grid styles
get_variable_defs Variable collections and values
get_local_components All components + component sets with variant properties
get_annotations Dev-mode annotations
get_fonts All fonts used on the current page, sorted by frequency
get_reactions Prototype/interaction reactions on a node

Export

Tool Description
get_screenshot Base64 image export of any node
save_screenshots Export images to disk (server-side, no API call)
export_frames_to_pdf Export multiple frames as a single multi-page PDF file saved to disk
export_tokens Export design tokens (variables + paint styles) as JSON or CSS

MCP Prompts

Prompt Description
read_design_strategy Best practices for reading Figma designs
design_strategy Best practices for creating and modifying designs
text_replacement_strategy Chunked approach for replacing text across a design
annotation_conversion_strategy Convert manual annotations to native Figma annotations
swap_overrides_instances Transfer overrides between component instances
reaction_to_connector_strategy Map prototype reactions into interaction flow diagrams


Contributing

Issues and PRs are welcome.

Star History

View the full README on GitHub

Install

npx -y @natsudvn/figma-remote-mcp-go
New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "figma-remote-mcp-go": { "command": "npx", "args": ["-y", "@natsudvn/figma-remote-mcp-go"] } } }