grab/cursor-talk-to-figma-mcp sits at 7.1k stars on GitHub, written primarily in JavaScript. TalkToFigma: MCP integration between AI Agent (Cursor, Claude Code, Codex) and Figma, allowing Agentic AI to communicate with Figma for reading designs and modifying them programmatically.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This project implements a Model Context Protocol (MCP) integration between AI agent (Cursor, Claude Code) and Figma, allowing AI agent to communicate with Figma for reading designs and modifying them programmatically.
src/talk_to_figma_mcp/ - TypeScript MCP server for Figma integration
src/cursor_mcp_plugin/ - Figma plugin for communicating with Cursor
src/socket.ts - WebSocket server that facilitates communication between the MCP server and Figma plugin
How to use
Install Bun if you haven't already:
curl -fsSL https://bun.sh/install | bash
Run setup, this will also install MCP in your Cursor's active project
bun setup
Start the Websocket server
bun socket
NEW Install Figma plugin from Figma community page or install locally
Quick Video Tutorial
Video Link
Design Automation Example
Bulk text content replacement
Thanks to @dusskapark for contributing the bulk text replacement feature. Here is the demo video.
Instance Override Propagation
Another contribution from @dusskapark
Propagate component instance overrides from a source instance to multiple target instances with a single command. This feature dramatically reduces repetitive design work when working with component instances that need similar customizations. Check out our demo video.
Manual Setup and Installation
MCP Server: Integration with Cursor
Add the server to your Cursor MCP configuration in ~/.cursor/mcp.json:
scan_nodes_by_types - Scan for nodes with specific types (useful for finding annotation targets)
Prototyping & Connections
get_reactions - Get all prototype reactions from nodes with visual highlight animation
set_default_connector - Set a copied FigJam connector as the default connector style for creating connections (must be set before creating connections)
create_connections - Create FigJam connector lines between nodes, based on prototype flows or custom mapping
Creating Elements
create_rectangle - Create a new rectangle with position, size, and optional name
create_frame - Create a new frame with position, size, and optional name
create_section - Create a section to group related content on the canvas
create_text - Create a new text node with customizable font properties
Modifying text content
scan_text_nodes - Scan text nodes with intelligent chunking for large designs
set_text_content - Set the text content of a single text node
set_multiple_text_contents - Batch update multiple text nodes efficiently
Auto Layout & Spacing
set_layout_mode - Set the layout mode and wrap behavior of a frame (NONE, HORIZONTAL, VERTICAL)
set_padding - Set padding values for an auto-layout frame (top, right, bottom, left)
set_axis_align - Set primary and counter axis alignment for auto-layout frames
set_layout_sizing - Set horizontal and vertical sizing modes for auto-layout frames (FIXED, HUG, FILL)
set_item_spacing - Set distance between children in an auto-layout frame
Styling
set_fill_color - Set the fill color of a node (RGBA)
set_stroke_color - Set the stroke color and weight of a node
set_corner_radius - Set the corner radius of a node with optional per-corner control
set_image_fill - Fill a node with an image from a local file path, URL, or base64 data (FILL, FIT, CROP, or TILE)
Layout & Organization
move_node - Move a node to a new position
resize_node - Resize a node with new dimensions
delete_node - Delete a node
delete_multiple_nodes - Delete multiple nodes at once efficiently
clone_node - Create a copy of an existing node with optional position offset
rename_node - Rename a node
set_parent - Move a node into a new parent (section, frame or group), preserving its absolute position by default
Components & Styles
get_styles - Get information about local styles
get_local_components - Get information about local components
create_component_instance - Create an instance of a component
get_instance_overrides - Extract override properties from a selected component instance
set_instance_overrides - Apply extracted overrides to target instances
Export & Advanced
export_node_as_image - Export a node as an image (PNG, JPG, SVG, or PDF) - limited support on image currently returning base64 as text
Connection Management
join_channel - Join a specific channel to communicate with Figma
MCP Prompts
The MCP server includes several helper prompts to guide you through complex design tasks:
design_strategy - Best practices for working with Figma designs
read_design_strategy - Best practices for reading Figma designs
text_replacement_strategy - Systematic approach for replacing text in Figma designs
annotation_conversion_strategy - Strategy for converting manual annotations to Figma's native annotations
swap_overrides_instances - Strategy for transferring overrides between component instances in Figma
reaction_to_connector_strategy - Strategy for converting Figma prototype reactions to connector lines using the output of 'get_reactions', and guiding the use 'create_connections' in sequence
Development
Building the Figma Plugin
Navigate to the Figma plugin directory:
cd src/cursor_mcp_plugin
Edit code.js and ui.html
Best Practices
When working with the Figma MCP:
Always join a channel before sending commands
Get document overview using get_document_info first
Check current selection with get_selection before modifications
Use appropriate creation tools based on needs:
create_frame for containers
create_rectangle for basic shapes
create_text for text elements
Verify changes using get_node_info
Use component instances when possible for consistency
Handle errors appropriately as all commands can throw exceptions
For large designs:
Use chunking parameters in scan_text_nodes
Monitor progress through WebSocket updates
Implement appropriate error handling
For text operations:
Use batch operations when possible
Consider structural relationships
Verify changes with targeted exports
For converting legacy annotations:
Scan text nodes to identify numbered markers and descriptions
Use scan_nodes_by_types to find UI elements that annotations refer to
Match markers with their target elements using path, name, or proximity
Categorize annotations appropriately with get_annotations
Create native annotations with set_multiple_annotations in batches
Verify all annotations are properly linked to their targets
Delete legacy annotation nodes after successful conversion
Visualize prototype noodles as FigJam connectors:
Use get_reactions to extract prototype flows,
set a default connector with set_default_connector,
and generate connector lines with create_connections for clear visual flow mapping.
How active is development on grab/cursor-talk-to-figma-mcp?
The most recent commit recorded on grab/cursor-talk-to-figma-mcp was 3 months ago, based on the GitHub push timestamp. The repository has 794 forks — one of the better signals of community interest.
How does grab/cursor-talk-to-figma-mcp compare to other Developer Tools projects?
grab/cursor-talk-to-figma-mcp is tracked by TopGit in the Developer Tools category, with 7.1k GitHub stars and written in JavaScript. Browse the Developer Tools topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does grab/cursor-talk-to-figma-mcp have?
grab/cursor-talk-to-figma-mcp has 7.1k GitHub stars — refresh the page for the live number, or check github.com/grab/cursor-talk-to-figma-mcp. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is grab/cursor-talk-to-figma-mcp open source?
Yes — grab/cursor-talk-to-figma-mcp ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/grab/cursor-talk-to-figma-mcp.
What is grab/cursor-talk-to-figma-mcp?
grab/cursor-talk-to-figma-mcp (grab/cursor-talk-to-figma-mcp) is a JavaScript project on GitHub. From the project's own README: TalkToFigma: MCP integration between AI Agent (Cursor, Claude Code, Codex) and Figma, allowing Agentic AI to communicate with Figma for reading designs and modifying them programmatically.
Where do I read more about grab/cursor-talk-to-figma-mcp?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/grab/cursor-talk-to-figma-mcp is the definitive source.
Read full README in the tab above.
Still deciding about cursor-talk-to-figma-mcp?
One click hands the question to an AI along with this page — see what it says about cursor-talk-to-figma-mcp.