figma-mcp-go

Figma MCP for free users — no rate limits, full read/write, text to designs, designs to code

figma-mcp-go

Figma MCP — Free, No Rate Limits vkhanhqui/figma-mcp-go server

npm version MCP Registry License: MIT GitHub stars

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.

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:

PlanLimit
Starter / View / Collab6 tool calls/month
Pro / Org (Dev seat)200 tool calls/day
Enterprise600 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.

Watch the video

1. Configure your AI tool

Claude Code CLI

claude mcp add -s project figma-mcp-go -- npx -y @vkhanhqui/figma-mcp-go@latest

.mcp.json (Claude and other MCP-compatible tools)

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

.vscode/mcp.json (Cursor / VS Code / GitHub Copilot)

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

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

ToolDescription
create_frameCreate a frame with optional auto-layout, fill, and parent
create_rectangleCreate a rectangle with optional fill and corner radius
create_ellipseCreate an ellipse or circle
create_textCreate a text node (font loaded automatically)
import_imageDecode base64 image and place it as a rectangle fill
create_componentConvert an existing FRAME node into a reusable component
create_sectionCreate a Figma Section node to organise frames on a page

Write — Modify

ToolDescription
set_textUpdate text content of an existing TEXT node
set_fillsSet solid fill color (hex) on a node
set_strokesSet solid stroke color and weight on a node
set_opacitySet opacity of one or more nodes (0 = transparent, 1 = opaque)
set_corner_radiusSet corner radius — uniform or per-corner
set_auto_layoutSet or update auto-layout (flex) properties on a frame
set_visibleShow or hide one or more nodes
lock_nodesLock one or more nodes to prevent accidental edits
unlock_nodesUnlock one or more nodes
rotate_nodesSet absolute rotation in degrees on one or more nodes
reorder_nodesChange z-order: bringToFront, sendToBack, bringForward, sendBackward
set_blend_modeSet blend mode (MULTIPLY, SCREEN, OVERLAY, …) on one or more nodes
set_constraintsSet responsive constraints { horizontal, vertical } on one or more nodes
move_nodesMove nodes to an absolute x/y position
resize_nodesResize nodes by width and/or height
rename_nodeRename a node
clone_nodeClone a node, optionally repositioning or reparenting
reparent_nodesMove nodes to a different parent frame, group, or section
batch_rename_nodesBulk rename nodes via find/replace, regex, or prefix/suffix
find_replace_textFind and replace text across all TEXT nodes in a subtree or page; supports regex

Write — Delete

ToolDescription
delete_nodesDelete one or more nodes permanently

Write — Prototype

ToolDescription
set_reactionsSet prototype reactions (triggers + actions) on a node; mode replace or append
remove_reactionsRemove all or specific reactions by zero-based index from a node

Write — Styles

ToolDescription
set_effectsApply drop shadow / blur effects directly on a node (no style required)
create_paint_styleCreate a named paint style with a solid color
create_text_styleCreate a named text style with font, size, and spacing
create_effect_styleCreate a named effect style (drop shadow, inner shadow, blur)
create_grid_styleCreate a named layout grid style (columns, rows, or grid)
update_paint_styleRename or recolor an existing paint style
apply_style_to_nodeApply an existing local style to a node, linking it to that style
delete_styleDelete any style (paint, text, effect, or grid) by ID

Write — Variables

ToolDescription
create_variable_collectionCreate a new local variable collection with an optional initial mode
add_variable_modeAdd a new mode to an existing collection (e.g. Light/Dark)
create_variableCreate a variable (COLOR/FLOAT/STRING/BOOLEAN) in a collection
set_variable_valueSet a variable's value for a specific mode
bind_variable_to_nodeBind a variable to a node property — supports fillColor, strokeColor, visible, opacity, rotation, width, height, corner radii, spacing, and more
delete_variableDelete a variable or an entire collection

Write — Pages

ToolDescription
add_pageAdd a new page to the document (optional name and index)
delete_pageDelete a page by ID or name (cannot delete the only page)
rename_pageRename a page by ID or current name

Write — Components & Navigation

ToolDescription
navigate_to_pageSwitch the active Figma page by ID or name
group_nodesGroup two or more nodes into a GROUP
ungroup_nodesUngroup GROUP nodes, moving children to the parent
swap_componentSwap the main component of an INSTANCE node
detach_instanceDetach component instances, converting them to plain frames

Read — Document & Selection

ToolDescription
get_documentFull current page tree
get_metadataFile name, pages, current page
get_pagesAll pages (IDs + names) — lightweight, no tree loading
get_selectionCurrently selected nodes
get_nodeSingle node by ID
get_nodes_infoMultiple nodes by ID
get_design_contextDepth-limited tree with detail level (minimal/compact/full)
search_nodesFind nodes by name substring and/or type within a subtree
scan_text_nodesAll text nodes in a subtree
scan_nodes_by_typesNodes matching given type list
get_viewportCurrent viewport center, zoom, and visible bounds

Read — Styles & Variables

ToolDescription
get_stylesPaint, text, effect, and grid styles
get_variable_defsVariable collections and values
get_local_componentsAll components + component sets with variant properties
get_annotationsDev-mode annotations
get_fontsAll fonts used on the current page, sorted by frequency
get_reactionsPrototype/interaction reactions on a node

Export

ToolDescription
get_screenshotBase64 image export of any node
save_screenshotsExport images to disk (server-side, no API call)
export_frames_to_pdfExport multiple frames as a single multi-page PDF file saved to disk
export_tokensExport design tokens (variables + paint styles) as JSON or CSS

MCP Prompts

PromptDescription
read_design_strategyBest practices for reading Figma designs
design_strategyBest practices for creating and modifying designs
text_replacement_strategyChunked approach for replacing text across a design
annotation_conversion_strategyConvert manual annotations to native Figma annotations
swap_overrides_instancesTransfer overrides between component instances
reaction_to_connector_strategyMap prototype reactions into interaction flow diagrams

Contributing

Issues and PRs are welcome.

Star History

Star History Chart

Похожие серверы

NotebookLM Web Importer

Импортируйте веб-страницы и видео YouTube в NotebookLM одним кликом. Более 200 000 пользователей доверяют нам.

Установить расширение Chrome