Back to Directory/Developer Tools

io.github.felixAnhalt/figma-to-code-mcp

LLM-optimized Figma MCP server.

Developer ToolsTypeScriptv0.29.0

Figma To Code MCP

Transform Figma design data into a compact, LLM-friendly format for code generation and UI building.

Why This Project?

Figma To Code MCP specializes in extracting only the information LLMs need to build UIs while removing Figma-specific metadata that isn't relevant for code generation. The result:

  • ✅ 99.5% size reduction on real Figma files (65 MB → 128 KB)
  • ✅ CSS-aligned property names (backgroundColor, flexDirection, etc.) matching LLM training data
  • ✅ Complete UI-building data preserved (layout, styling, text, components)
  • ✅ Inline styles - no separate dictionaries to parse
  • ✅ Omits Figma internals - no bounding boxes, constraints, or prototype data
  • ✅ Variable resolution - resolves Figma variables to actual values
  • ✅ SVG support - exports vector graphics to disk
  • ✅ Pattern collapsing - deduplicates repeating UI patterns

Give Cursor and other AI-powered coding tools access to your Figma files with this Model Context Protocol server.

Available Tools

ToolDescription
get_figma_designFetches CSS-aligned, LLM-optimized design data. Supports SVG export to custom dir.
get_image_fillsRetrieves image fill URLs from a Figma file
render_node_imagesRenders Figma nodes as PNG images
read_vector_svgReads vector node data as SVG

Required Scopes

Create a Figma personal access token with these scopes:

ScopePurpose
file_content:readRead file nodes, layout, styles
library_content:readRead published components/styles
file_variables:readRead variables (Enterprise only, optional)

Note: Variable resolution requires Enterprise plan. Set resolveVariables: false if not on Enterprise.

How it works

  1. Open your IDE's chat (e.g. agent mode in Cursor).
  2. Paste a link to a Figma file, frame, or group.
  3. Ask Cursor to implement the design.
  4. Cursor fetches CSS-aligned, LLM-optimized design data and generates accurate code.

This MCP server transforms Figma API data into an LLM-friendly format:

  • CSS property names (backgroundColor, flexDirection, fontSize) instead of Figma internals
  • Inline styles directly in nodes (no separate dictionaries)
  • Flexbox primitives for layout (no absolute positioning)
  • Complete UI data (colors, typography, spacing, effects)
  • 99.5% size reduction while preserving all UI-critical information

See V2_CSS_PROPERTY_MAPPING.md for complete property mapping details.

Getting Started

Many code editors and other AI clients use a configuration file to manage MCP servers.

This server requires Node.js 18 or later.

The tmegit-figma-to-code-mcp server can be configured by adding the following to your configuration file.

MacOS / Linux

{
  "mcpServers": {
    "Figma To Code MCP": {
      "command": "npx",
      "args": ["-y", "@tmegit/figma-to-code-mcp", "--figma-api-key=YOUR-KEY", "--stdio"]
    }
  }
}

Windows

{
  "mcpServers": {
    "Figma To Code MCP": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@tmegit/figma-to-code-mcp",
        "--figma-api-key=YOUR-KEY",
        "--stdio"
      ]
    }
  }
}

Or you can set FIGMA_API_KEY and PORT in the env field.

Configuration

The server reads configuration from CLI flags and environment variables. If both are set, the CLI flag wins.

OptionCLIEnvDefault
Figma API key--figma-api-keyFIGMA_API_KEYrequired
Figma OAuth token--figma-oauth-tokenFIGMA_OAUTH_TOKENunset
Port--portFIGMA_TO_CODE_MCP_PORT or PORT3333
Host--hostFIGMA_TO_CODE_MCP_HOST127.0.0.1
Output format--jsonOUTPUT_FORMATyaml
Skip image tools--skip-image-downloadsSKIP_IMAGE_DOWNLOADS=truefalse
SVG output dir--svg-output-dirFIGMA_SVG_OUTPUT_DIRtemp dir
Prefetch library variables--library-file-keysFIGMA_LIBRARY_VARIABLE_PREFETCH_FILE_KEYSunset
Cache path--library-cache-pathFIGMA_MCP_CACHE_PATHtemp cache file
Cache TTLn/aFIGMA_MCP_CACHE_TTL_MS7 days
Force cache refreshn/aFIGMA_MCP_REFRESH_CACHEoff

Notes:

  • --library-file-keys and FIGMA_LIBRARY_VARIABLE_PREFETCH_FILE_KEYS are comma-separated Figma library file keys.
  • FIGMA_MCP_CACHE_PATH may point to either a file or a directory. If it is a directory, the cache file is stored as figma-mcp-library-cache.json inside it.
  • The library cache is used only when library file keys are configured.
  • FIGMA_MCP_REFRESH_CACHE forces a re-fetch on startup even if a cache file exists.

Example .env:

FIGMA_API_KEY=your_figma_pat
# prefetch variables (tokens etc) from specific library files on startup to avoid T2 calls during design fetch
FIGMA_LIBRARY_VARIABLE_PREFETCH_FILE_KEYS=abc123,def456
FIGMA_MCP_CACHE_PATH=./cache
FIGMA_MCP_CACHE_TTL_MS=604800000
# Uncomment to force cache refresh on next startup
# FIGMA_MCP_REFRESH_CACHE=1

API Calls & Rate Limits

One execution of get_figma_design makes the following API calls:

CallEndpointTierDescription
1GET /v1/files/{fileKey}/nodesT1Fetch requested nodes (geometry=paths)
2GET /v1/files/{fileKey}/stylesT3Fetch all styles
3GET /v1/files/{fileKey}/variables/localT2Fetch local variables (if resolveVariables=true)
4GET /v1/components/{key}T3Resolve component key → library file (up to 3 tries)
5GET /v1/files/{libFileKey}/componentsT3Fetch all components from library
6+GET /v1/files/{libFileKey}/nodesT1Fetch component definitions from each library

Amount of T1 calls: 1 + N (N=number of unique library files) Amount of T2 calls: 1 (if resolveVariables=true) Amount of T3 calls: 2 + N (styles + component key resolution + N library components)

For Professional plan with Dev/Full seat: 10 req/min (Tier 1), 25 req/min (Tier 2), 50 req/min (Tier 3).

Star History

Acknowledgment

This project was initially inspired by the ideas explored in the original Figma Context MCP by GLips: https://github.com/glips/figma-context-mcp

While the original project provides a Model Context Protocol (MCP) server that simplifies Figma data for use with AI coding agents, this implementation has been substantially redesigned with a different data model, API, and processing approach, and should be considered an independent system.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @tmegit/figma-to-code-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-felixanhalt-figma-to-code-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@tmegit/figma-to-code-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@tmegit/figma-to-code-mcpnpm

Compatible MCP Clients

io.github.felixAnhalt/figma-to-code-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More