Agent to Figma MCP

Agent to Figma MCP

Enables AI agents like Claude to interact with Figma designs through 50+ tools for creating, styling, and manipulating design elements, components, and variables via a WebSocket relay and Figma plugin.

Category
Visit Server

README

Agent to Figma MCP

A TypeScript monorepo that enables AI agents (like Claude) to interact with Figma designs through the Model Context Protocol (MCP).

Architecture

┌─────────────────┐     stdio        ┌─────────────────┐     WebSocket      ┌─────────────────┐
│   Claude Code   │◄────────────────►│   MCP Server    │◄──────────────────►│  Relay Server   │
│   (MCP Client)  │                  │  (port: stdio)  │                    │  (port: 3055)   │
└─────────────────┘                  └─────────────────┘                    └────────┬────────┘
                                                                                     │
                                                                                     │ WebSocket
                                                                                     ▼
                                                                            ┌─────────────────┐
                                                                            │  Figma Plugin   │
                                                                            │  (in Figma)     │
                                                                            └─────────────────┘

Packages

Package Description
apps/mcp-server MCP server with 50+ tools for Figma manipulation
apps/relay-server WebSocket relay for Figma plugin communication
apps/figma-plugin Figma plugin that executes commands
packages/types Shared TypeScript types

Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/anthropics/agent-to-figma-mcp.git
cd agent-to-figma-mcp

# Install dependencies
bun install

# Build all packages
bun run build

Running

1. Start the Relay Server

bun run --filter=@caelinsutch/relay-server start

The relay server runs on ws://localhost:3055.

2. Install the Figma Plugin

  1. Open Figma Desktop
  2. Go to PluginsDevelopmentImport plugin from manifest...
  3. Select apps/figma-plugin/manifest.json
  4. Run the plugin from PluginsDevelopmentFigma MCP Plugin

3. Configure Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "agent-to-figma": {
      "command": "node",
      "args": ["/path/to/agent-to-figma-mcp/apps/mcp-server/dist/index.js"],
      "env": {
        "RELAY_URL": "ws://localhost:3055",
        "CHANNEL_NAME": "figma"
      }
    }
  }
}

4. Connect

  1. In the Figma plugin UI, enter the channel name (default: figma)
  2. Click Connect
  3. Start chatting with Claude about your Figma designs!

Available Tools

Document & Selection

  • get_document_info - Get current document information
  • get_selection - Get currently selected nodes
  • get_node_info - Get detailed info about a node
  • read_my_design - Read selected design nodes

Shape Creation

  • create_rectangle - Create a rectangle
  • create_frame - Create a frame with auto-layout support
  • create_text - Create text nodes

Styling

  • set_fill_color - Set fill color
  • set_stroke_color - Set stroke color
  • set_corner_radius - Set corner radius

Transform

  • move_node - Move a node
  • resize_node - Resize a node
  • delete_node - Delete a node
  • clone_node - Clone a node

Layout

  • set_layout_mode - Set auto-layout mode
  • set_padding - Set padding
  • set_axis_align - Set axis alignment
  • set_item_spacing - Set item spacing

Components

  • get_local_components - List local components
  • create_component_instance - Create component instance
  • get_instance_overrides - Get instance overrides
  • set_instance_overrides - Apply overrides to instances

Variables (NEW)

  • get_local_variable_collections - List variable collections
  • create_variable_collection - Create a collection
  • create_variable - Create a variable
  • set_variable_value_for_mode - Set variable value
  • bind_variable_to_node - Bind variable to node property
  • unbind_variable_from_node - Remove variable binding
  • And more...

Export & Prototyping

  • export_node_as_image - Export node as PNG/JPG/SVG/PDF
  • get_reactions - Get prototype reactions
  • create_connections - Create prototype connections

Development

Build

# Build all packages
bun run build

# Build specific package
bun run build --filter=@caelinsutch/mcp-server

Type Check

# Type check all packages
bun run type:check

# Type check specific package
bun run type:check --filter=@caelinsutch/mcp-server

Development Mode

# Run relay server in dev mode
bun run --filter=@caelinsutch/relay-server dev

# Run Figma plugin in dev mode
bun run --filter=@caelinsutch/figma-plugin dev

Project Structure

agent-to-figma-mcp/
├── apps/
│   ├── mcp-server/           # MCP server (stdio transport)
│   │   ├── src/
│   │   │   ├── tools/        # Feature-based tool modules
│   │   │   │   ├── document.ts
│   │   │   │   ├── nodes.ts
│   │   │   │   ├── shapes.ts
│   │   │   │   ├── text.ts
│   │   │   │   ├── styling.ts
│   │   │   │   ├── transform.ts
│   │   │   │   ├── layout.ts
│   │   │   │   ├── components.ts
│   │   │   │   ├── variables.ts
│   │   │   │   └── ...
│   │   │   ├── prompts/      # MCP prompts
│   │   │   ├── communication/ # WebSocket client
│   │   │   └── index.ts
│   │   └── package.json
│   │
│   ├── relay-server/         # WebSocket relay
│   │   ├── src/
│   │   │   ├── server.ts     # Bun WebSocket server
│   │   │   ├── channels.ts   # Channel management
│   │   │   └── index.ts
│   │   └── package.json
│   │
│   └── figma-plugin/         # Figma plugin
│       ├── src/
│       │   ├── plugin/
│       │   │   ├── handlers/ # Command handlers
│       │   │   ├── utils/    # Utilities
│       │   │   └── code.ts   # Main entry
│       │   └── ui/           # Plugin UI
│       └── manifest.json
│
├── packages/
│   └── types/                # Shared TypeScript types
│       └── src/
│           ├── commands.ts
│           ├── figma/
│           │   ├── nodes.ts
│           │   ├── variables.ts
│           │   └── ...
│           └── communication/
│
└── turbo.json

Environment Variables

MCP Server

Variable Default Description
RELAY_URL ws://localhost:3055 WebSocket relay URL
CHANNEL_NAME figma Channel to join

Relay Server

Variable Default Description
PORT 3055 Server port

Troubleshooting

Plugin not connecting

  1. Ensure the relay server is running
  2. Check that the channel name matches in both plugin and MCP server
  3. Verify Figma has network access permissions

Commands timing out

  1. Check Figma plugin is connected (green indicator)
  2. Ensure the node IDs are valid
  3. Try reconnecting the plugin

Type errors during build

# Clean and rebuild
bun run clean
bun install
bun run build

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured