mcp-figma

MichelKerkmeester's avatarfrom MichelKerkmeester

Figma design file access via MCP providing 18 tools for file retrieval, image export, component/style extraction, team management, and collaborative commenting. Accessed via Code Mode for token-efficient workflows.

⭐1stars🔀1forks📁View on GitHub🕐Updated Jan 2, 2026

When & Why to Use This Skill

The Figma MCP skill provides programmatic access to Figma design files, enabling AI assistants to retrieve file structures, export assets, and extract design tokens. It serves as a powerful design-to-code bridge, allowing for automated component documentation, image rendering, and collaborative commenting directly within a token-efficient workflow. By integrating 18 specialized tools, it streamlines the transition from design to development and enhances team collaboration through automated feedback loops.

Use Cases

  • Design-to-Code Conversion: Automatically extract typography, colors, and layout properties from Figma files to generate accurate CSS, Tailwind, or React component code.
  • Automated Asset Export: Programmatically export design elements as PNG, SVG, or PDF at multiple scales (up to 4x) for direct use in web or mobile development.
  • Design System Documentation: Retrieve and document component libraries, metadata, and design tokens (fills, typography, effects) to maintain a live source of truth for design systems.
  • Automated Design Reviews: Use AI to read existing design comments or post new feedback directly to specific nodes, facilitating faster communication between stakeholders.
  • Project & Team Management: Navigate complex team structures to list projects, retrieve file version histories, and search for specific design assets across a workspace.
namemcp-figma
description"Figma design file access via MCP providing 18 tools for file retrieval, image export, component/style extraction, team management, and collaborative commenting. Accessed via Code Mode for token-efficient workflows."
allowed-tools[Read, mcp__code_mode__call_tool_chain, mcp__code_mode__search_tools, mcp__code_mode__list_tools, mcp__code_mode__tool_info]
version1.0.0

Figma MCP - Design File Access

Programmatic access to Figma design files through 18 specialized tools covering file retrieval, image export, component/style extraction, and collaboration. Accessed via Code Mode for token-efficient on-demand access.

Core Principle: Design-to-code bridge - Figma MCP enables AI assistants to read and understand design files.

Two Options Available

Option Name Type Best For
A Official Figma MCP HTTP (mcp.figma.com) Simplicity - no install, OAuth login
B Framelink (3rd-party) stdio (local) Code Mode integration, API key auth

Recommendation: Start with Option A (Official) - zero installation, OAuth login, works immediately. See Install Guide for setup details.


1. 🎯 WHEN TO USE

Activation Triggers

Use when:

  • Retrieving Figma design file structure or content
  • Exporting design elements as images (PNG, SVG, PDF)
  • Extracting components for design system documentation
  • Getting design tokens (colors, typography, effects)
  • Managing team projects and files
  • Reading or posting design review comments

Keyword Triggers:

  • Files: "figma file", "design file", "get design", "figma document"
  • Images: "export image", "export png", "export svg", "render node"
  • Components: "figma components", "design system", "component library"
  • Styles: "design tokens", "figma styles", "colors", "typography"
  • Teams: "team projects", "project files", "figma team"
  • Comments: "design comments", "review comments", "figma feedback"

Use Cases

Design File Access

  • Get complete Figma file structure
  • Retrieve specific nodes by ID
  • Access file version history
  • Navigate page and frame hierarchy

Asset Export

  • Export nodes as PNG, JPG, SVG, or PDF
  • Control scale factor (0.01-4x)
  • Get URLs for embedded images
  • Batch export multiple nodes

Design System Documentation

  • List all components in a file
  • Extract component metadata
  • Get team-wide component libraries
  • Document component sets

Design Token Extraction

  • Get color styles (fills)
  • Get typography styles (text)
  • Get effect styles (shadows, blurs)
  • Get grid styles

Collaboration

  • Read comments on designs
  • Post review feedback
  • Reply to existing comments
  • Delete comments

When NOT to Use

Do not use for:

  • Creating or editing Figma designs → Use Figma directly
  • Real-time collaboration → Use Figma's native features
  • File storage/backup → Use Figma's version history
  • Design prototyping → Use Figma's prototyping tools

2. 🧭 SMART ROUTING

Activation Detection

TASK CONTEXT
    │
    ├─► Need to get Figma file or nodes
    │   └─► Tools: get_file, get_file_nodes
    │
    ├─► Need to export images
    │   └─► Tools: get_image, get_image_fills
    │
    ├─► Need component information
    │   └─► Tools: get_file_components, get_component, get_team_components
    │
    ├─► Need style/token information
    │   └─► Tools: get_file_styles, get_style, get_team_styles
    │
    ├─► Need team/project navigation
    │   └─► Tools: get_team_projects, get_project_files
    │
    └─► Need to manage comments
        └─► Tools: get_comments, post_comment, delete_comment

Resource Router

def route_figma_resources(task):
    """
    Resource Router for mcp-figma skill
    Load references based on task context
    """

    # ──────────────────────────────────────────────────────────────────
    # QUICK START
    # Purpose: First-time usage, verification, basic commands
    # Key Insight: Fastest path to working state
    # ──────────────────────────────────────────────────────────────────
    if task.is_first_use or task.needs_verification:
        return load("references/quick_start.md")

    # ──────────────────────────────────────────────────────────────────
    # COMPLETE REFERENCE
    # Purpose: All 18 tools with descriptions and interfaces
    # Key Insight: Use for discovery or when unsure which tool
    # ──────────────────────────────────────────────────────────────────
    if task.needs_tool_discovery or task.needs_full_reference:
        return load("references/tool_reference.md")

    # Default: SKILL.md covers basic usage

# ══════════════════════════════════════════════════════════════════════
# STATIC RESOURCES (always available, not conditionally loaded)
# ══════════════════════════════════════════════════════════════════════
# assets/tool_categories.md → Priority categorization of all 18 tools

3. 🛠️ HOW IT WORKS

Code Mode Invocation

Figma MCP is accessed via Code Mode's call_tool_chain() for token efficiency.

Naming Convention:

figma.figma_{tool_name}

Process Flow:

STEP 1: Discover Tools
       ├─ Use search_tools() for capability-based discovery
       ├─ Use tool_info() for specific tool details
       └─ Output: Tool name and parameters
       ↓
STEP 2: Execute via Code Mode
       ├─ Use call_tool_chain() with TypeScript code
       ├─ Await figma.figma_{tool_name}({params})
       └─ Output: Tool results
       ↓
STEP 3: Process Results
       └─ Parse and present findings

Tool Invocation Examples

// Discover Figma tools
search_tools({ task_description: "figma design components" });

// Get tool details
tool_info({ tool_name: "figma.figma.get_file" });

// Get a Figma file
call_tool_chain({
  code: `
    const file = await figma.figma_get_file({
      fileKey: "abc123XYZ"
    });
    console.log('File:', file.name);
    return file;
  `
});

// Export as image
call_tool_chain({
  code: `
    const images = await figma.figma_get_image({
      fileKey: "abc123XYZ",
      ids: ["1:234"],
      format: "png",
      scale: 2
    });
    return images;
  `
});

// Get components
call_tool_chain({
  code: `
    const components = await figma.figma_get_file_components({
      fileKey: "abc123XYZ"
    });
    return components;
  `
});

Finding Your File Key

The file key is in your Figma URL:

https://www.figma.com/file/ABC123xyz/My-Design
                           └─────────┘
                           This is fileKey

4. 📋 RULES

✅ ALWAYS

  1. ALWAYS use Code Mode for Figma invocation

    • Call via call_tool_chain() with TypeScript
    • Saves context tokens vs native MCP
  2. ALWAYS use full tool naming convention

    • Format: figma.figma_{tool_name}
    • Example: figma.figma_get_file({ fileKey: "abc" })
  3. ALWAYS verify file key format

    • Extract from Figma URL
    • Should be alphanumeric string
  4. ALWAYS handle pagination for team queries

    • Use page_size and cursor parameters
    • Check for cursor in response for more pages
  5. ALWAYS check API key before operations

    • Use figma_check_api_key() to verify
    • Token must be valid and not expired

❌ NEVER

  1. NEVER skip the figma_ prefix in tool names

    • Wrong: await figma.get_file({})
    • Right: await figma.figma_get_file({})
  2. NEVER hardcode Figma tokens

    • Use environment variables
    • Store in .env file
  3. NEVER assume node IDs are stable

    • Node IDs can change when designs are edited
    • Re-fetch if operations fail
  4. NEVER ignore rate limits

    • Figma API has rate limits
    • Add delays for batch operations

⚠️ ESCALATE IF

  1. ESCALATE IF authentication fails repeatedly

    • Token may be expired
    • Regenerate in Figma settings
  2. ESCALATE IF file not found

    • Verify file key from URL
    • Check file permissions
  3. ESCALATE IF rate limited

    • Wait before retrying
    • Reduce request frequency

5. 🏆 SUCCESS CRITERIA

File Access Complete

File access complete when:

  • ✅ get_file returns file structure
  • ✅ File name and pages accessible
  • ✅ Node hierarchy navigable

Image Export Complete

Image export complete when:

  • ✅ get_image returns image URLs
  • ✅ URLs are accessible and valid
  • ✅ Format and scale as requested

Component Extraction Complete

Component extraction complete when:

  • ✅ get_file_components returns component list
  • ✅ Component names and keys accessible
  • ✅ Node IDs available for further queries

Style Extraction Complete

Style extraction complete when:

  • ✅ get_file_styles returns style list
  • ✅ Style types categorized (FILL, TEXT, EFFECT, GRID)
  • ✅ Style names and keys accessible

Validation Checkpoints

Checkpoint Validation
tools_discovered search_tools() returns Figma tools
auth_verified check_api_key() confirms token
file_accessible get_file() returns file data
export_working get_image() returns URLs

6. 🔌 INTEGRATION POINTS

Prerequisites

Before using this skill, ensure:

  1. mcp-code-mode skill is available - Figma is accessed through Code Mode
  2. Figma configured in .utcp_config.json - NOT in opencode.json
  3. Figma Personal Access Token - Stored in .env file
Dependency Chain:
┌─────────────────────────────────────────────────────────────────┐
│  mcp-code-mode skill (REQUIRED)                                 │
│  └─► Provides: call_tool_chain(), search_tools(), etc.          │
│      └─► Enables: Access to Figma provider                      │
└─────────────────────────────────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  mcp-figma skill (THIS SKILL)                                    │
│  └─► Provides: Knowledge of 18 Figma tools                      │
│      └─► Pattern: figma.figma_{tool_name}                         │
└─────────────────────────────────────────────────────────────────┘

Code Mode Dependency (REQUIRED)

⚠️ CRITICAL: This skill REQUIRES mcp-code-mode. Figma tools are NOT accessible without Code Mode.

How Figma Relates to Code Mode:

┌─────────────────────────────────────────────────────────────────┐
│  opencode.json                                                  │
│  └─► Configures: code-mode MCP server                            │
│      └─► Points to: .utcp_config.json                            │
└─────────────────────────────────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  .utcp_config.json                                               │
│  └─► Configures: figma provider (among others)                    │
│      └─► Package: figma-developer-mcp                            │
│      └─► Auth: FIGMA_API_KEY                                     │
└─────────────────────────────────────────────────────────────────┘

Figma Provider Configuration (in .utcp_config.json):

{
  "name": "figma",
  "call_template_type": "mcp",
  "config": {
    "mcpServers": {
      "figma": {
        "transport": "stdio",
        "command": "npx",
        "args": ["-y", "figma-developer-mcp", "--stdio"],
        "env": {
          "FIGMA_API_KEY": "figd_your_token_here"
        }
      }
    }
  }
}

Note: Code Mode does NOT support ${VAR} env substitution. You must hardcode the API key directly in the config.

Skill Relationship Notes
mcp-code-mode REQUIRED Figma accessed via Code Mode's call_tool_chain()
mcp-narsil Optional Can analyze code generated from Figma designs

Cross-Tool Workflows

Figma → ClickUp:

// Get design info, create task
const file = await figma.figma_get_file({ fileKey: "abc" });
const task = await clickup.clickup_create_task({
  name: `Implement: ${file.name}`,
  description: `Design file: https://figma.com/file/abc`
});

Figma → Webflow:

// Export images, update CMS
const images = await figma.figma_get_image({ fileKey: "abc", ids: ["1:2"], format: "png" });
// Use image URLs in Webflow CMS

7. 🏎️ QUICK REFERENCE

Essential Commands

Task Tool Example
Get file get_file figma.figma_get_file({ fileKey: "abc123" })
Export image get_image figma.figma_get_image({ fileKey: "abc", ids: ["1:2"], format: "png" })
Get components get_file_components figma.figma_get_file_components({ fileKey: "abc" })
Get styles get_file_styles figma.figma_get_file_styles({ fileKey: "abc" })
Get comments get_comments figma.figma_get_comments({ fileKey: "abc" })
Post comment post_comment figma.figma_post_comment({ fileKey: "abc", message: "..." })

Common Patterns

// Get file structure
call_tool_chain({
  code: `
    const file = await figma.figma_get_file({ fileKey: "abc123XYZ" });
    console.log('Pages:', file.document.children.map(p => p.name));
    return file;
  `
});

// Export multiple nodes as PNG
call_tool_chain({
  code: `
    const images = await figma.figma_get_image({
      fileKey: "abc123XYZ",
      ids: ["1:234", "1:235", "1:236"],
      format: "png",
      scale: 2
    });
    return images;
  `
});

// Get all components with metadata
call_tool_chain({
  code: `
    const components = await figma.figma_get_file_components({ fileKey: "abc123XYZ" });
    return components.meta.components.map(c => ({
      name: c.name,
      key: c.key,
      nodeId: c.node_id
    }));
  `
});

Troubleshooting

Issue Solution
"Invalid token" error Regenerate token in Figma Settings → Personal Access Tokens
File not found Verify fileKey from URL: figma.com/file/{fileKey}/...
Rate limited Add delays between requests, reduce batch size
Node ID not found Node IDs change on edit - re-fetch file to get current IDs
Empty components list File may not have published components

references/

Document Purpose Key Insight
tool_reference.md All 18 tools documented Complete parameter reference
quick_start.md Getting started 5-minute setup

assets/

Asset Purpose
tool_categories.md Priority categorization of all 18 tools

External Resources

  • mcp-code-mode - Tool orchestration (Figma accessed via Code Mode)

Install Guide