Skip to main content

MCP Server for Figma API - Design tokens, gradients, effects, 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

๐Ÿ“ฆ 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 file_key, node_id, include_* flags
figma_get_colors Extract fill, stroke, shadow colors file_key, node_id, include_* flags
figma_get_typography Extract font styles file_key, node_id
figma_get_spacing Extract padding and gap values file_key, node_id
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

๐Ÿ’ป 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 for your design system.

Colors (with Gradient Support)

figma_get_colors(
    file_key="qyFsYyLyBsutXGGzZ9PLCp",
    node_id="1707:6176",
    include_fills=True,
    include_strokes=True,
    include_shadows=True
)

Output:

{
  "fills": [
    {
      "name": "Button Background",
      "type": "fill",
      "fillType": "GRADIENT_LINEAR",
      "gradient": {
        "type": "LINEAR",
        "angle": 90,
        "stops": [
          {"position": 0, "color": "#3B82F6", "opacity": 1},
          {"position": 1, "color": "#8B5CF6", "opacity": 1}
        ]
      }
    },
    {
      "name": "Card Background",
      "type": "fill",
      "fillType": "SOLID",
      "color": "#FFFFFF",
      "opacity": 1
    }
  ],
  "strokes": [...],
  "shadows": [...]
}

Typography (Enhanced)

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

Output:

{
  "typography": [
    {
      "fontFamily": "Inter",
      "fontSize": 16,
      "fontWeight": 500,
      "lineHeight": 24,
      "letterSpacing": 0,
      "textCase": "ORIGINAL",
      "textDecoration": "NONE",
      "textAlign": "CENTER",
      "paragraphSpacing": 0
    }
  ],
  "summary": {
    "fontFamilies": ["Inter", "Roboto"],
    "fontSizes": [12, 14, 16, 18, 24, 32],
    "fontWeights": [400, 500, 600, 700]
  }
}

Spacing (with Advanced Layout)

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

Output:

{
  "spacing": [
    {
      "name": "Card",
      "padding": {"top": 24, "right": 24, "bottom": 24, "left": 24},
      "gap": 16,
      "layoutMode": "VERTICAL",
      "primaryAxisAlign": "CENTER",
      "counterAxisAlign": "CENTER",
      "layoutWrap": "NO_WRAP"
    }
  ],
  "summary": {
    "uniquePaddingValues": [8, 12, 16, 24, 32],
    "uniqueGapValues": [8, 12, 16, 24]
  }
}

Effects (Shadows & Blurs)

figma_get_design_tokens(
    file_key="qyFsYyLyBsutXGGzZ9PLCp",
    node_id="1707:6176",
    include_effects=True
)

Output:

{
  "shadows": [
    {
      "name": "Card Shadow",
      "type": "DROP_SHADOW",
      "color": "rgba(0, 0, 0, 0.1)",
      "offset": {"x": 0, "y": 4},
      "blur": 12,
      "spread": 0
    }
  ],
  "blurs": [
    {
      "name": "Glass Effect",
      "type": "BACKGROUND_BLUR",
      "radius": 20
    }
  ]
}

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.

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:

{
  "images": {
    "1707:6176": "https://figma-alpha-api.s3.us-west-2.amazonaws.com/images/...",
    "1707:6200": "https://figma-alpha-api.s3.us-west-2.amazonaws.com/images/..."
  }
}

๐Ÿ”‘ 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)

๐ŸŒ 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

๐Ÿ†• What's New in v1.2.0

Enhanced Design Extraction

  • Gradient Support: Linear, radial, angular, and diamond gradients
  • Individual Corner Radii: Per-corner border-radius support
  • Transform Properties: Rotation and scale extraction
  • Blend Modes: Full blend mode support (multiply, screen, overlay, etc.)
  • Advanced Effects: Layer blur and background blur support
  • Multiple Shadows: Support for multiple drop and inner shadows

New Tool

  • figma_get_styles: Fetch published styles (fill, text, effect, grid) from Figma files

Improved Code Generation

  • All 10 frameworks now support gradients, transforms, and advanced effects
  • Better alignment and layout handling
  • SwiftUI custom corner shape generation
  • Kotlin Compose brush definitions for gradients

๐Ÿค 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-1.2.0.tar.gz (80.9 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-1.2.0-py3-none-any.whl (94.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pixelbyte_figma_mcp-1.2.0.tar.gz
  • Upload date:
  • Size: 80.9 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-1.2.0.tar.gz
Algorithm Hash digest
SHA256 38a5d9b3f6ae920d242f39eb0f4a16bf62cc88a22b9443129eb536c05f69482f
MD5 c39fbc91654993e2560895035e7b1b45
BLAKE2b-256 b45f1c669679e2361f967522221f571f1a28a0dbb67233b986b4a54021973ca5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelbyte_figma_mcp-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94b160d7c076a4f0a68ca029b3736650b845d0da03e34d833d60b1d3e82f1030
MD5 9b217ca2aca8b519ca39361a513fd53f
BLAKE2b-256 baa2ed90e427acd21dbad8bceacf8a7d53a80bbbce4e80b42879b3479d438a66

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