figma

tuantiensiu's avatarfrom tuantiensiu

Access Figma design data via Framelink MCP. Fetch layout, styles, components from Figma files/frames. Use when implementing UI from Figma designs, extracting design tokens, or downloading assets.

0stars🔀0forks📁View on GitHub🕐Updated Jan 10, 2026

When & Why to Use This Skill

This Claude skill facilitates a high-efficiency design-to-code workflow by connecting directly to Figma via the Framelink MCP. It empowers developers and designers to programmatically retrieve layout specifications, styles, and components, significantly reducing manual data entry and ensuring design fidelity during UI implementation. By bridging the gap between design files and development environments, it streamlines the extraction of design tokens and automated asset management.

Use Cases

  • UI Implementation: Fetching precise layout, spacing, and CSS properties from Figma frames to build high-fidelity frontend components quickly.
  • Design Token Extraction: Automatically retrieving color palettes, typography, and effect styles to populate design system variables and theme files in code.
  • Automated Asset Management: Batch downloading SVG and PNG assets from Figma files directly to local project directories, eliminating manual export steps.
  • Design-to-Code Auditing: Comparing live design data with implemented code to identify and fix visual discrepancies and ensure pixel-perfect results.
namefigma
descriptionAccess Figma design data via Framelink MCP. Fetch layout, styles, components from Figma files/frames. Use when implementing UI from Figma designs, extracting design tokens, or downloading assets.
commandnpx
args["-y", "figma-developer-mcp", "--stdio"]
FIGMA_API_KEY"${FIGMA_API_KEY}"

Figma Design Data (MCP)

Access Figma design data via the Framelink MCP server. When this skill is loaded, the figma MCP server auto-starts and exposes tools to fetch design data and download images.

Prerequisites

Set your Figma API key as an environment variable:

export FIGMA_API_KEY="your-figma-personal-access-token"

To create a Figma Personal Access Token:

  1. Go to Figma → Settings → Account → Personal access tokens
  2. Create a new token with read access
  3. See: https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens

Quick Start

After loading this skill, use skill_mcp to invoke Figma tools:

skill_mcp(skill_name="figma", tool_name="get_figma_data", arguments='{"fileKey": "abc123", "nodeId": "1234:5678"}')

Available Tools

get_figma_data

Fetch comprehensive Figma file data including layout, content, visuals, and component information.

Parameter Type Required Description
fileKey string Yes The Figma file key (from URL: figma.com/file/<fileKey>/... or figma.com/design/<fileKey>/...)
nodeId string No Specific node ID (from URL param node-id=<nodeId>). Format: 1234:5678 or 1234-5678
depth number No Levels deep to traverse. Only use if explicitly requested by user.

Returns: YAML-formatted design data with:

  • metadata - File/node information
  • nodes - Simplified node tree with layout, styles, text content
  • globalVars - Shared styles and variables

download_figma_images

Download SVG and PNG images/icons from a Figma file.

Parameter Type Required Description
fileKey string Yes The Figma file key
nodes array Yes Array of node objects to download (see below)
localPath string Yes Absolute path to save images
pngScale number No Export scale for PNGs (default: 2)

Node object structure:

{
  "nodeId": "1234:5678",
  "fileName": "icon-name.svg",
  "imageRef": "optional-for-image-fills"
}

Workflow

1. Extract File Key and Node ID from Figma URL

Figma URLs follow these patterns:

  • https://www.figma.com/file/<fileKey>/<fileName>?node-id=<nodeId>
  • https://www.figma.com/design/<fileKey>/<fileName>?node-id=<nodeId>

Example: https://www.figma.com/design/abc123xyz/MyDesign?node-id=1234-5678

  • fileKey: abc123xyz
  • nodeId: 1234-5678 (or 1234:5678 - both formats work)

2. Fetch Design Data

# Fetch specific frame/component
skill_mcp(skill_name="figma", tool_name="get_figma_data", arguments='{"fileKey": "abc123xyz", "nodeId": "1234:5678"}')

# Fetch entire file (use sparingly - can be large)
skill_mcp(skill_name="figma", tool_name="get_figma_data", arguments='{"fileKey": "abc123xyz"}')

3. Download Assets (Optional)

skill_mcp(skill_name="figma", tool_name="download_figma_images", arguments='{
  "fileKey": "abc123xyz",
  "nodes": [
    {"nodeId": "1234:5678", "fileName": "hero-image.png"},
    {"nodeId": "5678:9012", "fileName": "icon-arrow.svg"}
  ],
  "localPath": "/absolute/path/to/assets"
}')

Examples

Implement a Component from Figma

# User provides: https://www.figma.com/design/abc123/Dashboard?node-id=100-200

# 1. Fetch the design data
skill_mcp(skill_name="figma", tool_name="get_figma_data", arguments='{"fileKey": "abc123", "nodeId": "100-200"}')

# 2. Review the returned YAML for:
#    - Layout structure (flex, grid, spacing)
#    - Typography (font, size, weight, line-height)
#    - Colors (fills, strokes)
#    - Dimensions and constraints

# 3. Implement the component using the extracted data

Extract Design Tokens

# Fetch a design system file
skill_mcp(skill_name="figma", tool_name="get_figma_data", arguments='{"fileKey": "designSystemKey"}')

# The globalVars section contains:
# - Color styles
# - Typography styles
# - Effect styles (shadows, blurs)

Download Icons

skill_mcp(skill_name="figma", tool_name="download_figma_images", arguments='{
  "fileKey": "iconLibraryKey",
  "nodes": [
    {"nodeId": "10:20", "fileName": "icon-home.svg"},
    {"nodeId": "10:30", "fileName": "icon-settings.svg"},
    {"nodeId": "10:40", "fileName": "icon-user.svg"}
  ],
  "localPath": "/project/src/assets/icons",
  "pngScale": 2
}')

Data Structure

The get_figma_data tool returns simplified, AI-optimized data:

metadata:
  name: "Component Name"
  lastModified: "2024-01-15T..."

nodes:
  - id: "1234:5678"
    name: "Button"
    type: "FRAME"
    layout:
      mode: "HORIZONTAL"
      padding: { top: 12, right: 24, bottom: 12, left: 24 }
      gap: 8
    size: { width: 120, height: 48 }
    fills:
      - type: "SOLID"
        color: { r: 0.2, g: 0.4, b: 1, a: 1 }
    cornerRadius: 8
    children:
      - id: "1234:5679"
        name: "Label"
        type: "TEXT"
        content: "Click me"
        textStyle:
          fontFamily: "Inter"
          fontSize: 16
          fontWeight: 600

globalVars:
  styles:
    "S:abc123": { name: "Primary", fills: [...] }

Tips

  • Always use nodeId when provided - fetching entire files is slow and context-heavy
  • Node IDs with - or : both work - the MCP handles conversion
  • Check globalVars for reusable styles before hardcoding values
  • Use depth parameter sparingly - only when explicitly needed
  • For images/icons, identify nodes with imageRef in the data for proper downloading
  • SVG vs PNG: Use .svg for icons/vectors, .png for photos/complex images

Troubleshooting

"Invalid API key": Ensure FIGMA_API_KEY environment variable is set correctly.

"File not found": Verify the fileKey is correct and you have access to the file.

"Node not found": Check the nodeId format. Try both 1234:5678 and 1234-5678.

Large response: Use nodeId to fetch specific frames instead of entire files.

figma – AI Agent Skills | Claude Skills