figma-mcp-bridge
v1.0.1
Published
MCP server for programmatic Figma design modification - 70+ tools for AI-powered design
Maintainers
Readme
Figma MCP Bridge
A custom MCP (Model Context Protocol) server that enables Cursor/Claude to programmatically modify Figma designs through a WebSocket bridge to a Figma plugin.
Architecture
┌─────────────┐ MCP ┌──────────────┐ WebSocket ┌──────────────┐
│ Cursor │ ───────────► │ MCP Server │ ◄─────────────► │ Figma Plugin │
│ /Claude │ (stdio) │ (Node.js) │ (Port 3055) │ (Plugin API) │
└─────────────┘ └──────────────┘ └──────────────┘
│ │
Exposes 70+ Has write access
design tools to design filesQuick Start
1. Install Dependencies
cd figma-mcp-bridge
npm install
npm run build2. Start the Bridge Server
npm run bridge
# Output: WebSocket bridge listening on ws://localhost:30553. Install the Figma Plugin
- Open Figma
- Go to Plugins → Development → Import plugin from manifest
- Select
figma-plugin/manifest.json - Run the plugin and note the channel name
4. Configure Cursor MCP
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"FigmaBridge": {
"command": "node",
"args": ["/path/to/figma-mcp-bridge/dist/mcp-server/index.js"],
"env": {
"BRIDGE_URL": "ws://localhost:3055"
}
}
}
}5. Connect and Use
- Restart Cursor to load the MCP server
- In Cursor, use
join_channelwith the channel name from the Figma plugin - Start using tools like
get_document_info,clone_node,set_fill_color, etc.
Available Tools (70+)
Connection
join_channel- Connect to Figma plugin channelleave_channel- Disconnect from channelget_status- Get connection status
Document & Pages
get_document_info- Get full document structureget_pages- List all pagesclone_page- Duplicate entire pagerename_page- Rename a pagedelete_page- Remove a page
Selection & Query
get_selection- Get currently selected nodesset_selection- Set selection to specific nodesget_node_info- Get detailed node propertiesget_children- Get child nodesfind_nodes_by_type- Find all nodes of specific type
Cloning
clone_node- Duplicate a nodedeep_clone- Clone with all nested childrenclone_to_page- Clone node to different page
Transforms
move_node- Set absolute positionresize_node- Set width and heightscale_node- Scale proportionallyrotate_node- Set rotation angleset_opacity- Set node opacityset_visible- Show/hide node
Styling
set_fill_color- Set solid fill colorset_fill_gradient- Set gradient fillset_stroke_color- Set stroke colorset_stroke_weight- Set stroke thicknessset_corner_radius- Set corner radius
Text
get_text_content- Get text stringset_text_content- Set text stringset_font_family- Change font familyset_font_size- Set font sizeset_text_align- Set alignment
Auto Layout
set_auto_layout- Enable/configure auto layoutset_layout_mode- Set horizontal/verticalset_layout_gap- Set spacingset_layout_padding- Set padding
Effects
add_drop_shadow- Add drop shadowadd_blur- Add blur effectremove_effects- Clear all effects
Components
get_overrides- Get instance overridesset_override- Set override propertydetach_instance- Detach from componentswap_instance- Swap to different component
Export
export_node_png- Export as PNGexport_node_svg- Export as SVG
Creation
create_rectangle- Create rectanglecreate_frame- Create framecreate_text- Create text node
Development
# Watch mode for both servers
npm run dev
# Run tests
npm test
# Type check
npm run typecheckAzure Deployment
See infrastructure/azure/ for deployment scripts to host the bridge server on Azure App Service.
License
MIT
