Talk to Figma MCP
grab/cursor-talk-to-figma-mcpMCP-сервер для связи AI-агентов (Cursor, Claude Code) с Figma через WebSocket. Позволяет программно читать дизайн, изменять элементы, управлять текстом, стилями и автолейаутом. Подходит для автоматизации дизайн-процессов.
Подключение
git clone https://github.com/grab/cursor-talk-to-figma-mcp.gitREADME
Talk to Figma MCP
Проект реализует интеграцию Model Context Protocol (MCP) между AI-агентом (Cursor, Claude Code) и Figma, позволяя AI-агенту взаимодействовать с Figma для чтения дизайнов и их программного изменения.
https://github.com/user-attachments/assets/129a14d2-ed73-470f-9a4c-2240b2a4885c
Структура проекта
src/talk_to_figma_mcp/— TypeScript MCP-сервер для интеграции с Figmasrc/cursor_mcp_plugin/— плагин Figma для взаимодействия с Cursorsrc/socket.ts— WebSocket-сервер, обеспечивающий связь между MCP-сервером и плагином Figma
Как использовать
- Установите Bun, если он ещё не установлен:
curl -fsSL https://bun.sh/install | bash
- Запустите настройку — она также установит MCP в активный проект Cursor:
bun setup
- Запустите WebSocket-сервер:
bun socket
- НОВОЕ Установите плагин Figma со страницы сообщества Figma или установите локально
Видеоурок
Примеры автоматизации дизайна
Массовая замена текстового содержимого
Благодарим @dusskapark за вклад в реализацию функции массовой замены текста. Смотрите демо-видео.
Распространение переопределений экземпляров компонентов
Ещё один вклад от @dusskapark. Распространяйте переопределения экземпляра компонента с исходного экземпляра на несколько целевых одной командой. Функция значительно сокращает повторяющуюся работу при работе с экземплярами компонентов, требующими схожих настроек. Смотрите демо-видео.
Ручная установка и настройка
MCP-сервер: интеграция с Cursor
Добавьте сервер в конфигурацию MCP Cursor в файле ~/.cursor/mcp.json:
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": ["cursor-talk-to-figma-mcp@latest"]
}
}
}WebSocket-сервер
Запустите WebSocket-сервер:
bun socket
Плагин Figma
- В Figma перейдите в Plugins > Development > New Plugin
- Выберите «Link existing plugin»
- Укажите файл
src/cursor_mcp_plugin/manifest.json - Плагин станет доступен в разделе плагинов разработки Figma
Руководство для Windows + WSL
- Установите Bun через PowerShell:
powershell -c "irm bun.sh/install.ps1|iex"
- Раскомментируйте
hostname: "0.0.0.0"в файлеsrc/socket.ts:
// uncomment this to allow connections in windows wsl
hostname: "0.0.0.0",- Запустите WebSocket-сервер:
bun socket
Использование
- Запустите WebSocket-сервер
- Установите MCP-сервер в Cursor
- Откройте Figma и запустите плагин Cursor MCP Plugin
- Подключите плагин к WebSocket-серверу, войдя в канал с помощью
join_channel - Используйте Cursor для взаимодействия с Figma через MCP-инструменты
Настройка для локальной разработки
Для разработки обновите конфигурацию MCP, указав путь к локальной директории:
{
"mcpServers": {
"TalkToFigma": {
"command": "bun",
"args": ["/path-to-repo/src/talk_to_figma_mcp/server.ts"]
}
}
}MCP-инструменты
MCP-сервер предоставляет следующие инструменты для работы с Figma:
Документ и выделение
get_document_info— получить информацию о текущем документе Figmaget_selection— получить информацию о текущем выделенииread_my_design— получить подробную информацию об узлах текущего выделения без параметровget_node_info— получить подробную информацию о конкретном узлеget_nodes_info— получить подробную информацию о нескольких узлах по массиву их IDset_focus— установить фокус на конкретный узел, выделив его и прокрутив вьюпорт к немуset_selections— выделить несколько узлов и прокрутить вьюпорт для их отображения
Аннотации
get_annotations— получить все аннотации в текущем документе или конкретном узлеset_annotation— создать или обновить аннотацию с поддержкой markdownset_multiple_annotations— пакетное создание/обновление нескольких аннотацийscan_nodes_by_types— найти узлы определённых типов (полезно для поиска целей аннотаций)
Прототипирование и связи
get_reactions— получить все прототипные реакции из узлов с анимацией визуального выделенияset_default_connector— задать скопированный коннектор FigJam как стиль коннектора по умолчанию для создания связей (необходимо установить перед созданием связей)create_connections— создать линии-коннекторы FigJam между узлами на основе прототипных потоков или пользовательского маппинга
Создание элементов
create_rectangle— создать прямоугольник с заданными позицией, размером и необязательным именемcreate_frame— создать фрейм с заданными позицией, размером и необязательным именемcreate_text— создать текстовый узел с настраиваемыми свойствами шрифта
Изменение текстового содержимого
scan_text_nodes— сканировать текстовые узлы с интеллектуальным разбиением на части для больших дизайновset_text_content— задать текстовое содержимое одного текстового узлаset_multiple_text_contents— пакетное обновление нескольких текстовых узлов
Автолейаут и отступы
set_layout_mode— задать режим лейаута и поведение переноса фрейма (NONE,HORIZONTAL,VERTICAL)set_padding— задать значения отступов для фрейма с автолейаутом (top, right, bottom, left)set_axis_align— задать выравнивание по основной и поперечной осям для фреймов с автолейаутомset_layout_sizing— задать режимы размера по горизонтали и вертикали для фреймов с автолейаутом (FIXED,HUG,FILL)set_item_spacing— задать расстояние между дочерними элементами в фрейме с автолейаутом
Стилизация
set_fill_color— задать цвет заливки узла (RGBA)set_stroke_color— задать цвет и толщину обводки узлаset_corner_radius— задать радиус скругления углов узла с опциональным управлением каждым углом
Лейаут и организация
move_node— переместить узел на новую позициюresize_node— изменить размер узлаdelete_node— удалить узелdelete_multiple_nodes— пакетное удаление нескольких узловflatten_node— объединить узелgroup_nodes— сгруппировать несколько узловungroup_node— разгруппировать узелduplicate_node— дублировать узел
Компоненты и стили
get_styles— получить все стили в документеget_local_components— получить все локальные компонентыget_team_components— получить компоненты командыcreate_component_instance— создать экземпляр компонентаget_instance_overrides— получить переопределения экземпляра компонентаset_instance_overrides— применить переопределения к целевым экземплярам
Экспорт
export_node_as_image— экспортировать узел как изображение (PNG, JPG, SVG, PDF)
Переменные и токены
get_variables— получить все переменные в документеcreate_variable— создать новую переменнуюset_variable_value— задать значение переменной