Figma MCP Go logo

Figma MCP Go

Figma MCP server with full read/write access via plugin β€” no API token, no rate limits. 73 tools.

Install Figma MCP Go

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": [
        "-y",
        "@tunglt1810/figma-mcp-go@latest"
      ]
    }
  }
}

Settings β†’ Developer β†’ Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Automated check passedβ€” started and listed 60 tools correctly (6d ago).

Overview

Tools60

What Figma MCP Go lets your agent do. Expand a tool for its parameters.

Verified live~10.4k tokens of context

Security & health

What it can reach and how reliably it runs β€” from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

7/7 checks healthy over the last 39d

What it can do

From the 60 tools this server returned when we ran it; 60 declare their own safety hints.

Runs commands Β· 1Can delete or modify data Β· 7Handles credentials Β· 3Makes network requests Β· 3Read-only tools Β· 52
Network at startup3 connections
Files written at startupNone
Install scriptsNone
npm provenanceSigned build
Package age110 days
Maintainers1

Observed 2026-10-17 in an isolated sandbox. A description of reach, not a security audit.

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 6d ago via OSV.dev Β· @tunglt1810/figma-mcp-go@latest (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks β€” not a rating.

GitHub stars16Stargazers on the source repository.
npm downloads1.2kPackage downloads in the last 30 days.
Last commit9d agoMost recent push to the default branch.
Availability100%Our rolling endpoint + install checks that succeeded.
Install checkPassedOur sandbox started it and listed its tools.
Tools exposed60Callable tools this server registers over MCP.
Directory activity6 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

figma-mcp-go

Figma MCP β€” Local Plugin Integration tunglt1810/figma-mcp-go server

npm version MCP Registry License: MIT GitHub stars

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_strategy and design_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.


Setup

Install with npx or bunx. No build step. Watch the setup video or follow the steps below.

Watch the video

1. Add the server to your AI tool

Claude Code CLI

bash
# 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@latest

Codex CLI

bash
# 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)

config.json
{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": ["-y", "@tunglt1810/figma-mcp-go"]
    }
  }
}

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

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

2. Install the Figma plugin

  1. In Figma Desktop: Plugins β†’ Development β†’ Import plugin from manifest
  2. Pick manifest.json from plugin.zip
  3. Run 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):

config.json
{
  "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.1 only 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 on confirm mode. Prefer an SSH tunnel.

4. Read-only mode (optional)

Add --read-only to offer only the 17 tools that cannot change the Figma file. These are the read tools, export_screenshots, export_frames_to_pdf, and get_image_bytes. The tool list that the AI loads is about 84% smaller.

config.json
{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": ["-y", "@tunglt1810/figma-mcp-go", "--read-only"]
    }
  }
}

The flag limits one server only. Another AI tool on the same port can still edit the file, unless it also uses the flag.

Plugin panel

The panel shows the connected file, the selection, and what the AI is doing.

ControlWhat it does
Guardoff (default) runs everything. confirm asks before deletes and bulk changes. read-only blocks all changes.
UndoUndoes the last change. A whole batch_execute_pipeline run is one undo step.
LogShows every request with tool, time, and error. Copy exports it for bug reports.
PinSaves the current selection. get_selection(source: "pinned") returns it even after the user clicks elsewhere.

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.

mermaid
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:

mermaid
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 result

Tools

Read

ToolWhat it does
get_documentNode tree of the selection, page, or whole file. Stops at 500 nodes by default; depth, maxNodes, detail, dedupe_components control size
get_nodes_infoFull details of nodes by ID. Unknown IDs go in missing; depth and maxNodes limit children
get_selectionSelected nodes, or pinned ones with source: "pinned"
get_metadataFile name, current page, and all pages
search_nodesFind nodes by name and/or type on a page, in a node, or in the whole file
get_viewportView center, zoom, and visible area
get_stylesPaint, text, effect, and grid styles
get_variable_defsVariable collections, modes, and values
get_local_componentsAll components and component sets
get_instance_overridesAn instance's component properties and values
get_annotationsDev Mode annotations
get_fontsFonts on the current page, most used first
get_reactionsA node's prototype reactions

Export

ToolWhat it does
export_screenshotsExport nodes as images: saved to a file with outputPath, or returned (PNG/JPG as image, SVG as text). No items = the selection
export_frames_to_pdfSave frames as one multi-page PDF
get_image_bytesOriginal image files from image fills, as base64
export_tokensVariables and paint styles as JSON or CSS
set_export_settingsSet a node's Export presets

Create

ToolWhat it does
create_nodeFRAME, RECTANGLE, ELLIPSE, STAR, POLYGON, LINE, or SECTION
create_textText node (loads the font)
create_vectorVector from SVG, e.g. an icon
import_imageImage from a URL or base64, as a new rectangle or into a node
create_componentTurn a frame into a component
create_component_instanceInstance of a local or library component
combine_as_variantsCombine components into a variant set
manage_component_propertiesAdd, edit, delete, or bind component properties
create_connectorConnector line. This tool operates only in a FigJam file
boolean_operationUNION, SUBTRACT, INTERSECT, or EXCLUDE shapes
flatten_nodesMerge nodes into one vector
outline_strokeTurn a stroke into a filled shape

Edit

Reviews

No reviews yet β€” be the first to share how it worked for you.

Frequently Asked Questions about Figma MCP Go

figma-mcp-go is an MCP server that connects AI tools to an open Figma file through a local Figma plugin. It provides live read and write access without a REST API token, covering styles, variables, components, prototypes, text, batching, and design-to-code workflows. It runs locally and works with Claude, Cursor, GitHub Copilot, and other MCP clients.

Install figma-mcp-go with npx or bunx, add it to your MCP client configuration, and import the provided plugin manifest into Figma Desktop. Run the plugin in the Figma file you want to access, then connect your AI tool using the documented MCP server command.

No, figma-mcp-go does not require a REST API token. It communicates with the open Figma file through a locally running Figma plugin, providing read and write access through the Figma Plugin API.

figma-mcp-go can read and edit an open Figma file, including styles, variables, components, prototypes, text, and multi-step batches with undo. It also includes prompts such as read_design_strategy and design_strategy, and supports turning text into designs and designs into code.

Yes, multiple AI tools can use figma-mcp-go. For the same Figma file, additional servers forward calls to the server holding the plugin connection; for different files, configure a separate port and use the same port in each file's plugin settings.

Related MCP servers

Add a badge to your READMEShow it’s listed β€” live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewFigma MCP Go AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/figma-mcp-go?style=directory)](https://allmcps.com/mcp/figma-mcp-go)
HTML Embed
<a href="https://allmcps.com/mcp/figma-mcp-go"><img src="https://allmcps.com/api/badge/figma-mcp-go?style=directory" alt="Figma MCP Go on AllMCPs" /></a>