Skip to content

Desktop Server Setup

When to Use

When you want selection-based workflow: select frames in Figma, then prompt your agent to implement your current selection — no link copying needed. Requires Dev or Full seat on a paid Figma plan.

Steps

  1. Enable the desktop MCP server in Figma
  2. Open Figma desktop app (update to latest version)
  3. Open or create a Design file
  4. Toggle to Dev Mode (Shift D)
  5. In the inspect panel's MCP server section, click Enable desktop MCP server
  6. Confirmation message appears when active
  7. The server runs at http://127.0.0.1:3845/mcp

  8. Configure image handling (optional) In the inspect panel MCP server section, choose:

  9. Local server — serves images via localhost links
  10. Download assets — extracts assets directly to your project directory (recommended for code generation)
  11. Placeholders — deprecated, avoid

  12. Connect your editor

Claude Code (terminal):

claude mcp add --transport http figma-desktop http://127.0.0.1:3845/mcp

VS Code: ⌘ Shift PMCP: Add ServerHTTP → enter http://127.0.0.1:3845/mcp → set ID as figma-desktop. Requires GitHub Copilot enabled and Agent mode active (⌥⌘B or ⌃⌘I).

Cursor: Settings → MCP tab → Add new global MCP server:

{
  "figma-desktop": {
    "url": "http://127.0.0.1:3845/mcp",
    "type": "http"
  }
}

  1. Use selection-based workflow

In Figma, select one or more frames or layers. Then in your editor:

"Implement my current Figma selection using React and Tailwind"
"Generate the selected component using files in src/components/"

Decision Points

At this step... If... Then...
Enabling server No Dev Mode toggle visible Confirm you have Dev or Full seat on a paid plan
Image assets needed in project Using downloaded images in code Choose Download assets in image handling settings
Running both remote and desktop Need both link and selection workflows Add both servers with different IDs (figma and figma-desktop)

Common Mistakes

  • Running the desktop server without keeping the Figma desktop app open — the server stops when the app closes
  • Using the old SSE endpoint path (/sse) — current endpoint is /mcp
  • Selecting deeply nested layers instead of top-level frames — select the frame, not individual elements inside it

See Also