
Talk to Figma MCP Server: Setup for Claude, Cursor and Other Apps
Not the official Figma MCP server. This one is built by the community. Figma makes its own: Figma MCP Server →
Lets Claude and Cursor read and edit your Figma designs, from text and colours to layout and components.
Talk to Figma connects an AI app to the Figma file you have open, so the assistant can read a design and change it. It can create frames and text, restyle layers, adjust auto layout, edit annotations and delete layers. Setup has three parts: the MCP server, a small relay that runs on your computer with Bun, and a Figma plugin. The assistant then joins a channel to link them.
Good for
- Designers who want an assistant to make bulk text or style changes in Figma
- Developers who want Cursor or Claude Code to read a design before writing code
- Product teams turning prototype flows into connector lines and annotations
- Anyone who already uses Bun and the Figma desktop app
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Talk to Figma MCP
Claude Code
- 1
Copy this prompt.
Add the Talk to Figma MCP server to Claude Code. Run this command: claude mcp add cursor-talk-to-figma -- npx -y cursor-talk-to-figma-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Also needed: Bun, the Figma plugin from the Figma Community page, and the relay started with the repository's socket script. Then ask the assistant to join a channel.
Built from the package data we hold. Not yet tested by us.
Tools
Reads full details of what you have selected in Figma
Returns detailed information about every node in your current selection, with no parameters.
Try: “Read the design I have selected and describe its layout.”
Read ·
read_my_designShows basic facts about the open Figma file
Returns information about the current Figma document.
Try: “What is in my open Figma file?”
Read ·
get_document_infoShows what is selected in Figma
Returns information about the current selection.
Try: “What do I have selected in Figma right now?”
Read ·
get_selectionReads details of one layer
Returns detailed information about a single node, by its ID.
Try: “Give me the details of node 12:34.”
Read ·
get_node_infoReads details of several layers at once
Returns detailed information about many nodes, given a list of IDs.
Try: “Get the details for nodes 12:34, 12:35 and 12:40.”
Read ·
get_nodes_infoFinds every piece of text inside a selected layer
Scans a selected node for text nodes, in chunks so large designs do not time out.
Try: “List all the text in the selected frame.”
Read ·
scan_text_nodesFinds child layers of given types
Scans a selected node for child nodes of the types you name, which helps when matching annotations to elements.
Try: “Find all buttons and inputs inside the selected frame.”
Read ·
scan_nodes_by_typesLists the file's styles
Returns all styles in the current Figma document.
Try: “Which color and text styles does this file define?”
Read ·
get_stylesLists the file's local components
Returns all local components in the document.
Try: “List the components defined in this file.”
Read ·
get_local_componentsLists annotations in the file or on a layer
Returns all annotations in the document, or only those on one node.
Try: “What annotations are on this screen?”
Read ·
get_annotationsReads prototype links between screens
Returns the prototype reactions from nodes. The tool's own text says its output must be passed through the 'reaction to connector' prompt straight away to build connector lines.
Try: “Read the prototype flow from the selected screens.”
Read ·
get_reactionsCopies the custom settings from a component instance
Extracts the override properties from a selected component instance, so they can be applied to other instances.
Try: “Copy the overrides from the selected button instance.”
Read ·
get_instance_overridesExports a layer as an image
Exports a node as PNG, JPG, SVG or PDF. The tool's own text says it is returned as base64 text.
Try: “Export the selected frame as a PNG.”
Read ·
export_node_as_imageSelects a layer and scrolls Figma to it
Selects one node and scrolls the Figma view to it.
Try: “Take me to the login button.”
Write ·
set_focusSelects several layers and shows them
Selects many nodes and scrolls the view so they are visible.
Try: “Select all the error-state frames.”
Write ·
set_selectionsConnects to the Figma plugin through a channel
Joins a named channel on the local relay so the assistant can talk to the Figma plugin. It has to happen before any other command.
Try: “Join channel abc123 so we can work in Figma.”
Network ·
join_channelDraws a rectangle
Creates a rectangle with a position, size and optional name.
Try: “Draw a 200 by 100 rectangle at the top left.”
Write ·
create_rectangleCreates a frame
Creates a frame with a position, size and optional name, with settings for fill, stroke and auto layout.
Try: “Create a 375 by 812 frame named Home.”
Write ·
create_frameAdds a text layer
Creates a text node with font settings you choose.
Try: “Add the heading 'Welcome back' in 32px bold.”
Write ·
create_textPlaces an instance of a component
Creates an instance of a local component by ID or of a published library component by key.
Try: “Add an instance of the Primary Button component.”
Write ·
create_component_instanceDraws connector lines between layers
Creates connector lines between nodes using the default connector style, for example to show a prototype flow.
Try: “Connect the screens along the prototype flow.”
Write ·
create_connectionsChooses the connector style to use
Sets a connector node you copied as the default style for new connections.
Try: “Use the connector I copied as the default.”
Write ·
set_default_connectorChanges the text of one text layer
Sets the text of an existing text node.
Try: “Change the heading to 'Sign in'.”
Write ·
set_text_contentChanges many text layers in one go
Updates the text of many text nodes at once. Prompts in the server describe a step-by-step approach for bulk replacement.
Try: “Replace all placeholder names in this card list with real ones.”
Write ·
set_multiple_text_contentsAdds or edits an annotation
Creates or updates an annotation, with markdown text.
Try: “Annotate the pricing card with 'Needs legal review'.”
Write ·
set_annotationAdds or edits many annotations at once
Creates or updates several annotations in one call.
Try: “Turn my numbered notes into real Figma annotations.”
Write ·
set_multiple_annotationsApplies copied settings to other instances
Applies copied overrides to selected component instances, which are swapped to the source component.
Try: “Apply the copied overrides to the other three buttons.”
Write ·
set_instance_overridesSets the fill colour of a layer
Sets the fill of a node, as an RGBA colour.
Try: “Make the header background dark blue.”
Write ·
set_fill_colorSets the outline colour and weight
Sets the stroke colour and weight of a node.
Try: “Give the card a 2px grey border.”
Write ·
set_stroke_colorRounds the corners of a layer
Sets the corner radius of a node, with optional control of each corner.
Try: “Round the card corners to 12px.”
Write ·
set_corner_radiusSets auto layout direction on a frame
Sets whether a frame lays out its children horizontally, vertically or not at all, and whether it wraps.
Try: “Make this frame a vertical auto layout.”
Write ·
set_layout_modeSets padding in an auto layout frame
Sets top, right, bottom and left padding of an auto-layout frame.
Try: “Add 16px padding around the contents.”
Write ·
set_paddingSets alignment in an auto layout frame
Sets the primary and counter axis alignment for an auto-layout frame.
Try: “Centre the items in this row.”
Write ·
set_axis_alignSets fixed, hug or fill sizing
Sets horizontal and vertical sizing modes for an auto-layout frame.
Try: “Make the card hug its content vertically.”
Write ·
set_layout_sizingSets the gap between items
Sets the distance between children in an auto-layout frame.
Try: “Set the gap between list items to 8px.”
Write ·
set_item_spacingMoves a layer
Moves a node to a new position.
Try: “Move the logo 40px to the right.”
Write ·
move_nodeResizes a layer
Resizes a node to new dimensions.
Try: “Make the banner 1200 pixels wide.”
Write ·
resize_nodeDuplicates a layer
Creates a copy of a node, with an optional position offset.
Try: “Duplicate this card three times.”
Write ·
clone_nodeDeletes a layer
Deletes a node from the Figma file.
Try: “Delete the old logo.”
Delete ·
delete_nodeDeletes many layers at once
Deletes several nodes in one call.
Try: “Delete all the draft frames I selected.”
Delete ·
delete_multiple_nodesFills a layer with an image (not yet published)
On the main branch only. Fills a node with an image from a local file path, a URL or base64 data, and replaces the node's existing fills. It reads the file or fetches the URL from the machine running the server.
Try: “Use the photo at ~/Pictures/hero.jpg as the banner fill.”
Write ·
set_image_fillRenames a layer (not yet published)
On the main branch only. Renames a node.
Try: “Rename this frame to 'Pricing - mobile'.”
Write ·
rename_nodeCreates a section (not yet published)
On the main branch only. Creates a section to group related content on the canvas.
Try: “Create a section called 'Onboarding' for these screens.”
Write ·
create_sectionMoves a layer into another frame (not yet published)
On the main branch only. Moves a node into a new parent such as a section, frame or group, keeping its position unless you give x and y.
Try: “Move these screens into the Onboarding section.”
Write ·
set_parent
Read from the source code
Permissions
high risk · 5 things to watch
High risk
The assistant can read everything in the open Figma file and also change it and delete layers. Work on a copy of the file, and use Figma's version history to roll back a bad edit.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can delete layers
Two tools delete one or many layers in the open file. Work on a duplicate, and check Figma version history if something goes missing. github.com
The relay has no sign-in and sets no host
The relay on port 3055 only asks clients to join a named channel, allows any origin, and its source sets no host (the only hostname line is commented out). Bun listens on all interfaces when no host is set, so another device on your network may be able to join your channel and send edit and delete commands. Run it on a trusted network or behind a firewall. github.com
It edits the open file directly
Most tools create, move, restyle or retext layers as soon as they are called. Review large batch changes before you accept them. github.com
Four tools are not published yet
Filling a layer from a local file or URL, renaming, creating sections and moving layers into a parent exist on the main branch only. The image tool can read a file path or fetch a URL from your machine. github.com
The plugin source sends anonymous usage events to Google Analytics
The plugin source on the main branch sends plugin opens, command names and success or error to Google Analytics, and says no file content or personal data is collected. Check the plugin version you install. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. Most tools edit the open Figma file, and two delete layers. |
|---|---|
| Talks to | Local relay on port 3055. The Figma plugin. Google Analytics (anonymous plugin usage events, per the plugin source) |
| Sign-in and keys | No account or API key. The assistant reaches Figma through a plugin you run yourself and a relay on your computer. The relay does not check who connects. |
| Scopes |
|
Questions
What do I need besides the MCP server?
You need Bun to run the relay, which you start from a clone of the repository, and the Figma plugin from the Figma Community page. Then the assistant joins a channel so the plugin and server can talk. The install box covers the server config only.
Is the Talk to Figma MCP server official?
No. It is a community project from Grab's open-source repository, not made by Figma.
How is it different from Figma's own MCP server?
Talk to Figma reads and edits the file you have open through a plugin. Figma's own server is a separate product with its own setup, so see the Figma MCP servers page to compare them.
Does it work with Claude Code?
Yes. The README says it is for Cursor and Claude Code, and the install box gives the Claude Code command. You still need the relay and the plugin.
Where does the npm package come from?
The README itself tells you to run bunx cursor-talk-to-figma-mcp@latest, and the repository's setup script writes that config, so the package is the one the project points to. But the package is published by an individual npm account (webrangeriit), its package.json has no repository field, and nothing on npm links it back to the Grab repository. The install box shows npx instead of the README's bunx; the package's entry file starts with a Node shebang, so both run it. The relay still needs Bun.
Can it delete things in my file?
Yes. It can delete one or many layers. Work on a copy and use version history if you need to undo.
Does it use Figma's API or a token?
No token is mentioned in the README. It works through a plugin that runs inside the Figma app.
Does it send any data to a third party?
The Figma plugin source on the main branch sends anonymous usage events (plugin opens, command names, success or error) to Google Analytics and says no file content or personal data is collected. The MCP server itself needs no account. The relay listens on port 3055 and is not signed in, so keep it on a trusted network.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
cursor-talk-to-figma-mcp- Registry
- npm
- Transport
- stdio
- Auth
- None
- License
- MIT
- Last commit
- Jul 26, 2026
- Open issues
- 68
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 5Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- registry.npmjs.org · registry.npmjs.org