Professional integration of the cursor-talk-to-figma-mcp MCP server, enabling Cursor AI to communicate with Figma for reading designs and modifying them programmatically.
- 40+ MCP Functions - Comprehensive Figma interaction capabilities
- Document Reading - Analyze and extract design information
- Element Creation - Create rectangles, frames, and text programmatically
- Design Modification - Update text, styles, and layouts
- Component Management - Work with components and instances
- Batch Operations - Efficient bulk operations
- Auto-Layout Support - Configure auto-layout properties
- Annotation Support - Create and manage annotations
- Prototype Visualization - Convert prototype reactions to connectors
- Export Capabilities - Export nodes as images
- WebSocket server (port 3055):
./scripts/server/start-websocket.*launchesfigma-mcp-server/src/socket.ts. Keep this terminal open. - Figma plugin channel: Run the plugin in Figma, copy the channel name, and call
join_channelfrom Cursor to bind your session. - MCP stdio server:
figma-mcp-server/src/talk_to_figma_mcp/server.tsruns under Bun and proxies MCP tools to the WebSocket bridge. - Message path: MCP tool β stdio server β WebSocket β Figma plugin β Figma, then responses return the same path.
- Logging: All Figma ops log to stderr with
[Figma] [Category] [Action] β¦to avoid MCP stdio pollution.
- Quick Start
- Installation
- Documentation
- Features
- Configuration
- Usage Examples
- Project Structure
- Contributing
- License
Windows:
.\scripts\setup\setup.ps1Linux/Mac:
./scripts/setup/setup.shWindows:
.\scripts\server\start-websocket.ps1Linux/Mac:
./scripts/server/start-websocket.shClose and reopen Cursor to load the MCP server configuration.
- Open Figma and run the plugin:
Plugins > Cursor Talk To Figma MCP Plugin - Note the channel name from the plugin panel
- In Cursor, join the channel using
join_channel
See Quick Start Guide for detailed instructions.
- Bun Runtime - Install Bun
- Figma Desktop or Figma Web - Access to Figma
- Cursor IDE - With MCP support
See Installation Guide for complete installation instructions.
Comprehensive documentation is organized in the docs/ directory:
- Installation Guide - Complete installation instructions
- Quick Start Guide - Get up and running in 3 steps
- Activation Guide - Connect to Figma and verify setup
- Complete Tutorial - Step-by-step tutorial with examples
- Setup Guide - Configuration options and best practices
- Troubleshooting Guide - Common issues and solutions
- Functions Reference - Complete list of all 40+ functions
- API Documentation - Technical API reference
- Usage Examples - Code examples and use cases
- Local vs Official - Setup comparison
- Contributing Guide - How to contribute
- Architecture - System architecture
See Documentation Index for complete navigation.
Official Setup (Recommended):
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": ["cursor-talk-to-figma-mcp@latest"]
}
}
}Local Development:
{
"mcpServers": {
"TalkToFigma": {
"command": "bun",
"args": ["figma-mcp-server/src/talk_to_figma_mcp/server.ts"],
"cwd": "${workspaceFolder}"
}
}
}Location: .cursor/mcp.json
- Copy
.env.exampleto.envto override defaults for the WebSocket server. PORT(default3055) andHOST(defaultlocalhost) are read byfigma-mcp-server/src/socket.tsand thestart-websocketscripts.- Use these when you need to bind to a different interface/port (e.g., WSL or shared dev VMs).
See Setup Guide for detailed configuration options.
Extract/Inspect
- Join channel β
get_document_info(overview) βget_selectionβread_my_design. - For text/comments:
scan_text_nodes,get_annotations,get_reactions(progress is 0β100%). - Use batch scans before bulk edits; keep logs in required format.
Create/Modify
- Join channel; create containers first (
create_frame,create_rectangle), then text (create_text). - Style (
set_fill_color,set_stroke_color,set_corner_radius), auto-layout (set_layout_mode, spacing/padding). - Verify with
get_node_info/get_nodes_info; use batch ops (set_multiple_text_contents,set_multiple_annotations) to reduce round trips.
Prototype Connectors
- Fetch reactions (
get_reactions), then applyreaction_to_connector_strategy, set default connector, and callcreate_connections.
Get information about the current Figma document
Create a login screen with email and password fields
Replace all text in the selected frame with new content
Convert prototype reactions to connector lines
See Usage Examples for more examples.
.
βββ docs/ # All documentation
β βββ getting-started/ # Quick start guides
β βββ guides/ # Detailed guides
β βββ reference/ # Reference documentation
β βββ development/ # Development docs
β βββ archive/ # Historical docs
βββ scripts/ # Utility scripts
β βββ setup/ # Installation scripts
β βββ server/ # Server scripts
β βββ utils/ # Utility scripts
βββ figma-mcp-server/ # MCP server repository
βββ .cursor/ # Cursor configuration
β βββ mcp.json # MCP server config
β βββ rules/ # Cursor rules
βββ CHANGELOG.md # Version history
βββ FUTURE_LOG.md # Future plans
βββ LICENSE # Apache 2.0 License
βββ README.md # This file
The MCP server provides 40+ functions organized into categories:
- Document & Selection (7 functions) - Read document and selection information
- Creating Elements (3 functions) - Create rectangles, frames, and text
- Modifying Elements (6 functions) - Move, resize, clone, delete nodes
- Styling (3 functions) - Set colors, strokes, corner radius
- Auto Layout & Spacing (5 functions) - Configure auto-layout properties
- Annotations (3 functions) - Create and manage annotations
- Prototyping & Connections (3 functions) - Work with prototype flows
- Components & Styles (5 functions) - Manage components and styles
- Scanning & Analysis (2 functions) - Scan for nodes and text
- Export (1 function) - Export nodes as images
See Functions Reference for complete details.
All scripts are organized in the scripts/ directory:
- Setup:
scripts/setup/- Installation scripts - Server:
scripts/server/- WebSocket server scripts - Utils:
scripts/utils/- Utility scripts
See Scripts README for details.
Common issues and solutions:
- "Not connected to Figma" - Check WebSocket server and plugin connection
- "Must join a channel" - Join channel using
join_channel - MCP server not found - Restart Cursor and verify configuration
See Troubleshooting Guide for detailed solutions.
Contributions are welcome! Please see:
- Contributing Guide - General contribution guidelines
- Development Guide - Development-specific guidelines
- Future Log - Planned features and ideas
- Always join a channel first before sending commands
- Start with document overview using
get_document_info - Use batch operations for multiple items
- Verify changes with
get_node_infoafter modifications - Handle errors appropriately - all commands can throw exceptions
See Complete Tutorial for detailed best practices.
- Original Repository: grab/cursor-talk-to-figma-mcp
- Figma Plugin: Figma Community Page
- MCP Documentation: Model Context Protocol
- Documentation: Documentation Index
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
The MCP server (figma-mcp-server/) is based on cursor-talk-to-figma-mcp which is licensed under MIT License.
See CHANGELOG.md for version history and changes.
See FUTURE_LOG.md for future plans and ideas.
Need help? Check the Documentation Index or Troubleshooting Guide.
Ready to get started? See the Quick Start Guide!
- Prep the tree
- Verify no secrets: check
.env,.cursor/mcp.json, anddocs/design-systems/checkout/extracted-data/*.json; remove or redact if needed. - Ensure
.gitignoreexcludesnode_modules/,.bun/,dist/(and optionallyfigma-mcp-server/dist/), plus extraction JSONs you donβt want to publish. - Keep
LICENSE(Apache 2.0) andCHANGELOG.mdas-is.
- Initialize git (from repo root)
git init
git add .
git commit -m "Initial public release"- Create a new public GitHub repo
- Create on GitHub without auto-adding README/license/gitignore.
- Add remote and push
git remote add origin https://github.com/<your-org-or-user>/<repo-name>.git
git branch -M main
git push -u origin main- Optional polish before push
- Install deps:
(cd figma-mcp-server && bun install); commitbun.lock. - Quick status:
./scripts/utils/check-status.ps1(or.sh). - If extraction JSONs are large/sensitive, remove or gitignore
docs/design-systems/checkout/extracted-data/*.json.
- Post-publish
- Tag a release (e.g.,
v1.0.1) aligned withCHANGELOG.md. - Enable branch protection on
mainif desired.