Figma's Dev Mode MCP Server: what designers need to fix in the file for the code agent to read it right

- Reading
- 6 min
- Tables
- 1
When an AI agent reads a Figma file through the Dev Mode MCP Server, it depends on well-defined layer names, components, and variables, not on how pretty the screen looks, to generate code that makes sense.
What changes when the agent "enters" the file
The Dev Mode MCP Server is the door Figma opens for AI agents to read a design file and write code, or, in the opposite direction, draw back onto the canvas. According to the official Dev Mode MCP Server guide, the feature is available for Starter, Professional, Education, Organization, Government, and Enterprise accounts, as long as the AI client is listed in Figma's MCP catalog.
The idea seems simple: copy the link to a frame, paste it into the MCP client (Claude Code, Cursor, VS Code with the extension, among others) and ask the agent to implement it. In practice, what the agent receives depends directly on how the file was put together. A frame named "Frame 47," with layers called "Rectangle 12" and "Group 8," hands the agent exactly that: geometry with no meaning. That's where the work that falls to the designer, not the agent, comes in.
How context extraction works behind the link
The documentation describes context extraction as link-based: the designer right-clicks the frame or layer, chooses Copy link to selection, and pastes the address into the MCP client. The client doesn't open the link the way a browser would; it extracts the node ID that the MCP server uses to identify which object to look up information about.
From that ID, the server returns three kinds of material to the agent, according to the guide itself: variables, components, and layout data. That triad is what turns into a code prompt. When these three elements are well built in the file, the agent has what it needs to generate something close to the real component. When they aren't, it fills the gaps with guesswork, and AI guesswork about design turns into a generic component, with a name and structure that don't match the rest of the code.
Layer naming isn't aesthetics, it's input data
The Dev Mode MCP Server documentation doesn't list a mandatory naming convention, but the very mechanism it describes explains why naming matters: the agent doesn't see the screen the way a human does. It reads the layer tree and the metadata it carries, so the layer name is information, not decoration.
A button named Button/Primary/Default hands the agent category, variant, and state in a single phrase. The same button named "Frame 231" hands over none of that: the agent has to infer it from geometry, color, and position, and that's where errors creep in through inference. This applies both to components and to loose layers inside a complex frame. The practical rule that follows from how MCP works:
- Name by function, not by appearance (
Button/Primaryinstead of "Blue Rectangle") - Use consistent hierarchy in variant names (
Status=Error,Size=Small) instead of free text - Avoid names inherited from Figma's defaults ("Rectangle 1", "Frame 99", "Group") on any layer that's going to turn into code
- Keep groups and frames single-purpose: a layer that mixes a header, an icon, and loose text with no name of its own forces the agent to guess where each piece ends
Components, variables, and auto layout are the real ammunition
Context extraction, according to the documentation, is "especially useful for design systems and component-based workflows." That's not a minor detail: it's the exact slice of users the feature was designed to serve. Files with well-published component instances and named variables (color, spacing, radius) give the agent something equivalent to an already mapped design token, ready to become a CSS variable or component prop.
Files with no design system, built freehand with loose shapes, force the agent to visually reconstruct something that never existed as structure. Auto layout falls in the same bucket: the documentation notes that agents with write permission can create and update frames, components, variables, and auto layout using the design system as the source of truth.
using your design system as the source of truth
Dev Mode MCP Server Guide, Figma Help Center
A frame without auto layout carries no information about how elements behave when content changes size. The agent might even generate something visually similar, but without the responsiveness logic the design actually had. It's the difference between code that looks like the screen and code that behaves like the screen.
Code Connect: the shortcut that avoids reinventing the component
The documentation cites Code Connect as the piece that keeps generated code "consistent with your codebase," by reusing the project's actual components. Without that link, every time the agent finds a button in Figma, it decides on its own whether to generate plain HTML, a new component, or try to guess the name of an existing component in the repository.
With Code Connect set up, the answer is already mapped: the Figma button points to the team's design system Button, with the correct props. This reduces the chance of the agent inventing a parallel component to one that already exists, duplicating logic. The practical effect is fewer pull request reviews spent fixing a component reinvented from scratch.
Figma Specs: context that survives the first prompt
Another feature mentioned in the guide, still in open beta, is the figma-spec skill, which lets the agent read, create, and update team specs before starting work. The idea is that requirements and decisions stay recorded in the file itself, instead of getting lost in the conversation with the agent. Writing to a spec requires the remote server and edit access to the file.
This changes the handoff flow: instead of the designer explaining the context again at every AI session, the spec becomes persistent memory that the agent consults and updates. For teams that already document design decisions, it's a direct win. For those who never kept up that habit, the feature doesn't fix the lack of documentation discipline on its own.
Remote or desktop: the choice also affects what the agent sees
The documentation separates two ways to connect the server, and the choice between them isn't just operational.
| Aspect | Remote server | Desktop server |
|---|---|---|
| Installation | Directly on the endpoint hosted by Figma, no desktop app needed | Runs locally via the Figma desktop app |
| Features | Broader feature set, recommended for most users | Geared to specific organization/enterprise needs |
| Canvas writing | Supported (requires a Full seat) | Not the focus of the feature |
| Figma for Government | Not supported | Only supported mode |
Writing to the canvas is free during the beta period and will become a pay-per-use feature, according to the guide. This means teams currently using bidirectional writing, with the agent creating frames and variables directly in Figma, should keep an eye on when that charge kicks in, because it changes the cost calculation of using the MCP server at scale.
When it's not worth turning MCP on for the file
Not every file justifies the effort of tidying it up. A throwaway prototype, made to validate an idea in a meeting with no intention of becoming a product, doesn't need rigorous naming or variables: the cost of organizing everything outweighs the gain of having an agent read it.
The same goes for legacy files that nobody intends to keep as a living design system. Forcing naming and componentization onto a file that will be replaced in weeks is work that doesn't pay off. The MCP server pays off exactly where the design system already is, or is becoming, the source of truth for code, which is precisely the slice of users Figma's own documentation assumes when it talks about component-based workflows.
Translated from the Brazilian Portuguese original · Read the original
Figma Make gets a backend with Payload and brings design closer to real shipping
Figma's release notes show Payload running inside Make, code layers moving off paper, and the Figma agent exiting beta: the editor that only prototyped now ships product with a database, authentication, and an admin panel.






