The tools that pay for the setup are the bulk ones: cloning a node to many positions, setting the same property across a selection, updating many text nodes with their styling in one call, and running a batch of commands as a single round trip. The text model is the other reason to reach for this over a general design tool — styling is addressed by character range, so updating copy keeps the bold, the colours and the fonts that were already there. Remember the plugin and socket server are separate processes; if commands do nothing, the channel is usually the thing that was never joined.
A bridge into an open Figma document through a plugin and a local WebSocket connection. The assistant reads the current selection and node tree, then creates, moves, restyles and deletes nodes in the file you are looking at.
- The document, the current context and any node or set of nodes read in detail, including the full detail of what is selected right now
- Creation and editing of the basics: rectangles, frames, text, fills, strokes, corner radius, position, size, cloning and deletion, singly or several at a time
- Auto-layout driven properly — layout mode and wrap, padding, primary and counter axis alignment, horizontal and vertical sizing, and spacing between children
- Component work: local components listed, instances created, and one instance's overrides captured and applied to other instances
- Text handled as ranges rather than as a blob: bold, italic, underline and strikethrough on a span, decoration style, colour, thickness and offset, font family, style and size per range, and the styled segments read back
- Text updated with formatting preserved, and find-and-replace that only restyles the part it replaced
- Bulk operations built for scale: many text nodes set in one call with their styles, a node cloned to many positions at once, one property set across many nodes, and a batch of commands executed in a single round trip
- Scanning with depth limits, timeout control and partial results, so a large document returns something rather than hanging
- Annotations read and written, prototyping reactions read, and connections drawn between nodes with a default connector
- Figma Slides: slides and slide rows created, arranged into a grid, transitions read and set, viewport mode switched, slide content and tables extracted, and a presentation summary generated
- Tables created and read as an array, an object or CSV, plus shapes with text and GIFs in Slides and FigJam
- Component descriptions read and written in Markdown, with a normaliser for Figma's supported subset
- Connection status and statistics for the plugin link itself
Three pieces have to be running, not one: Bun on the machine, the WebSocket server started with bun socket, and the Figma Copilot plugin installed and open in Figma. The MCP server itself runs as bunx figma-copilot@latest. Before any command will reach the document, the plugin has to be paired by joining a channel — that call comes first in every session. Some tools are Slides or FigJam only. Several older tools remain as deprecated aliases pointing at their replacements. This is an independent project, not affiliated with Figma. MIT.
One command — bunx figma-copilot
