home / mcp / talk to figma mcp server
TalkToFigma: MCP integration between AI Agent (Cursor, Claude Code) and Figma, allowing Agentic AI to communicate with Figma for reading designs and modifying them programmatically.
Configuration
View docs{
"mcpServers": {
"grab-cursor-talk-to-figma-mcp": {
"url": "https://mcp.example.com/mcp"
}
}
}You can connect an AI agent to Figma through the Talk to Figma MCP server, enabling reading designs and programmatic modifications via a consistent MCP interface. This server acts as a bridge between your MCP-enabled agent and the Figma plugin, letting you issue design commands, query document information, and apply changes across frames, components, and text elements with structured requests.
To use the Talk to Figma MCP server, install the MCP client in your Cursor environment, start the WebSocket bridge, and connect the Figma plugin to the running server channel. You will then be able to read document data, inspect selections, modify text and shapes, control layout, and propagate changes across multiple elements using the MCP tools.
Prerequisites: You need Bun installed on your system. You also need a Cursor MCP setup to consume the server.
# Install Bun if you haven't already
curl -fsSL https://bun.sh/install | bash
# Run setup to install MCP in your Cursor project
bun setup
# Start the WebSocket server
bun socketIf you are using Windows with WSL, follow these steps to enable network access from the WSL environment and start the socket server.
# Install bun via PowerShell
powershell -c "irm bun.sh/install.ps1|iex"
# In the code, listen on all interfaces by uncommenting the hostname
# In src/socket.ts, set hostname to 0.0.0.01. Start the WebSocket server with the command above. 2. Install the MCP server in Cursor using the provided configuration. 3. Open Figma and run the Cursor MCP Plugin. 4. In Figma, join the channel you created to communicate with the MCP server. 5. Use Cursor to send MCP commands and receive results from Figma.
Add the MCP server to your Cursor configuration to enable communication with Figma.
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": ["cursor-talk-to-figma-mcp@latest"]
}
}
}You can point your local development setup to this MCP server by adjusting your client configuration to use the local path of the server script.
{
"mcpServers": {
"TalkToFigma": {
"command": "bun",
"args": ["/path-to-repo/src/talk_to_figma_mcp/server.ts"]
}
}
}To work with the Figma plugin during development, navigate to the plugin directory, edit the code, and connect the plugin to the WebSocket server.
cd src/cursor_mcp_plugin
# Edit code.js and ui.html as neededAlways join the designated channel before sending commands. Validate the document state with read operations before applying changes. Use batch operations where possible to minimize roundtrips, and monitor progress via WebSocket updates for long-running tasks.
The MCP server includes helper prompts to guide you through complex design tasks, such as design strategy, read strategies, text replacement strategies, annotation conversion strategies, and override propagation strategies. Use these prompts to structure your tasks and improve reproducibility.
Examples include bulk text content replacement and propagating component instance overrides from a source instance to multiple targets, dramatically reducing repetitive design work.
Fetch information about the current Figma document, including metadata and structure.
Retrieve details about the current selection in the document.
Read detailed information about the current selection with no parameters.
Get detailed information about a specific node by ID.
Fetch detailed information for multiple nodes by providing an array of IDs.
Set focus to a specific node by selecting it and scrolling the viewport to bring it into view.
Select multiple nodes and scroll the viewport to show them.
Retrieve annotations in the document or on a specific node.
Create or update an annotation with markdown support.
Batch create or update multiple annotations efficiently.
Scan nodes by types to locate targets for annotations or operations.
Get prototype reactions and visuals for flow mapping.
Set the default FigJam connector style for future connections.
Create FigJam connector lines between nodes based on prototype flows or mappings.
Create a new rectangle with position, size, and optional name.
Create a new frame with position, size, and optional name.
Create a new text node with customizable font properties.
Set the text content of a single text node.
Batch update multiple text nodes efficiently.
Set layout mode and wrap behavior for an auto-layout frame.
Set padding values for an auto-layout frame.
Set primary and counter axis alignment for auto-layout frames.
Set horizontal and vertical sizing modes for auto-layout frames.
Set distance between children in an auto-layout frame.
Set the fill color of a node.
Set the stroke color and weight of a node.
Set the corner radius of a node with optional per-corner control.
Move a node to a new position.
Resize a node with new dimensions.
Delete a node.
Delete multiple nodes at once.
Create a copy of an existing node with an optional position offset.
Retrieve information about local styles.
Retrieve information about local components.
Create an instance of a component.
Extract override properties from a selected component instance.
Apply extracted overrides to target instances.
Export a node as an image in PNG, JPG, SVG, or PDF; returns base64 when image export is limited.
Join a specific channel to communicate with Figma.