Figma Copilot

Provides programmatic access to Figma designs via MCP for automation and design tasks.
  • typescript

4

GitHub Stars

typescript

Language

5 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "xlzuvekas-figma-copilot": {
      "command": "bunx",
      "args": [
        "figma-copilot@latest"
      ]
    }
  }
}

You can run a dedicated MCP server that lets AI assistants interact with Figma designs through a stable, bidirectional protocol. This server handles design operations, text workflows, component manipulations, and batch actions, enabling automation and advanced design tasks across MCP-enabled clients.

How to use

To use this MCP server, first ensure your MCP client can connect via the WebSocket-backed channel, then start the server components and install the Figma plugin. After joining a channel from your MCP client, you can send commands to inspect documents, read or update text with formatting preservation, create and layout elements, and perform batch operations across multiple nodes.

How to install

Prerequisites you need before installation: a command-line environment and a runtime to execute the MCP server. The server uses Bun to run its tooling, so you should have Bun installed on your system.

curl -fsSL https://bun.sh/install | bash

Set up the MCP environment and initialize the server runtime.

bun setup

Start the WebSocket server which enables communication between the MCP server and the Figma plugin.

bun socket

Start the MCP server component that exposes the Figma Copilot MCP endpoints.

bunx figma-copilot

Install the Figma plugin to enable integration with the MCP server. You can install it from the Figma community or load it locally using the provided plugin manifest.

Configuration and connection

Configure your MCP client to connect to the local MCP server. Here is a sample configuration for an MCP client to connect via a local stdio server.

{
  "mcpServers": {
    "figma_copilot": {
      "command": "bunx",
      "args": ["figma-copilot@latest"]
    }
  }
}

MCP Tools overview

The server provides a broad set of tools to interact with Figma documents, nodes, text, layouts, annotations, components, and batch operations. Use these tools to query documents, read or modify nodes, apply styles, create elements, and perform bulk actions efficiently.

Best practices

  • Always join a channel before sending commands. - Use get_document_info to get an overview before making changes. - Check current context with get_current_context prior to modifications. - Prefer batch operations for large updates to minimize round trips. - Verify results with targeted reads, such as get_node_info, after changes. - When handling text, preserve formatting where possible and use bulk updates for efficiency.

Troubleshooting

If you encounter timeouts during large scans, adjust scan_nodes_with_options for deeper control and partial results. Review error messages for actionable guidance and consider dividing large tasks into smaller batches.

Notes

This MCP server supports integration with a Figma plugin and is designed for compatibility with MCP clients like Cursor and Claude Desktop. It emphasizes enhanced text operations, batch processing, and robust error handling to streamline design automation.

Available tools

get_document_info

Get information about the current Figma document

get_current_context

Get comprehensive context including selection, focused slide (if in Slides mode), and optionally document info

read_my_design

Get detailed node information about the current selection without parameters

get_nodes

Get detailed information about one or more nodes (accepts single ID or array)

get_annotations

Get all annotations in the current document or specific node

set_annotation

Create or update an annotation with markdown support

set_multiple_annotations

Batch create/update multiple annotations efficiently

scan_nodes_by_types

Scan for nodes with specific types (useful for finding annotation targets)

get_reactions

Get all prototype reactions from nodes with visual highlight animation

set_default_connector

Set a copied FigJam connector as the default connector style for creating connections

create_connections

Create FigJam connector lines between nodes based on prototype flows or mappings

create_rectangle

Create a new rectangle with position, size, and optional name

create_frame

Create a new frame with position, size, and optional name

create_text

Create a new text node with customizable font properties

update_text_preserve_formatting

Update text while preserving all character formatting (bold, italic, colors, fonts)

smart_text_replace

Find and replace text while preserving formatting of unchanged portions

set_multiple_text_contents_with_styles

Batch update text with formatting in a single operation

set_text_style_range

Apply text styling to specific character ranges

get_text_style_range

Get text styling for a specific range

set_text_decoration_range

Set advanced text decoration properties

get_text_decoration_range

Get text decoration properties for a range

set_range_font

Change font family and style for a text range

set_range_font_size

Change font size for a text range

set_range_fills

Set text color for a specific range

get_styled_text_segments

Get detailed information about text segments and their properties

set_component_description

Set component description using Markdown

get_component_description

Get component description in Markdown format

normalize_markdown

Normalize Markdown text to Figma's supported subset

set_layout_mode

Set the layout mode and wrap behavior of a frame

set_padding

Set padding values for an auto-layout frame

set_axis_align

Set primary and counter axis alignment for auto-layout frames

set_layout_sizing

Set horizontal and vertical sizing modes for auto-layout frames

set_item_spacing

Set distance between children in an auto-layout frame

set_fill_color

Set the fill color of a node

set_stroke_color

Set the stroke color and weight of a node

set_corner_radius

Set the corner radius of a node with per-corner control

move_node

Move a node to a new position

resize_node

Resize a node with new dimensions

delete_node

Delete a node

delete_multiple_nodes

Delete multiple nodes at once efficiently

clone_node

Create a copy of an existing node with optional position offset

clone_multiple_nodes

Clone a node to multiple positions in one operation

get_styles

Get information about local styles

get_local_components

Get information about local components

create_component_instance

Create an instance of a component

get_instance_overrides

Extract override properties from a selected component instance

set_instance_overrides

Apply extracted overrides to target instances

extract_slide_content

Extract all content from a Figma slide including text, tables, and optionally images

get_presentation_summary

Generate an overview of a Figma presentation including slide count, slide titles, and an outline

get_table_data

Extract data from a Figma table node in various formats

export_node_as_image

Export a node as an image in various formats

join_channel

Join a specific channel to communicate with Figma

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational