Figma MCP Go
Provides tools for interacting with Figma via its Plugin API, enabling read/write access to documents, styles, variables, components, prototypes, and content.
figma-mcp-go
Figma MCP — Local Plugin Integration
Open-source Figma MCP server with full read and write access through a Figma plugin. Turn text into designs and designs into code. Works with Claude, Cursor, GitHub Copilot, and any MCP client.
Highlights
Runs locally through the Figma Plugin API. No REST API token needed.
Reads and edits the open Figma file live — 60 tools.
Covers styles, variables, components, prototypes, text, and multi-step batches with undo.
Built-in prompts such as
read_design_strategyanddesign_strategy.Lean on tokens: short tool descriptions, capped node trees, and images returned as images.
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 use the cloud Figma REST API. AI tools make hundreds of quick calls per session, and every cloud round trip adds delay.
This server talks to a Figma plugin on your own machine instead. You get fast, live read and write access to the open file, with no API token.
Related MCP server: figma-mcp-go
Setup
Install with npx or bunx. No build step. Watch the setup video or follow the steps below.

1. Add the server to your AI tool
Claude Code CLI
# via npx
claude mcp add -s project figma-mcp-go -- npx -y @tunglt1810/figma-mcp-go@latest
# or via bunx
claude mcp add -s project figma-mcp-go -- bunx @tunglt1810/figma-mcp-go@latestCodex CLI
# via npx
codex mcp add figma-mcp-go -- npx -y @tunglt1810/figma-mcp-go@latest
# or via bunx
codex mcp add figma-mcp-go -- bunx @tunglt1810/figma-mcp-go@latest.mcp.json (Claude and other MCP-compatible tools)
{
"mcpServers": {
"figma-mcp-go": {
"command": "npx",
"args": ["-y", "@tunglt1810/figma-mcp-go"]
}
}
}.vscode/mcp.json (Cursor / VS Code / GitHub Copilot)
{
"servers": {
"figma-mcp-go": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@tunglt1810/figma-mcp-go"
]
}
}
}2. Install the Figma plugin
In Figma Desktop: Plugins → Development → Import plugin from manifest
Pick
manifest.jsonfrom plugin.zipRun the plugin in any Figma file
3. Use more than one AI tool (optional)
Each AI tool starts its own server, but only one can hold the plugin connection on a port.
Same file: change nothing. The first server takes port 1994; the others forward their calls to it. If it stops, another takes over in a few seconds.
Different files: give each tool its own port, and set the same port in that file's plugin (settings gear):
{
"mcpServers": {
"figma-mcp-go": {
"command": "npx",
"args": ["-y", "@tunglt1810/figma-mcp-go", "--port", "1995"]
}
}
}The plugin remembers the last port for all files, so check it when you open the plugin elsewhere.
--ip 0.0.0.0 accepts connections from other machines.
Security: the plugin connection has no login. On the default
127.0.0.1only your machine can reach it. On any other address, anyone who can reach the port can read and edit your open file. The server warns you and the plugin turns onconfirmmode. Prefer an SSH tunnel.
Plugin panel
The panel shows the connected file, the selection, and what the AI is doing.
Control | What it does |
Guard |
|
Undo | Undoes the last change. A whole |
Log | Shows every request with tool, time, and error. |
Pin | Saves the current selection. |
Settings and panel size are saved per machine. The panel follows Figma's light and dark theme.
Dev Mode
set_codegen_result saves code on a node. It shows in Dev Mode's Code panel for everyone on the file. Code on a component shows for all its instances. The Language menu filters blocks; if a language has no block, all blocks show.
How it works
The first server to start becomes the leader and holds the only WebSocket to the plugin. Other servers are followers and forward their calls to the leader.
flowchart LR
client([MCP client]) -- stdio --> tools
client2([2nd MCP client]) -- stdio --> follower[Follower]
subgraph leaderProc [Leader process]
tools[tools<br/>60 tools, Check] -- Send --> leader[cluster.Leader<br/>:1994 /rpc /ws /ping]
leader --> bridge[bridge<br/>request/response match]
end
follower -. POST /rpc .-> leader
subgraph plugin [Figma plugin]
ui[Plugin UI<br/>Svelte iframe] -- postMessage --> main[Plugin main<br/>dispatch handlers]
end
bridge == WebSocket ==> ui
main -- read / write --> figma[(Figma document)]One tool call, end to end:
sequenceDiagram
participant C as MCP client
participant T as tools
participant L as cluster
participant B as bridge
participant U as Plugin UI
participant M as Plugin main
participant F as Figma
C->>T: tools/call (stdio)
T->>L: Send after Check
Note over L: A follower first sends POST /rpc to the leader
L->>B: forward
B->>U: WebSocket request
U->>M: postMessage
M->>F: read / write nodes
F-->>M: nodes
M-->>U: response
U-->>B: WebSocket reply
B-->>L: matched by id
L-->>T: (any, error)
T-->>C: tool resultTools
Read
Tool | What it does |
| Node tree of the selection, page, or whole file. Stops at 500 nodes by default; |
| Full details of nodes by ID. Unknown IDs go in |
| Selected nodes, or pinned ones with |
| File name, current page, and all pages |
| Find nodes by name and/or type on a page, in a node, or in the whole file |
| View center, zoom, and visible area |
| Paint, text, effect, and grid styles |
| Variable collections, modes, and values |
| All components and component sets |
| An instance's component properties and values |
| Dev Mode annotations |
| Fonts on the current page, most used first |
| A node's prototype reactions |
Export
Tool | What it does |
| Export nodes as images: saved to a file with |
| Save frames as one multi-page PDF |
| Original image files from image fills, as base64 |
| Variables and paint styles as JSON or CSS |
| Set a node's Export presets |
Create
Tool | What it does |
| FRAME, RECTANGLE, ELLIPSE, STAR, POLYGON, LINE, or SECTION |
| Text node (loads the font) |
| Vector from SVG, e.g. an icon |
| Image from a URL or base64, as a new rectangle or into a node |
| Turn a frame into a component |
| Instance of a local or library component |
| Combine components into a variant set |
| Add, edit, delete, or bind component properties |
| Connector line (FigJam only) |
| UNION, SUBTRACT, INTERSECT, or EXCLUDE shapes |
| Merge nodes into one vector |
| Turn a stroke into a filled shape |
Edit
Tool | What it does |
| Position, size, radius, visibility, lock, opacity, rotation, blend, constraints, layer order, mask, stroke |
| Solid or gradient fill, or solid stroke |
| Auto layout: direction, padding, gap, align, HUG/FILL sizing, min/max |
| Column, row, or square grids |
| Shadows, blurs, noise, texture, glass |
| Text content and whole-node text settings |
| Style part of a text: bold, color, link, list |
| Find and replace text, regex allowed |
| Set an instance's component properties |
| Swap an instance to another component |
| Turn instances into plain frames |
| Copy a node |
| Move nodes into another parent |
| Group or ungroup |
| Rename by name, find/replace, regex, prefix, or suffix |
| Dev Mode annotations (paid seat) |
| Prototype reactions: set, append, or remove |
| Delete nodes |
Styles, variables, pages
Tool | What it does |
| PAINT, TEXT, EFFECT, or GRID style |
| Rename or recolor a paint style |
| Apply a style to a node |
| Delete a style |
| Create collections, modes, and variables; set values; delete; bind to nodes |
| Add, delete, rename, or go to a page |
Workflow
Tool | What it does |
| Run many write steps in one call, pass results between steps, undo on error |
| Select and zoom to nodes to show the user |
| Save a named version before big changes |
| Save code for Dev Mode's Code panel |
| Store key/value notes on a node in the file |
Prompts
Prompt | What it does |
| How to read designs well |
| How to create and edit designs |
| Replace text across a design in chunks |
| Turn manual notes into Figma annotations |
| Copy overrides between instances |
| Turn prototype links into flow diagrams |
Upgrading
Update the plugin when you update the server. npx updates the server, but the plugin is installed by hand. An old plugin rejects new commands with Unknown request type.
See CHANGELOG.md for what changed in each release, including removed tools and what to use instead.
Development
Server: Go 1.27+ (
make test-go,make build-go)Plugin: Bun 1.4+ (
cd plugin && bun install && bun run build)All tests:
make testLogs: stderr.
FIGMA_MCP_LOG=debugshows tool parameters and traffic.Package rules:
make deps-checkfails on wrong-way imports.internal/hasbridge(plugin WebSocket),cluster(leader election),figma(rules), andtools(tool table). Allowed:tools → figma,cluster → bridge.
macOS binaries need macOS 13 or later (Go 1.27).
Contributing
Issues and PRs are welcome.
Star History
This server cannot be deployed
Maintenance
Related MCP Connectors
The Figma MCP server brings Figma design context directly into your AI workflow.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Jinn gateway MCP — brand DNA, brand kits, design systems, and agency tools behind one bearer token.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceFigma MCP Bridge is a combined Figma plugin and MCP server that bypasses Figma's free API rate limits by streaming live document data directly to AI tools via a local WebSocket connection instead of the standard cloud API.670MIT
- AlicenseAqualityBmaintenanceFigma MCP server with full read/write access via plugin bridge — no API token, no rate limits. 58 tools for design automation: styles, variables, components, prototypes, and content.731,267MIT
- AlicenseAqualityCmaintenanceWrite-side MCP server for Figma — build, edit, and search Figma designs from Claude Code, Cursor, Cline, or any MCP client. Complements Figma's official read-only MCP with 41 tools for tree creation, variables, components, and visual verification.412MIT
- AlicenseNot gradedqualityCmaintenanceToken-efficient Figma MCP server with image export, query DSL, and design token support.10 npmMIT