← Back to directory
T

TalkToFigma

Community
Connect AI agents to Figma for programmatic design work through MCP.
Category
Collaboration #39 of 55
Stars
★ 7.1k Very popular
Transport
stdio (local process)
Runtime
Bun
Credentials
No credential needed
License
MIT
Last commit
Tools
40
47FMRS · D

An MIT-licensed community MCP project that connects an AI agent to Figma through an MCP server, Figma plugin, and WebSocket server. The README documents extensive read, create, modify, batch, annotation, component, connection, and export tools. Users should prepare Bun, the Figma plugin, and the local WebSocket service, and carefully review destructive or batch changes.

Strongest · Setup experience 11/20 Weakest · Security and permissions 7/20

Reliability
8/20
Security and permissions
7/20
Maintenance
10/20
Documentation
11/20
Setup experience
11/20
Why each score
Reliability 8/20
The README describes a plausible startup chain involving the MCP server, WebSocket server, and Figma plugin, and lists the declared tools and prompts. However, no verifiable manifest, source-level execution evidence, CI, tests, handshake validation, or detailed error-handling evidence is provided; tool declarations cannot be fully verified, so points are deducted.
Security and permissions 7/20
The README shows WebSocket communication with the Figma plugin and exposes destructive and high-impact design operations, including node deletion and batch deletion. It also instructs WSL users to listen on 0.0.0.0. Authentication, authorization, access controls, data boundaries, network exposure, and confirmation requirements for dangerous actions are not documented, so the score is limited. No explicit credential theft, malware, or real secret is shown in the supplied material.
Maintenance 10/20
The repository is not archived, has an MIT license, and has a clear public repository location. However, the supplied material contains no evidence of commit cadence, releases, dependency maintenance, security-response channels, maintainer commitments, or issue-resolution practices. Stars and open issue counts are discovery signals only and do not add points, so this remains a middle score.
Documentation 11/20
The README covers project structure, installation, Cursor configuration, WebSocket startup, plugin connection, tool names, and several usage practices. It lacks the manifest, tool parameters and return schemas, authentication details, permission model, limits, compatibility versions, cost information, detailed troubleshooting, and reproducible test evidence; several important behaviors depend on unstated assumptions.
Setup experience 11/20
The README provides Bun installation, setup, WebSocket startup, Cursor configuration, plugin installation, and a WSL guide, making the main path understandable. However, it requires multiple processes, manual plugin and channel connection steps, and source modification for Windows/WSL; dependency versions, verification steps, recovery guidance, and cross-platform evidence are missing, so the setup is usable but fragile.

Static review · not runListed 2026-07-29

Read the FMRS scoring method →

Fit and risk

What it can accessUses the network

Best for

  • Design and development teams using Cursor, Claude Code, or Codex to drive Figma with natural language
  • Figma workflows requiring batch text, layout, annotation, or component-instance operations
  • Users able to run Bun, a WebSocket server, and a Figma plugin

Not for

  • Static file-reading workflows that do not run the Figma plugin
  • Read-only review workflows where AI must not modify the Figma document
  • Workflows requiring explicitly documented remote hosting, authentication, or another transport

Required permissions

  • Requires running the companion development plugin in Figma
  • Requires local WebSocket communication between the MCP server and the Figma plugin
  • Modification tools require corresponding read/write access to the current Figma document; the exact scope depends on the tool used

Risks and side effects

  • delete_node and delete_multiple_nodes remove nodes, so targets should be confirmed and results verified
  • Batch text, layout, styling, and instance-override operations can affect multiple design elements
  • Incorrect WebSocket channel connections can prevent communication with Figma
  • Node image export has limited support and returns base64 as text

Setup

Before you start

Runtime:Bun

Install Bun. Run bun setup to complete setup and install MCP in Cursor's active project. Run bun socket to start the WebSocket server. Install the plugin from the Figma Community page, or use Figma's Plugins > Development > New Plugin > Link existing plugin flow and select src/cursor_mcp_plugin/manifest.json. Open the plugin and join a channel with join_channel.

.cursor/mcp.json
{"mcpServers":{"TalkToFigma":{"command":"bunx","args":["cursor-talk-to-figma-mcp@latest"]}}}

Shown for Cursor. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "TalkToFigma": {
      "command": "bunx",
      "args": [
        "cursor-talk-to-figma-mcp@latest"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add TalkToFigma -- bunx cursor-talk-to-figma-mcp@latest

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

Start the WebSocket server with bun socket, run the Figma plugin, call join_channel in the client to join the same channel, then call get_document_info — returning the current Figma document info confirms the connection works.

Troubleshooting

  1. Confirm Bun is installed and run bun setup first
  2. Confirm the WebSocket server is running with bun socket
  3. Confirm the Figma plugin is installed, open, and joined to the correct channel
  4. Check that the Cursor MCP configuration uses bunx and the expected package or local server path
  5. For Windows + WSL, check the README guidance for enabling hostname 0.0.0.0 in src/socket.ts
  6. For large designs, use scan_text_nodes chunking parameters and monitor WebSocket updates

Things to try

Once connected, you can ask your AI assistant things like:

  • Read my current Figma selection and list all text nodes inside it
  • Batch replace the text content of all text nodes on this page with the new copy
  • Propagate the override properties from the selected component instance to the other target instances
  • Create a 400x300 frame on the canvas and set its fill color to blue

Tools 40

get_document_info read-only
Get information about the current Figma document
get_selection read-only
Get information about the current selection
read_my_design read-only
Get detailed node information about the current selection without parameters
get_node_info read-only
Get detailed information about a specific node
get_nodes_info read-only
Get detailed information about multiple nodes
set_focus read-only
Select a node and scroll the viewport to it
set_selections read-only
Select multiple nodes and scroll the viewport to show them
get_annotations read-only
Get all annotations in the current document or a specific node
Show 32 more tools
set_annotation writes
Create or update a Markdown-capable annotation
set_multiple_annotations writes
Batch create or update annotations
scan_nodes_by_types read-only
Scan for nodes by type
get_reactions read-only
Get prototype reactions with visual highlight animation
set_default_connector writes
Set the default FigJam connector style for creating connections
create_connections writes
Create FigJam connector lines from prototype flows or custom mappings
create_rectangle writes
Create a rectangle
create_frame writes
Create a frame
create_text writes
Create a text node with customizable font properties
scan_text_nodes read-only
Scan text nodes with intelligent chunking for large designs
set_text_content writes
Set the content of a single text node
set_multiple_text_contents writes
Batch update multiple text nodes
set_layout_mode writes
Set a frame's layout mode and wrap behavior
set_padding writes
Set padding on an auto-layout frame
set_axis_align writes
Set primary- and counter-axis alignment on an auto-layout frame
set_layout_sizing writes
Set horizontal and vertical sizing modes on an auto-layout frame
set_item_spacing writes
Set spacing between children in an auto-layout frame
set_fill_color writes
Set a node's fill color
set_stroke_color writes
Set a node's stroke color and weight
set_corner_radius writes
Set a node's corner radius with optional per-corner control
move_node writes
Move a node
resize_node writes
Resize a node
delete_node destructive
Delete a node
delete_multiple_nodes destructive
Batch delete nodes
clone_node writes
Clone a node with an optional position offset
get_styles read-only
Get information about local styles
get_local_components read-only
Get information about local components
create_component_instance writes
Create a component instance
get_instance_overrides read-only
Extract override properties from a selected component instance
set_instance_overrides writes
Apply extracted overrides to target instances
export_node_as_image read-only
Export a node as PNG, JPG, SVG, or PDF; image support is limited and currently returns base64 as text
join_channel writes
Join a channel for communicating with Figma

Use cases

Read current Figma document, selection, and node information
Replace text content in bulk
Create and modify frames, rectangles, text, and layout properties
Manage annotations, component instance overrides, and prototype connections
Export nodes as image files

Supported clients

Cursor
Claude CodePartial support
CodexPartial support

Listed from the project's documentation, not tested by this site.

Overview

TalkToFigma is an open-source MCP integration maintained by grab that connects AI agents with Figma to read designs and modify them programmatically. It includes a TypeScript MCP server, a Figma plugin, and a WebSocket server for communication between them.

Similar servers

Source revision ddd90f3a6d45 Data synced 2026-10-19 Read the FMRS scoring method