PlugWiki
Figwright logo

Figwright Figma MCP Server: Setup for Claude, Cursor and Other Apps

CommunityLocal
Getnpm@figwright/mcpawdr74100/figwright

Not the official Figma MCP server. This one is built by the community. Figma makes its own: Figma MCP Server →

Lets Claude, Cursor and other assistants turn Figma designs into code and build or edit designs on the canvas.

Figwright lets Claude, Cursor, Codex and other assistants read your Figma designs as code-ready context, and also build and edit designs on the canvas. It pairs a local server with a small Figma plugin that you import once, and it runs on the free Figma plan. It is a community project by awdr74100, not made by Figma. The assistant can delete pages, layers and variables, so keep your client's tool approval turned on.

Good for

  • Front-end developers turning a selected Figma frame into code that reuses their components
  • Designers who want an assistant to build screens, styles and variables on the canvas
  • Teams on the free Figma plan that do not have a Dev Mode seat
  • People running several agents on different open Figma files

Works in

12 should work

Tap an app to see how to set it up and any known problems.

Install Figwright MCP

OpenCode

  1. 1

    Copy this prompt.

    Add the Figwright MCP server to OpenCode. Open opencode.json (create it if it does not exist) and merge in this entry, keeping any servers already there:
    
    {
      "mcp": {
        "figwright": {
          "type": "local",
          "command": [
            "npx",
            "-y",
            "@figwright/mcp@latest"
          ]
        }
      }
    }
    
    Then tell me how to load it and whether I need to sign in.
  2. 2

    Paste it into OpenCode. It shows the change and asks before running it.

Requires Node.js 20.19+ or 22.12+, Figma desktop app + Figwright plugin.

Import the Figwright plugin into Figma desktop first: download the zip from the latest GitHub release, then Plugins, Development, Import plugin from manifest. Open the plugin in your file to connect. The command ends in @latest so each launch gets the newest version.

Built from the package data we hold. Not yet tested by us.

Tools

  • Gets a compact summary of a design for coding

    Returns a depth-limited, token-efficient view of a node. It is the main read for turning designs into code and is preferred over a full node dump.

    Try: “Get the design context for the selected frame.”

    Read · get_design_context

  • Reads one layer in full detail

    Returns one node with its full subtree and every field: geometry, paints, effects, auto-layout and text.

    Try: “Show me everything about the selected button.”

    Read · get_node

  • Takes an image of layers for the assistant

    Exports nodes as PNG, JPG or SVG that the assistant can see, returned inline.

    Try: “Show me a screenshot of the selected frame.”

    Read · get_screenshot

  • Reads what you have selected

    Returns the nodes currently selected on the page, with geometry, fills, strokes, effects and text.

    Try: “Describe what I have selected.”

    Read · get_selection

  • Finds layers by name or type

    Searches the node tree by case-insensitive name part and/or exact type.

    Try: “Find every layer with "button" in its name.”

    Read · search_nodes

  • Reads Dev Mode annotations

    Returns annotations on a node, or on the whole current page.

    Try: “Show the annotations on this page.”

    Read · get_annotations

  • Shows a component's options and variants

    Returns a component's property contract: variants, toggles, text and swap properties.

    Try: “What options does the Button component have?”

    Read · get_component_api

  • Reads the whole current page

    Returns the full node tree of the current page with geometry, opacity, radius and fills.

    Try: “List everything on this page.”

    Read · get_document

  • Lists fonts used on the page

    Returns each font in use with a count, most used first.

    Try: “Which fonts does this page use?”

    Read · get_fonts

  • Lists components in a selection or subtree

    Returns components and component sets inside a node or the selection.

    Try: “List the components inside this section.”

    Read · get_local_components

  • Shows file name, pages and editor type

    Returns the file name, current page, page references and which editor the file is open in.

    Try: “What file and pages do I have open?”

    Read · get_metadata

  • Lists animations under a layer

    Lists every Figma Motion animation source in a node and its subtree, including hidden ones.

    Try: “What animations exist inside this frame?”

    Read · get_motion_context

Read from the source code

Permissions

high risk · 5 things to watch

High risk

The assistant can create, change and permanently delete things in your open Figma file, and some tools write files to your disk. Keep your client's tool approval on and try it on a duplicate of your file first.

What it can do

  • Read your data
  • Create and change things
  • Delete things
  • Read-only mode

Watch out for

  • It can delete pages, layers, styles and variables

    Tools such as delete_nodes, delete_page, delete_style and delete_variable_collection remove things from your open Figma file. Keep tool approval on and work in a duplicate file when trying it. github.com

  • It edits your Figma file with 99 write tools

    Write tools change layers, text, styles, variables, components, prototype links and animations. The batch tool rolls back a failed group of edits, but only for edits it accepts. github.com

  • Export tools write files to paths the agent picks

    save_screenshots, save_image_fills, export_pdf and export_video write to disk, and design_diff saves snapshots under .figwright/snapshots in your project. The README warns that a prompt-injected agent can misuse this. github.com

  • It reads your project files

    scan_components, component_map, icon_map, token_map and analyze_project read your codebase on the server machine. import_image can read a local image path you or the agent give it. github.com

  • A local port is open while it runs

    The relay listens on 127.0.0.1:3055 and refuses requests whose Host or Origin is not the plugin or loopback, per the source. FIGWRIGHT_ALLOW_ANY_ORIGIN=1 turns the origin check off, so leave it unset. github.com

Security advisories

No published security advisories as of Nov 1, 2026.

Technical details
Turning on read-onlyNo read-only switch or toolset flag exists in the server. Your client's per-tool approval prompts are the control the README points to.
Sign-in and keysNo sign-in. The server talks to the Figma plugin over a local WebSocket on 127.0.0.1:3055 and checks the Host and Origin headers of every request.

Questions

Is Figwright official?

No. It is a community project by awdr74100 and is not made by Figma. Figma's own server is a separate hosted one at mcp.figma.com.

Is Figwright free?

Yes. It is MIT-licensed, runs on the free Figma plan and needs no Dev Mode seat, according to the README. You do need the Figma desktop app to import the plugin.

What do I need besides the server?

Node.js 20.19+ or 22.12+, an MCP client, and the Figwright plugin imported once into Figma desktop from the latest GitHub release. Open the plugin in your file and it connects by itself.

How is it different from Figma's own MCP server?

The README says Figma's Dev Mode server needs a paid Dev Mode seat, while Figwright runs on the free tier and can also write to the canvas. Figwright runs on your machine; Figma's server is a hosted one.

Can it only read my designs?

No, there is no read-only mode. About 25 tools only read, but most of the 135 tools write, and the delete tools can remove content. Turn on your client's tool approval to review each action.

Does my design leave my computer?

The README says the server, relay and plugin run on your machine and nothing is sent elsewhere. Your assistant's model still sees whatever the tools return.

Why does it ask me to run a plugin?

Figma only lets plugins change a file. The plugin carries out each tool call through Figma's Plugin API, and shows every call in its panel.

Can several assistants use it at once?

Yes. Each assistant runs its own server, and use_file lets each claim a different open Figma file so edits do not cross over.

Information

updated Nov 2, 2026

Publisher
Community
Package
@figwright/mcp
Registry
npm
Transport
stdio
Auth
None
Version
0.7.0
License
MIT
Last commit
Oct 31, 2026
Open issues
3

GitHubnpmChangelogIssues

Other Figma MCP servers

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 7
  1. github.com · github.com
  2. github.com · github.com
  3. github.com · github.com
  4. github.com · github.com
  5. github.com · github.com
  6. github.com · github.com
  7. github.com · github.com

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.