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.
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
- Bun v1.0+
- Figma Desktop App
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
- Open Figma Desktop
- Go to Plugins → Development → Import plugin from manifest...
- Select
apps/figma-plugin/manifest.json - Run the plugin from Plugins → Development → Figma 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
- In the Figma plugin UI, enter the channel name (default:
figma) - Click Connect
- Start chatting with Claude about your Figma designs!
Available Tools
Document & Selection
get_document_info- Get current document informationget_selection- Get currently selected nodesget_node_info- Get detailed info about a noderead_my_design- Read selected design nodes
Shape Creation
create_rectangle- Create a rectanglecreate_frame- Create a frame with auto-layout supportcreate_text- Create text nodes
Styling
set_fill_color- Set fill colorset_stroke_color- Set stroke colorset_corner_radius- Set corner radius
Transform
move_node- Move a noderesize_node- Resize a nodedelete_node- Delete a nodeclone_node- Clone a node
Layout
set_layout_mode- Set auto-layout modeset_padding- Set paddingset_axis_align- Set axis alignmentset_item_spacing- Set item spacing
Components
get_local_components- List local componentscreate_component_instance- Create component instanceget_instance_overrides- Get instance overridesset_instance_overrides- Apply overrides to instances
Variables (NEW)
get_local_variable_collections- List variable collectionscreate_variable_collection- Create a collectioncreate_variable- Create a variableset_variable_value_for_mode- Set variable valuebind_variable_to_node- Bind variable to node propertyunbind_variable_from_node- Remove variable binding- And more...
Export & Prototyping
export_node_as_image- Export node as PNG/JPG/SVG/PDFget_reactions- Get prototype reactionscreate_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
- Ensure the relay server is running
- Check that the channel name matches in both plugin and MCP server
- Verify Figma has network access permissions
Commands timing out
- Check Figma plugin is connected (green indicator)
- Ensure the node IDs are valid
- 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.