← MCP servers · grab

Cursor Talk to Figma

SAFEgrade B · trust 89/100

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.

agentagenticagentic aiaiai agentsautomationclaude codecodex

Overview

From the repository's own README, as read at the audited commit.

# Talk to Figma MCPThis 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.https://github.com/user-attachments/assets/129a14d2-ed73-470f-9a4c-2240b2a4885c## Project Structure- `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 use1. Install Bun if you haven't already:```bashcurl -fsSL https://bun.sh/install | bash```2. Run setup, this will also install MCP in your Cursor's active project```bashbun setup```3. Start the Websocket server```bashbun socket```4. **NEW** Install Figma plugin from [Figma community page](https://www.figma.com/community/plugin/1485687494525374295/cursor-talk-to-figma-mcp-plugin) or [install locally](#figma-plugin)## Quick Video Tutorial[Video Link](https://www.linkedin.com/posts/sonnylazuardi_just-wanted-to-share-my-latest-experiment-activity-7307821553654657024-yrh8)## Design Automation Example**Bulk text content replacement**Thanks to [@dusskapark](https://github.com/dusskapark) for contributing the bulk text replacement feature. Here is the [demo video](https://www.youtube.com/watch?v=j05gGT3xfCs).**Instance Override Propagation**Another contribution from [@dusskapark](https://github.com/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](https://youtu.be/uvuT8LByroI).## Manual Setup and Installation### MCP Server: Integration with CursorAdd the server to your Cursor MCP configuration in `~/.cursor/mcp.json`:```json{  "mcpServers": {    "TalkToFigma": { 

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add talk-to-figma-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "talk-to-figma-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}

Exposed tools (44) 16 read · 26 write · 2 destructive

Blast radius: 2 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
clone_nodereadClone an existing node in Figma
create_component_instancewriteCreate an instance of a component in Figma. For LOCAL components (from get_local_components), use componentId with the id field. For published LIBRARY components, use componentKey with the publishedKey field.
create_connectionswriteCreate connections between nodes using the default connector style
create_framewriteCreate a new frame in Figma
create_rectanglewriteCreate a new rectangle in Figma
create_sectionwriteCreate a section in Figma to group related content on the canvas
create_textwriteCreate a new text element in Figma
delete_multiple_nodesdestructiveDelete multiple nodes from Figma at once
delete_nodedestructiveDelete a node from Figma
export_node_as_imagereadExport a node as an image from Figma
get_annotationsreadGet all annotations in the current document or specific node
get_document_inforeadGet detailed information about the current Figma document
get_instance_overridesreadGet all override properties from a selected component instance. These overrides can be applied to other instances, which will swap them to match the source component.
get_local_componentsreadGet all local components from the Figma document
get_node_inforeadGet detailed information about a specific node in Figma
get_nodes_inforeadGet detailed information about multiple nodes in Figma
get_reactionsreadGet Figma Prototyping Reactions from multiple nodes. CRITICAL: The output MUST be processed using the
get_selectionreadGet information about the current selection in Figma
get_stylesreadGet all styles from the current Figma document
join_channelreadJoin a specific channel to communicate with Figma
move_nodewriteMove a node to a new position in Figma
read_my_designreadGet detailed information about the current selection in Figma, including all node details
rename_nodewriteRename a node in Figma
resize_nodereadResize a node in Figma
scan_nodes_by_typesreadScan for child nodes with specific types in the selected Figma node
scan_text_nodesreadScan all text nodes in the selected Figma node
set_annotationwriteCreate or update an annotation
set_axis_alignwriteSet primary and counter axis alignment for an auto-layout frame in Figma
set_corner_radiuswriteSet the corner radius of a node in Figma
set_default_connectorwriteSet a copied connector node as the default connector
set_fill_colorwriteSet the fill color of a node in Figma can be TextNode or FrameNode
set_focuswriteSet focus on a specific node in Figma by selecting it and scrolling viewport to it
set_image_fillwriteFill a node in Figma with an image from a local file path, a URL, or base64 data (replaces the node
set_instance_overrideswriteApply previously copied overrides to selected component instances. Target instances will be swapped to the source component and all copied override properties will be applied.
set_item_spacingwriteSet distance between children in an auto-layout frame
set_layout_modewriteSet the layout mode and wrap behavior of a frame in Figma
set_layout_sizingwriteSet horizontal and vertical sizing modes for an auto-layout frame in Figma
set_multiple_annotationswriteSet multiple annotations parallelly in a node
set_multiple_text_contentswriteSet multiple text contents parallelly in a node
set_paddingwriteSet padding values for an auto-layout frame in Figma
set_parentwriteMove a node into a new parent node (e.g. a section, frame or group). Preserves the node
set_selectionswriteSet selection to multiple nodes in Figma and scroll viewport to show them
set_stroke_colorwriteSet the stroke color of a node in Figma
set_text_contentwriteSet the text content of an existing text node in Figma

Details

Source
grab/cursor-talk-to-figma-mcp
npm
talk-to-figma-mcp@1.0.0
Transports
stdio
License
MIT
Stars
7,009 · pushed 49d ago

Trust audit

Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (7)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_multiple_nodes, delete_node
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
uuid, ws, @types/bun, bun-types, tsup, typescript
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
src/talk_to_figma_mcp/package.json
uuid, ws, @types/node, @types/uuid, @types/ws, ts-node, typescript
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
DRAGME.md:444
curl -fsSL https://bun.sh/install | bash
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
DRAGME.md:1057
curl -fsSL https://bun.sh/install | bash
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
DRAGME.md:1148
[ "$SUDO_AVAILABLE" = "YES" ] && cd ~/Desktop && git clone https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp.git && cd cursor-talk-to-figma-mcp && curl -fsSL https://bun.sh/install | bash && s
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:18
curl -fsSL https://bun.sh/install | bash

Gates applied: no_behavioural_pass.

Audited 2026-09-13 · audit v0.4.0 · source sha 3b14afdfa9c1 · full audit: observations/trust-audit/mcp-server/grab__cursor-talk-to-figma-4.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-133b14afdfa9c1SAFEB89first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Cursor Talk to Figma MCP server?

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.

What tools does Cursor Talk to Figma expose?

44 in total: 16 read-only, 26 that write, and 2 that can delete or overwrite (delete_multiple_nodes, delete_node). Every one is listed on this page with its risk.

Is Cursor Talk to Figma safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Cursor Talk to Figma need?

No credential environment variables were found in its source, so it appears to need none.

How does Cursor Talk to Figma run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as talk-to-figma-mcp at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (3b14afdfa9c1), read on 2026-09-13. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-13 · job trust-audit-2026-09-13