arinspunk

Claude Talk to Figma MCP

Community arinspunk
Updated

A Model Context Protocol (MCP) that allows Claude Desktop and other AI tools (GitHub Copilot, Cursor, etc.) to interact directly with Figma

Claude Talk to Figma MCP

A Model Context Protocol (MCP) plugin that allows Claude Desktop and other AI tools (GitHub Copilot, Cursor, etc.) to interact directly with Figma, enabling powerful AI-assisted design capabilities.

Important: This project is based on cursor-talk-to-figma-mcp by Sonny Lazuardi. It has been adapted to work with Claude Desktop and expanded with additional tools. Original credit belongs to Sonny Lazuardi ❤️

⚡ Quick Start (5 minutes)

Prerequisites

Installation

  1. Setup:
    • macOs / Linux:
      • git clone https://github.com/arinspunk/claude-talk-to-figma-mcp.git && cd claude-talk-to-figma-mcp && bun install && bun run build
    • Windows:
      • git clone https://github.com/arinspunk/claude-talk-to-figma-mcp.git
      • cd claude-talk-to-figma-mcp
      • bun install
      • bun run build:win
  2. Configure Claude: bun run configure-claude (restart Claude Desktop)
  3. Install Figma Plugin: Import src/claude_mcp_plugin/manifest.json in Figma → Menu → Plugins → Development

First Connection

  1. Start server: bun socket (verify at http://localhost:3055/status)
  2. Connect plugin: Open Claude MCP Plugin in Figma → copy channel ID
  3. Test in Claude: "Talk to Figma, channel {channel-ID}"

Success: Claude should confirm connection and you can start designing!

🚀 Core Concepts

How It Works

Claude Desktop ↔ MCP Server ↔ WebSocket Server ↔ Figma Plugin

Simple: Claude sends design commands → Figma executes them in real-time Bidirectional: Get info from Figma, create/modify elements, manage components

Key Capabilities

  • Document Interaction: Analyze designs, get selections, export assets
  • Element Creation: Shapes, text, frames with full styling control
  • Smart Modifications: Colors, effects, auto-layout, responsive design
  • Text Mastery: Advanced typography, font loading, text scanning
  • Component Integration: Local and team library components

🛠️ Usage Patterns

Getting Started with AI Design

  1. Make Claude a UX expert: Use this prompt 🎨
  2. Connect to your project: "Talk to Figma, channel {channel-ID}"
  3. Start designing: "Create a mobile app login screen with modern styling"

Effective Prompting Examples

✅ Good: "Create a dashboard with a sidebar navigation, header with user profile, and main content area with card-based metrics"

✅ Good: "Redesign this button component with hover states and better contrast ratios"

❌ Avoid: "Make it look nice" (too vague)

Server Management

  • Start: bun socket
  • Stop: Ctrl+C in terminal
  • Status: Check http://localhost:3055/status
  • Restart: Required if connection issues occur

📚 Command Reference

📄 Document Tools

Command Purpose Example Use
get_document_info Document analysis Get project overview
get_selection Current selection What's selected now
get_node_info Element details Inspect specific component
get_nodes_info Multiple elements info Batch element inspection
scan_text_nodes Find all text Text audit and updates
get_styles Document styles Color/text style audit
join_channel Connect to Figma Establish communication
export_node_as_image Asset export Generate design assets

🔧 Creation Tools

Command Purpose Example Use
create_rectangle Basic shapes Buttons, backgrounds
create_frame Layout containers Page sections, cards
create_text Text elements Headlines, labels
create_ellipse Circles/ovals Profile pics, icons
create_polygon Multi-sided shapes Custom geometric elements
create_star Star shapes Decorative elements
clone_node Duplicate elements Copy existing designs
group_nodes Organize elements Component grouping
ungroup_nodes Separate groups Break apart components
insert_child Nest elements Hierarchical structure
flatten_node Vector operations Boolean operations

✏️ Modification Tools

Command Purpose Example Use
set_fill_color Element colors Brand color application
set_stroke_color Border colors Outline styling
move_node Positioning Layout adjustments
resize_node Size changes Responsive scaling
delete_node Remove elements Clean up designs
set_corner_radius Rounded corners Modern UI styling
set_auto_layout Flexbox-like layout Component spacing
set_effects Shadows/blurs Visual polish
set_effect_style_id Apply effect styles Consistent shadow styles

📝 Text Tools

Command Purpose Example Use
set_text_content Text updates Copy changes
set_multiple_text_contents Batch text updates Multi-element editing
set_font_name Typography Brand font application
set_font_size Text sizing Hierarchy creation
set_font_weight Text weight Bold/light variations
set_letter_spacing Character spacing Typography fine-tuning
set_line_height Vertical spacing Text readability
set_paragraph_spacing Paragraph gaps Content structure
set_text_case Case transformation UPPER/lower/Title case
set_text_decoration Text styling Underline/strikethrough
get_styled_text_segments Text analysis Rich text inspection
load_font_async Font loading Custom font access

🎨 Component Tools

Command Purpose Example Use
get_local_components Project components Design system audit
get_remote_components Team libraries Shared component access
create_component_instance Use components Consistent UI elements

🔧 Complete Installation Guide

Detailed Setup Process

  1. Clone and Build:

    git clone https://github.com/arinspunk/claude-talk-to-figma-mcp.git
    cd claude-talk-to-figma-mcp
    bun install
    

    run the appropriate command based on your operating system:

    • macOs / Linux
    bun run build
    
    • Windows
    bun run build:win
    
  2. Configure Claude Desktop:

    bun run configure-claude
    

    This script:

    • Locates your Claude config file (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json)
    • Creates a backup of existing configuration
    • Adds "ClaudeTalkToFigma" to your MCP list
    • Restart Claude Desktop after running this
  3. Install Figma Plugin:

    • Open Figma → Menu > Plugins > Development
    • Select "Import plugin from manifest"
    • Navigate to src/claude_mcp_plugin/manifest.json
    • Plugin appears in your development plugins list
  4. Verify Installation:

    • Claude Desktop: Check "ClaudeTalkToFigma" appears in MCPs selector
    • Figma: Find "Claude MCP Plugin" in your plugins
    • WebSocket: bun socket should start without errors

🧪 Testing & Quality Assurance

Automated Testing

bun run test            # Run all tests
bun run test:watch      # Watch mode
bun run test:coverage   # Coverage report

Integration Testing

bun run test:integration  # Guided end-to-end testing

Manual Verification Checklist

  • WebSocket server starts on port 3055
  • Figma plugin connects and generates channel ID
  • Claude recognizes "ClaudeTalkToFigma" MCP
  • Basic commands execute (create rectangle, change color)
  • Error handling works (invalid commands, timeouts)

🐛 Troubleshooting & Support

Connection Issues

  • "Can't connect to WebSocket": Ensure bun socket is running
  • "Plugin not found": Verify plugin import in Figma Development settings
  • "MCP not available": Run bun run configure-claude and restart Claude

Execution Problems

  • "Command failed": Check Figma development console for errors
  • "Font not found": Use load_font_async to verify font availability
  • "Permission denied": Ensure you have edit access to the Figma document
  • "Timeout errors": Complex operations may need retry

Performance Issues

  • Slow responses: Large documents may require more processing time
  • Memory usage: Close unused Figma tabs, restart if necessary
  • WebSocket disconnects: Server auto-reconnects, restart if persistent

Common Solutions

  1. Restart sequence: Stop server → Close Claude → Restart both
  2. Clean reinstall: Delete node_modulesbun installbun run build
  3. Check logs: Server terminal shows detailed error messages
  4. Update fonts: Some team fonts require manual loading in Figma

🏗️ Advanced Topics

Architecture Deep Dive

+----------------+     +-------+     +---------------+     +---------------+
|                |     |       |     |               |     |               |
| Claude Desktop |<--->|  MCP  |<--->| WebSocket Srv |<--->| Figma Plugin  |
|   (AI Agent)   |     |       |     |  (Port 3055)  |     |  (UI Plugin)  |
|                |     |       |     |               |     |               |
+----------------+     +-------+     +---------------+     +---------------+

Design Principles:

  • MCP Server: Business logic, validation, default values
  • WebSocket Server: Message routing and protocol translation
  • Figma Plugin: Pure command executor in Figma context

Benefits:

  • Clear separation of concerns
  • Easy testing and maintenance
  • Scalable architecture for additional tools

Project Structure

src/
  talk_to_figma_mcp/     # MCP Server implementation
    server.ts            # Main entry point
    tools/               # Tool categories by function
      document-tools.ts  # Document interaction
      creation-tools.ts  # Shape and element creation
      modification-tools.ts # Property modification
      text-tools.ts      # Text manipulation
    utils/               # Shared utilities
    types/               # TypeScript definitions
  claude_mcp_plugin/     # Figma plugin
    code.js              # Plugin implementation
    manifest.json        # Plugin configuration

Contributing Guidelines

  1. Fork and Branch: git checkout -b feature/amazing-feature
  2. Code Standards: Follow existing TypeScript patterns
  3. Testing: Add tests for new functionality
  4. Documentation: Update relevant sections
  5. Pull Request: Clear description of changes
Recent Contributors

📋 Version History

Current: 0.5.3

  • Windows Compatibility: Added dedicated build command for Windows systems
  • Cross-Platform Support: Improved developer experience across all operating systems
  • Build Process Enhancement: Separated Unix/Linux and Windows build workflows
  • Developer Experience: Resolved chmod dependency issues on Windows

See CHANGELOG.md for complete version history.

📄 License & Credits

License: MIT License - see LICENSE file

Authors:

  • Xúlio Zé - Claude adaptation - GitHub
  • Sonny Lazuardi - Original implementation - GitHub

Acknowledgments:

  • Anthropic team for Claude and Model Context Protocol
  • Figma community for excellent plugin API
  • Bun team for fast JavaScript runtime

MCP Server · Populars

MCP Server · New

    arinspunk

    Claude Talk to Figma MCP

    A Model Context Protocol (MCP) that allows Claude Desktop and other AI tools (GitHub Copilot, Cursor, etc.) to interact directly with Figma

    Community arinspunk
    zillow

    AutoMobile

    Mobile automation suite of tools including an MCP and libraries for test authoring & execution

    Community zillow
    aiurda

    🚀 Cursor10x is now DevContext 🚀

    The Cursor10x MCP is a persistent multi-dimensional memory system for Cursor that enhances AI assistants with conversation context, project history, and code relationships across sessions.

    Community aiurda
    SonarSource

    SonarQube MCP Server

    SonarQube MCP Server

    Community SonarSource
    awslabs

    AWS MCP Servers

    AWS MCP Servers — helping you get the most out of AWS, wherever you use MCP.

    Community awslabs