Figma MCP Bridge
Read and edit open Figma and FigJam files through a desktop plugin instead of the Figma REST API
Reads and edits open Figma and FigJam files through a local plugin and WebSocket relay
By Xúlio Zé (individual) TypeScript Local · stdio Design
62 popularity score ★ 676 ↓ 731/wk
Opens the app, which asks before it adds the server.
npx claude-talk-to-figma-mcpclaude mcp add claude-talk-to-figma -- npx -p claude-talk-to-figma-mcp@latest claude-talk-to-figma-mcp-server{
"mcpServers": {
"claude-talk-to-figma": {
"command": "npx",
"args": [
"-p",
"claude-talk-to-figma-mcp@latest",
"claude-talk-to-figma-mcp-server"
]
}
}
}{
"mcpServers": {
"claude-talk-to-figma": {
"command": "npx",
"args": [
"-p",
"claude-talk-to-figma-mcp@latest",
"claude-talk-to-figma-mcp-server"
]
}
}
}{
"servers": {
"claude-talk-to-figma": {
"type": "stdio",
"command": "npx",
"args": [
"-p",
"claude-talk-to-figma-mcp@latest",
"claude-talk-to-figma-mcp-server"
]
}
}
}[mcp_servers.claude-talk-to-figma]
command = "npx"
args = ["-p", "claude-talk-to-figma-mcp@latest", "claude-talk-to-figma-mcp-server"]gemini mcp add --scope user claude-talk-to-figma npx -- -p claude-talk-to-figma-mcp@latest claude-talk-to-figma-mcp-serverClaude Talk to Figma MCP gives an MCP client hands inside the Figma desktop app. It has three moving parts: the MCP server your client starts over stdio, a small WebSocket relay on your machine, and a Figma development plugin that you import into Figma Desktop. The plugin shows a channel ID; you ask the assistant to join that channel, and from then on its tool calls reach the open file through the relay.
The tools cover reading a document (pages, selection, node details, styles, text scans, image export), drawing and arranging layers (shapes, frames, text, groups, auto layout), restyling them (fills, strokes, effects, typography, corner radius), working with local and team-library components, editing image fills, and building FigJam boards with stickies, shapes, connectors and sections. Typical uses are design audits such as contrast checks, bulk recolouring, and reading a frame to write matching front-end code.
The server at v1.0.0 registers 93 tools across its tool files, while the README's command list (COMMANDS.md) names 64; the extra ones include variables (get_variables, set_variable, apply_variable_to_node), SVG import and export (set_svg, get_svg). The relay queues commands per channel so several agents can work on one file, gives each command up to two minutes before returning a timeout error, and refuses set_current_page outright; creation tools take a parentId to say which page they target.
It is a community project by Xúlio Zé, based on Sonny Lazuardi's cursor-talk-to-figma-mcp, and is not made by Figma.
| Runtime | Node.js |
|---|
Node.js (the client starts the server with npx). Figma Desktop with the project's development plugin imported from src/claude_mcp_plugin/manifest.json, which means having the repository on disk: running `npx claude-talk-to-figma-mcp` once clones it with git, installs dependencies and starts the WebSocket relay on port 3055. The relay is written against Bun's server API; the launcher offers to install Bun and otherwise falls back to npm. The relay and the plugin must be running, and the assistant must join the plugin's channel, before any tool works. Claude Desktop can instead install the .dxt file from the releases page.
It works only on files open in Figma Desktop with the plugin running; it does not call Figma's REST API or reach files that are closed. set_current_page is still listed as a tool but the relay blocks it in every case; pass the page ID as parentId instead. Each command times out after 120 seconds, a value fixed in the relay's code. The relay port is set to 3055 in socket.ts, while the MCP server's --port, --server and --reconnect-interval arguments only change where it connects. The README lists full Figma Variables support as still in development, although variable tools exist at v1.0.0. Docker in the docs runs only the relay, not the MCP server.
It suits designers and front-end developers who work in Figma Desktop and want an assistant to audit, restyle or build layers in the file they have open, including FigJam boards. Because it writes to the live document and needs a plugin, a relay and a channel join each session, it is more setup than a read-only tool. Anyone who needs closed files, comments or Figma's REST API without the desktop app should look elsewhere.
join_channelget_document_infoget_selectionget_node_infoget_nodes_infoscan_text_nodesget_stylesexport_node_as_imageget_pagescreate_pagedelete_pagerename_pageset_image_fillget_image_from_nodereplace_image_fillapply_image_transformset_image_filterscreate_rectanglecreate_framecreate_textcreate_ellipsecreate_polygoncreate_starclone_nodegroup_nodesungroup_nodesinsert_childflatten_nodeset_fill_colorset_stroke_colorset_selection_colorsmove_noderesize_noderename_nodedelete_nodeset_corner_radiusset_auto_layoutset_effectsset_effect_style_idset_text_contentset_multiple_text_contentsset_text_alignset_font_nameset_font_sizeset_font_weightset_text_style_idset_letter_spacingset_line_heightset_text_caseget_styled_text_segmentsget_local_componentsget_remote_componentscreate_component_instanceset_instance_variantget_figjam_elementscreate_stickyset_sticky_textcreate_shape_with_textcreate_connectorcreate_section