Variables · Brand
“Add a High contrast mode to this Theme.”
Say what you want done to a .fig on your disk, in the AI app you already use. grafta opens it, makes the change, checks it, and saves a new file for you to open in Figma.
You ask
“Turn this web page into editable Figma layers.”
page.png
One flat page
landing-editable.figeditable
Layers
Frames, vectors and editable text
One MCP · the AI app you already use
One real request, on a local copy of your file: in Figma, File → Save local copy…







Each request ends in a new file for you to open in Figma, with layers you can keep editing. The pictures show the kind of result; their figures are examples.
Variables · Brand
“Add a High contrast mode to this Theme.”
0 failed · 0 unmeasured · checked on rendered backgrounds
“Check every text against WCAG AA and fix what fails.”

“Turn this screenshot into editable Figma layers.”

“Bring this web page into the file as auto-layout.”
“Audit the tokens, components and styles in this file.”
products.csv
Noma lamp, €129
Arc chair, €240
Fold table, €315
“Make this card a component and fill it from our data.”
Choose by where the work needs to happen. They do different jobs.
For files on your disk, repeated edits, and working with no Figma seat.
For working live in a file open in Figma.
Figma Help Center and developer documentation · 30 October 2026
There is nothing to sign in to.
It makes no network call of its own.
Every change goes to a new file. Only Figma can say it opens.
The server and file parser are MIT licensed.
.fig
Figma Design
.deck
Figma Slides
.jam
FigJam
.site
Figma Sites
No. grafta reads and writes the file on your disk. You need Figma only to save a local copy (File → Save local copy…) and to open the result.
grafta makes no network call: it runs on your computer and works on the file in place. What your model reads through it is a tool result like any other, sent wherever your MCP client sends the conversation.
It does not write over your files. save_as refuses a path that exists, with one exception: the empty file new_file just made, while it is still empty. It writes a new file and reads it back before it reports success, and refuses writes it knows Figma would have to repair. But grafta cannot run Figma: opening the result there is the final check, so keep your original.
Any client that speaks MCP over stdio should work, with any model it runs. We have run it in Claude Code and Claude Desktop. Cursor, VS Code, Windsurf and Codex use the same setup, but we have not tried them yet. Clients that only connect to remote servers, such as ChatGPT, cannot use it yet.
Close, not Figma's own: render_node draws with the fonts on your machine, and with the design's font installed most lines lay out within 2% of Figma's width. Some things are not drawn exactly, such as two blend modes and noise effects, and an instance does not lay out again when an overridden text changes its width. The caption names most of what it approximated; see the roadmap.
Figma Design .fig, Figma Slides .deck, FigJam .jam and Figma Sites .site, as Figma saves them. new_file starts an empty Design file in the format of one you have.
Yes. grafta tool calls any tool from a terminal, and grafta tool --batch runs a sequence of calls on one file: this site's pictures, sessions and social card are made that way.
Auto-layout grids, component slots, boolean operations, prototyping, Dev Mode annotations and properties on variants. It edits only the variables and styles it made itself. It needs a .fig you have to start a new file, and an open file costs memory: 1.3 GB for a 57 MB file, 5.5 GB for an 86 MB one. See the roadmap.
It may break. Figma does not document this format, and grafta was built by reading real files. A file carries its own schema, which helps, but a change could stop grafta reading a new file, or Figma accepting one it wrote. Report what you find in the issues.
There are builds for macOS (Apple silicon and Intel), Linux (x86_64 and arm64) and Windows (x86_64). We have run it by hand on a Mac with Apple silicon; the tests also pass on Linux and Windows in CI. The binaries are not signed, so macOS or Windows may ask before the first run.
It is free and open source, under the MIT licence. It is not affiliated with, or endorsed by, Figma.
Pick the app you already use. You will get one download, command or configuration to copy.
macOS · Linux · Windows · MIT · not affiliated with Figma