Pixel Figma Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Pixel Figma Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A powerful Model Context Protocol (MCP) server for seamless Figma API integration. Extract design tokens, generate production-ready code, capture screenshots, and manage Code Connect mappings directly from your Figma designs.
| Feature | Description |
|---|---|
| 🛠️ 12 MCP Tools | Complete Figma integration toolkit |
| 💻 10 Code Frameworks | React, Vue, Tailwind, CSS, SCSS, SwiftUI, Kotlin |
| 🎨 Design Tokens | Extract colors, typography, spacing, effects |
| 🌈 Gradient Support | Linear, radial, angular, diamond gradients |
| 🔄 Transform & Effects | Rotation, blend modes, shadows, blurs |
| 🌳 Nested Children | Full component tree with all styles preserved |
| 📸 Screenshot Export | PNG, SVG, JPG, PDF formats with scale control |
| 🔗 Code Connect | Map Figma components to code implementations |
| 📦 Asset Management | List, export, and download design assets |
pip install git+https://github.com/Rylaa/pixelbyte-figma-mcp.gitpip install pixelbyte-figma-mcpgit clone https://github.com/Rylaa/pixelbyte-figma-mcp.git
cd pixelbyte-figma-mcp
pip install -e .Option A: Environment Variable
export FIGMA_ACCESS_TOKEN="figd_xxxxxxxxxxxxxxxxxxxxxx"Option B: .env File
# .env
FIGMA_ACCESS_TOKEN=figd_xxxxxxxxxxxxxxxxxxxxxxAdd to your Claude Code settings (~/.claude/settings.json):
{
"mcpServers": {
"pixelbyte-figma-mcp": {
"command": "pixelbyte-figma-mcp",
"env": {
"FIGMA_ACCESS_TOKEN": "figd_xxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}# Check if installed correctly
pixelbyte-figma-mcp --help| Tool | Description | Parameters |
|---|---|---|
figma_get_file_structure | Get file hierarchy and node tree | file_key, depth (1-10), response_format |
figma_get_node_details | Get detailed node properties | file_key, node_id, response_format |
figma_get_screenshot | Export nodes as images | file_key, node_ids[], format, scale |
| Tool | Description | Parameters |
|---|---|---|
figma_get_design_tokens | Extract all design tokens with ready-to-use code | file_key, node_id, include_* flags, include_generated_code |
figma_get_styles | Get published styles from file | file_key, include_* flags |
| Tool | Description | Parameters |
|---|---|---|
figma_generate_code | Generate production-ready code | file_key, node_id, framework, component_name |
| Tool | Description | Parameters |
|---|---|---|
figma_get_code_connect_map | Get stored Code Connect mappings | file_key, node_id (optional) |
figma_add_code_connect_map | Add/update a mapping | file_key, node_id, component_path, component_name, props_mapping, variants, example |
figma_remove_code_connect_map | Remove a mapping | file_key, node_id |
| Tool | Description | Parameters |
|---|---|---|
figma_list_assets | List all exportable assets (images, vectors, exports) | file_key, node_id (optional), include_images, include_vectors, include_exports |
figma_get_images | Get actual download URLs for image fills | file_key, node_id (optional) |
figma_export_assets | Batch export nodes with SVG generation | file_key, node_ids[], format, scale, include_svg_for_vectors |
Generate production-ready code for 10 frameworks with comprehensive style support.
| Style Feature | CSS/SCSS | React/Vue | SwiftUI | Kotlin |
|---|---|---|---|---|
| Solid Colors | ✅ | ✅ | ✅ | ✅ |
| Linear Gradients | ✅ | ✅ | ✅ | ✅ |
| Radial Gradients | ✅ | ✅ | ✅ | ✅ |
| Individual Corner Radii | ✅ | ✅ | ✅ | ✅ |
| Rotation/Transform | ✅ | ✅ | ✅ | ✅ |
| Blend Modes | ✅ | ✅ | ✅ | ✅ |
| Opacity | ✅ | ✅ | ✅ | ✅ |
| Drop Shadows | ✅ | ✅ | ✅ | ✅ |
| Inner Shadows | ✅ | ✅ | - | - |
| Layer Blur | ✅ | ✅ | ✅ | ✅ |
| Background Blur | ✅ | ✅ | - | - |
| Auto Layout | ✅ | ✅ | ✅ | ✅ |
| Framework | Output | Best For |
|---|---|---|
react | React + inline styles | Quick prototypes |
react_tailwind | React + Tailwind CSS | Production React apps |
vue | Vue 3 + scoped CSS | Vue.js projects |
vue_tailwind | Vue 3 + Tailwind CSS | Vue + Tailwind projects |
html_css | HTML + CSS | Static sites |
tailwind_only | Tailwind classes only | Copy-paste styling |
css | Pure CSS | Framework-agnostic |
scss | SCSS with variables | Complex styling |
swiftui | iOS SwiftUI Views | iOS development |
kotlin | Android Jetpack Compose | Android development |
# Generate React + Tailwind component
figma_generate_code(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176",
framework="react_tailwind",
component_name="HeroSection"
)
# Generate SwiftUI View
figma_generate_code(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176",
framework="swiftui"
)
# Generate Android Compose
figma_generate_code(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176",
framework="kotlin"
)Input: A Figma button with gradient, shadow, and rounded corners
Output (CSS):
.hero-button {
width: 200px;
height: 48px;
background: linear-gradient(90deg, #3B82F6 0%, #8B5CF6 100%);
border-radius: 8px 8px 16px 16px;
box-shadow: 0px 4px 12px 0px rgba(59, 130, 246, 0.40);
transform: rotate(0deg);
opacity: 1;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
gap: 8px;
padding: 12px 24px;
}Extract design tokens in a structured format with ready-to-use CSS, SCSS, and Tailwind code.
figma_get_design_tokens(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176",
include_colors=True,
include_typography=True,
include_spacing=True,
include_effects=True,
include_generated_code=True # NEW in v2.0!
)Output:
{
"$schema": "https://design-tokens.github.io/community-group/format/",
"figmaFile": "qyFsYyLyBsutXGGzZ9PLCp",
"tokens": {
"colors": [
{
"name": "Button Background",
"value": "#3B82F6",
"hex": "#3B82F6",
"rgb": "59, 130, 246",
"hsl": "217, 91%, 60%",
"contrast": { "white": 3.02, "black": 6.96 }
}
],
"typography": [...],
"spacing": [...],
"shadows": [...],
"blurs": [...]
},
"generated": {
"css_variables": ":root {\n --color-button-background: #3B82F6;\n ...\n}",
"scss_variables": "$color-button-background: #3B82F6;\n...",
"tailwind_config": "module.exports = {\n theme: {\n extend: {\n colors: {\n 'button-background': '#3B82F6'\n }\n }\n }\n}"
}
}Every extracted color now includes:
| Property | Description | Example |
|---|---|---|
hex | Hexadecimal color | #3B82F6 |
rgb | RGB values | 59, 130, 246 |
hsl | HSL values | 217, 91%, 60% |
contrast.white | WCAG contrast ratio vs white | 3.02 |
contrast.black | WCAG contrast ratio vs black | 6.96 |
The generated section provides copy-paste ready code:
CSS Variables:
:root {
--color-button-background: #3B82F6;
--color-card-bg: #FFFFFF;
--font-inter-16: 16px/24px 'Inter';
--spacing-card: 24px 24px 24px 24px;
--shadow-card: 0px 4px 12px rgba(0, 0, 0, 0.1);
}SCSS Variables:
$color-button-background: #3B82F6;
$color-card-bg: #FFFFFF;
$font-inter-size: 16px;
$font-inter-weight: 500;Tailwind Config:
module.exports = {
theme: {
extend: {
colors: {
'button-background': '#3B82F6',
'card-bg': '#FFFFFF'
}
}
}
}figma_get_styles(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
include_fill_styles=True,
include_text_styles=True,
include_effect_styles=True
)Output:
{
"fill_styles": [
{
"key": "abc123",
"name": "Primary/500",
"description": "Primary brand color",
"fills": [{"type": "SOLID", "color": "#3B82F6"}]
}
],
"text_styles": [
{
"key": "def456",
"name": "Heading/H1",
"fontFamily": "Inter",
"fontSize": 32,
"fontWeight": 700
}
],
"effect_styles": [...]
}Map Figma components to your actual code implementations for better AI-assisted code generation.
figma_add_code_connect_map(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176",
component_path="src/components/ui/Button.tsx",
component_name="Button",
props_mapping={
"Variant": "variant", # Figma prop -> Code prop
"Size": "size",
"Disabled": "disabled"
},
variants={
"primary": {"variant": "primary", "className": "bg-blue-500"},
"secondary": {"variant": "secondary", "className": "bg-gray-500"},
"outline": {"variant": "outline", "className": "border-2"}
},
example="<Button variant='primary' size='md'>Click me</Button>"
)# Get all mappings for a file
figma_get_code_connect_map(
file_key="qyFsYyLyBsutXGGzZ9PLCp"
)
# Get specific node mapping
figma_get_code_connect_map(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176"
)figma_remove_code_connect_map(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_id="1707:6176"
)| Setting | Default | Description |
|---|---|---|
| Storage Path | ~/.config/pixelbyte-figma-mcp/code_connect.json | Local JSON storage |
| Custom Path | FIGMA_CODE_CONNECT_PATH env variable | Override default path |
Export Figma nodes as images in multiple formats. Screenshots are automatically downloaded and saved locally for easy access.
figma_get_screenshot(
file_key="qyFsYyLyBsutXGGzZ9PLCp",
node_ids=["1707:6176", "1707:6200"],
format="png", # png, svg, jpg, pdf
scale=2.0 # 0.01 to 4.0
)Output:
# Generated Screenshots
**Format:** PNG
**Scale:** 2x
## Local Files
- **1707:6176**: `/tmp/figma_screenshots/qyFsYyLyBsutXGGzZ9PLCp_1707-6176_20260113_143022.png`
- **1707:6200**: `/tmp/figma_screenshots/qyFsYyLyBsutXGGzZ9PLCp_1707-6200_20260113_143022.png`
> Screenshots saved to: `/tmp/figma_screenshots`Screenshots are saved to a temporary directory and can be directly read by Claude Code's Read tool for visual analysis.
From your Figma URL:
https://www.figma.com/design/qyFsYyLyBsutXGGzZ9PLCp/My-Design
^^^^^^^^^^^^^^^^^^^^^^
This is the file_keynode-id=1707-61761707:6176 or 1707-6176 (both work)include_empty_frames, min_children_count, mark_downloadable_assets optionshasAsset) in file structure tree| Variable | Required | Description |
|---|---|---|
FIGMA_ACCESS_TOKEN | ✅ Yes | Figma Personal Access Token |
FIGMA_TOKEN | ⚡ Alternative | Alternative token variable name |
FIGMA_CODE_CONNECT_PATH | ❌ No | Custom Code Connect storage path |
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)MIT License - see LICENSE for details.
Yusuf Demirkoparan - @PixelByte
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.