
figma-mcp-go
Free, no-rate-limit Figma MCP server with full read/write via a plugin bridge — no REST API token needed.
Add to your client
Copy the config for your MCP client and paste it into its config file.
npx -y @vkhanhqui/figma-mcp-goPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"figma-mcp-go": {
"command": "npx",
"args": [
"-y",
"@vkhanhqui/figma-mcp-go"
]
}
}
}Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Node.js (to run the server via npx)
- Figma Desktop app
- The companion Figma plugin installed via Plugins → Development → Import plugin from manifest, using manifest.json from the released plugin.zip
About figma-mcp-go
figma-mcp-go is an open-source MCP server that connects AI assistants to Figma with full read and write access. Unlike most Figma MCP servers that rely on the rate-limited Figma REST API, it talks to Figma through a companion plugin bridge, so it requires no API token and is not subject to Figma's per-plan tool-call limits — making it usable on free Figma plans. It exposes 73 tools (create/modify/delete nodes, prototypes, styles, variables, pages, components, navigation, reads, and exports) plus built-in MCP prompts for design strategies, enabling text-to-design and design-to-code workflows.
Tools & capabilities (73)
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
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
delete_nodesDelete one or more nodes permanently
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
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
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
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
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
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
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
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
What this server can do
figma-mcp-go provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Generate full Figma designs from text prompts (text-to-design) on a free Figma plan without hitting REST API rate limits
- Turn existing Figma designs into code by reading the design context, styles, variables, and components
- Automate design systems — create and manage paint/text/effect/grid styles, variables, and modes (e.g. Light/Dark)
- Bulk content edits like find-and-replace text across a page or subtree
- Export assets and documentation — node screenshots, multi-page PDFs, and design tokens as JSON or CSS
Security notes
No Figma API token required. Access to Figma is granted by installing and running the companion Figma plugin (imported from manifest.json in the released plugin.zip) inside a Figma file; the MCP server communicates with Figma over the local plugin bridge. The server can read and write live Figma data and write files to disk (screenshots, PDFs, exported tokens).
figma-mcp-go FAQ
Do I need a Figma API token?
No. The server communicates with Figma through a companion plugin bridge rather than the Figma REST API, so no API token is required.
Are there rate limits?
No. Because it does not use the Figma REST API, it is not subject to Figma's per-plan tool-call limits and works on free Figma plans.
How do I connect it to Figma?
Install the companion Figma plugin in Figma Desktop via Plugins → Development → Import plugin from manifest, selecting manifest.json from the released plugin.zip, then run the plugin inside any Figma file.
Which AI tools are supported?
Cursor, Claude (Claude Code CLI and .mcp.json), VS Code / GitHub Copilot, Codex CLI, and any MCP-compatible AI tool.
Alternatives to figma-mcp-go
Compare all alternatives →Popular community server that feeds Figma layout data to coding agents via a Figma API token.
Generate beautiful, modern UI components from natural-language descriptions inside your IDE.
Give AI assistants full access to shadcn/ui v4 components, blocks, demos, and metadata across React, Svelte, Vue, and React Native.