Skip to main content

MCP Server for Figma API - Design tokens, gradients, effects, interactions, accessibility checks, Code Connect, and code generation for React, Vue, SwiftUI, Kotlin

Project description

๐ŸŽจ Pixelbyte Figma MCP Server

Python 3.10+ License: MIT MCP

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.

โœจ Features

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

๐Ÿ“ฆ Installation

From GitHub (Recommended)

pip install git+https://github.com/Rylaa/pixelbyte-figma-mcp.git

From PyPI

pip install pixelbyte-figma-mcp

From Source

git clone https://github.com/Rylaa/pixelbyte-figma-mcp.git
cd pixelbyte-figma-mcp
pip install -e .

โš™๏ธ Setup

1. Get Figma Access Token

  1. Go to Figma Account Settings
  2. Scroll to Personal Access Tokens
  3. Click Generate new token
  4. Copy the token (you won't see it again!)

2. Configure Environment

Option A: Environment Variable

export FIGMA_ACCESS_TOKEN="figd_xxxxxxxxxxxxxxxxxxxxxx"

Option B: .env File

# .env
FIGMA_ACCESS_TOKEN=figd_xxxxxxxxxxxxxxxxxxxxxx

3. Add to Claude Code

Add to your Claude Code settings (~/.claude/settings.json):

{
  "mcpServers": {
    "pixelbyte-figma-mcp": {
      "command": "pixelbyte-figma-mcp",
      "env": {
        "FIGMA_ACCESS_TOKEN": "figd_xxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

4. Verify Installation

# Check if installed correctly
pixelbyte-figma-mcp --help

๐Ÿ› ๏ธ Available Tools

File & Node Tools

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

Design Token Tools

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

Code Generation Tools

Tool Description Parameters
figma_generate_code Generate production-ready code file_key, node_id, framework, component_name

Code Connect Tools

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

Asset Management Tools

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

๐Ÿ’ป Code Generation

Generate production-ready code for 10 frameworks with comprehensive style support.

Supported Styles

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 โœ… โœ… โœ… โœ…

Supported Frameworks

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

Example Usage

# 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"
)

Generated Code Example

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;
}

๐ŸŽจ Design Token Extraction

Extract design tokens in a structured format with ready-to-use CSS, SCSS, and Tailwind code.

All-in-One Token Extraction

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}"
  }
}

Rich Color Information

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

Ready-to-Use Generated Code

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'
      }
    }
  }
}

Published Styles

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": [...]
}

๐Ÿ”— Code Connect

Map Figma components to your actual code implementations for better AI-assisted code generation.

Why Code Connect?

  • ๐ŸŽฏ Accurate code generation - AI knows your component paths and props
  • ๐Ÿ”„ Consistent mappings - Link design to code once, use everywhere
  • ๐Ÿ“š Example snippets - Provide usage examples for better context

Add a Mapping

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 Mappings

# 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"
)

Remove a Mapping

figma_remove_code_connect_map(
    file_key="qyFsYyLyBsutXGGzZ9PLCp",
    node_id="1707:6176"
)

Storage Configuration

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

๐Ÿ“ธ Screenshot Export

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.


๐Ÿ”‘ Getting File Key and Node ID

File Key

From your Figma URL:

https://www.figma.com/design/qyFsYyLyBsutXGGzZ9PLCp/My-Design
                              ^^^^^^^^^^^^^^^^^^^^^^
                              This is the file_key

Node ID

  1. Select a layer in Figma
  2. Right-click โ†’ Copy link
  3. The URL contains node-id=1707-6176
  4. Use 1707:6176 or 1707-6176 (both work)

๐Ÿ“ Changelog

v2.4.0

  • feat: smart file structure filtering with include_empty_frames, min_children_count, mark_downloadable_assets options
  • feat: asset detection indicator (hasAsset) in file structure tree
  • fix: prevent KeyError in figma_get_images by disabling icon collection
  • fix: add microseconds to timestamps to prevent filename collisions
  • fix: improve exception handling specificity in download functions

v2.3.6

  • feat: download assets locally for figma_export_assets and figma_get_images

v2.3.5

  • feat: save screenshots locally for Claude Code compatibility

v2.3.4

  • feat: smart asset detection for figma_list_assets

๐ŸŒ Environment Variables

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

๐Ÿ“‹ Requirements

  • Python 3.10+
  • Figma account with API access
  • Personal Access Token

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

MIT License - see LICENSE for details.


๐Ÿ‘ค Author

Yusuf Demirkoparan - @PixelByte


๐Ÿ”— Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pixelbyte_figma_mcp-3.2.5.tar.gz (160.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pixelbyte_figma_mcp-3.2.5-py3-none-any.whl (182.7 kB view details)

Uploaded Python 3

File details

Details for the file pixelbyte_figma_mcp-3.2.5.tar.gz.

File metadata

  • Download URL: pixelbyte_figma_mcp-3.2.5.tar.gz
  • Upload date:
  • Size: 160.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pixelbyte_figma_mcp-3.2.5.tar.gz
Algorithm Hash digest
SHA256 d56a7e3efc83ef331ae25ef744cb265df88c4fdb06e105d2a1d964b23eb11d36
MD5 1011da7125dfd90a3f6a2b1546570bc4
BLAKE2b-256 337e9560f14c1c57353c552b3b946cd810fcd984d74bd5d9331f19d754da6739

See more details on using hashes here.

File details

Details for the file pixelbyte_figma_mcp-3.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for pixelbyte_figma_mcp-3.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 caf009f9a0a96298321b7c967e2ffb365fc61611cc7d3d7886e5e08f90e65b03
MD5 2373acb5183775379c5273f8b14f73f9
BLAKE2b-256 9824c7a3bb56db2410a3d3ba0a6738cc31e371ef5df9d47f8244101e58dcd632

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page