figma
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.
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.
| name | figma |
|---|---|
| description | 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. |
| command | npx |
| 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:
- Go to Figma → Settings → Account → Personal access tokens
- Create a new token with read access
- 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 informationnodes- Simplified node tree with layout, styles, text contentglobalVars- 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:abc123xyznodeId:1234-5678(or1234: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
imageRefin the data for proper downloading - SVG vs PNG: Use
.svgfor icons/vectors,.pngfor 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.