Bridge
SXL Studio Bridge: как установить и запустить локальную программу, которая связывает плагин в Figma с AI-инструментами и скриптами, подключить плагин через Remote Connect, настроить MCP-клиент, что можно поручить агенту и как устранить типовые проблемы.
SXL Studio Bridge — небольшая программа, которая запускается на вашем компьютере и связывает работающий плагин SXL Studio с внешними инструментами: Cursor, Claude Desktop и другими MCP-клиентами, а также скриптами. Через неё AI-агент может читать и менять токены, переменные, стили, композиции и данные в открытом файле Figma. Та же программа обслуживает Local Workspace и Local Storage.
| Что даёт Bridge | Пример |
|---|---|
| Работа с токенами из AI-инструмента | «Добавь токен color/brand/600 и экспортируй коллекцию Core в Figma» |
| Сборка и проверка макетов | «Сгенерируй композицию Card и проверь расхождения с JSON» |
| Документация в Figma | «Собери страницу с палитрой коллекции Projects» |
| Аудиты | «Найди слои с сырыми цветами вместо переменных на этой странице» |
| Данные и Git | «Обнови набор данных и запушь изменения в ветку» |
Требования
| Компонент | Версия |
|---|---|
| Плагин SXL Studio | 2.9.2 |
Bridge (@sxl-studio/bridge) | 1.10.0 |
| Node.js | 20 или новее |
Для нескольких вкладок, управления Figma Desktop и опасных команд, которые включаются сами, нужны Bridge 1.11 и плагин 2.9.6.
Bridge слушает только локальный адрес 127.0.0.1: к нему нельзя подключиться с другого компьютера.
Установка и запуск
npm install -g @sxl-studio/bridge
sxl-bridge
Bridge занимает один порт, по умолчанию 37830. На нём работают подключение плагина, MCP-адрес http://127.0.0.1:37830/mcp и HTTP-запросы http://127.0.0.1:37830/api/.... Если порт занят, задайте другой через переменную окружения:
BRIDGE_PORT=39999 sxl-bridge
Тот же порт потом нужно указать в плагине и в настройках MCP-клиента.
Проверка, что программа запущена:
sxl-bridge health
Подключение плагина: Remote Connect
Remote Connect включается сам. При каждом запуске в режиме Design плагин подключается к Bridge на сохранённом порту и ждёт команд в фоне. Интерфейс плагина остаётся доступным, нажимать ничего не нужно. Если Bridge не запущен, плагин повторяет попытку: первая — через секунду, дальше всё реже, но не реже раза в 30 секунд. Он подключается, как только Bridge появится. Связь восстанавливается сама после перезапуска Bridge и после горячей перезагрузки сборки для разработки. Нужна лицензия Pro Plus.
Чтобы увидеть подключение:
- В подвале плагина нажмите кнопку Remote Connect. Плагин свернётся в компактную строку с состоянием подключения.
- Разверните строку кнопкой со стрелками, чтобы открыть окно подключения. В нём поле Port, поле Token для защищённого режима и переключатель Allow destructive commands.
- Состояние Connected — Waiting for commands означает, что агент может отправлять команды.

Компактная строка Remote Connect в подвале плагина: состояние подключения, Disconnect и кнопка разворота.

Окно Remote Connect: порт, токен, идентификаторы сессии и клиента, переключатель Allow destructive commands.
Пока открыто окно подключения, вкладки плагина скрыты. Disconnect отключает Remote Connect до следующего запуска плагина и возвращает обычный интерфейс. Плагин запоминает порт между сессиями.
Опасные команды
Опасные команды: удаление слоёв, переменных и коллекций, сброс идентификаторов синхронизации и hard pull. Они включаются сами, как только Bridge 1.11 или новее ответит на подключение, кроме защищённых файлов. Более старый Bridge не различает файлы, поэтому с ним опасные команды остаются выключенными, пока их не включат явно. Даже с разрешением агент обязан явно подтверждать каждую опасную команду.
В защищённом файле сессия начинается с выключенными опасными командами. Включить их можно двумя способами:
- переключателем Allow destructive commands;
- командой агента
set_session_policyс подтверждением файла: вconfirmFileпередаётся ключ или имя этого файла.
Файл считается защищённым, если в списке есть любой из его ключей. Он же считается защищённым, если плагин не может прочитать его ключ или сам список. Защиту ставит команда protect_file: для текущего файла, по ключу или по ссылке на файл. Снять её можно той же командой с protect: false и confirmFile — ключом или именем файла. Защита, поставленная из другой вкладки, выключает опасные команды в этом файле перед следующей опасной командой. Список хранится на этом компьютере и действует во всех файлах. Защищайте файлы с опубликованной библиотекой. Выбор, сделанный командой или переключателем, действует до конца сессии.
Перед export_variables можно проверить экспорт через preview_export_variables. Sort упорядочивает стили и их папки без смены ID; переставлять существующие коллекции, моды и переменные публичный API Figma не позволяет. Эти MCP-инструменты игнорируют старую настройку allowDestructiveReorder. Удаление осиротевших объектов остаётся отдельным опасным действием. См. Экспорт переменных и стилей.
Защищённый режим
Если Bridge запущен с переменной BRIDGE_AUTH_TOKEN, все подключения должны предъявить тот же токен: введите его в поле Token окна Remote Connect, в форму подключения Local Storage и в настройки MCP-клиента.
BRIDGE_AUTH_TOKEN=my-secret sxl-bridge
Несколько файлов и управление Figma
Bridge 1.11 держит плагин сразу в нескольких вкладках Figma. Команда уходит в один файл. Он выбирается в таком порядке:
- Явная цель:
targetFileKeyу любого MCP-инструмента, который работает с плагином, илиfileKeyв телеPOST /api/command. Ответ показывает, куда ушла команда:bridgeTargetв MCP,targetв HTTP. - Текущий выбор — последнее из двух действий: выбор файла через
select_plugin_session(по ключу, имени или ссылке) и открытие файла агентом черезfigma_open_file,figma_run_pluginилиrestart_plugin. Явный выбор отменяет файлы, открытые раньше и ещё не подключившиеся. - Первый подключившийся незащищённый файл.
- Единственный подключённый незащищённый файл.
Если выбрать файл нельзя, команда отклоняется с ambiguous-target. Защищённый файл сам не выбирается: открытие файла и запуск в нём плагина его тоже не выбирают. Команды попадают в него только по явной цели или после select_plugin_session. Когда подключено несколько файлов, передавайте targetFileKey в каждой записи. Список подключённых файлов и текущую цель показывает list_plugin_sessions. Пока выбранный файл переподключается, например при перезапуске плагина, команда ждёт его до 20 секунд.
Figma Desktop на macOS агент ведёт сам:
| Инструмент | Что делает |
|---|---|
figma_desktop_status | Приложение, открытые и активная вкладки, сборки плагина для разработки, подключённые файлы, разрешения macOS |
figma_launch | Запускает Figma Desktop |
figma_open_file | Открывает файл по ссылке или ключу и выводит Figma на передний план. Если файл уже открыт, переключает на его вкладку |
figma_run_plugin | Открывает файл и запускает в нём SXL Studio через меню Plugins → Development. Если плагин там уже подключён, ничего не делает. Команду Run last plugin (⌘⌥P) использует только по явному запросу: allowRunLast: true |
restart_plugin | Перезапускает плагин. По умолчанию relaunch: закрыть и запустить снова через меню, только в этом файле. hot-reload — горячая перезагрузка сборки для разработки: плагин перезапустится во всех вкладках |
get_session_policy, set_session_policy, protect_file | Опасные команды сессии и защищённые файлы, см. Опасные команды |
disconnect_plugin, close_plugin | Выключает Remote Connect до следующего запуска или закрывает плагин. Обе команды до 30 секунд ждут конца текущей операции и иначе отвечают busy. force пропускает ожидание, но начатую работу не отменяет |
Для запуска плагина через меню процессу, в котором работает Bridge, нужно разрешение macOS: System Settings → Privacy & Security → Accessibility. Для Bridge, запущенного как служба, это его программа node, путь к ней показывает figma_desktop_status. Перед нажатием меню Bridge выводит Figma на передний план: в фоне Figma команду меню не выполняет. Открытие файлов и горячая перезагрузка работают без разрешения.
Пока окно Figma скрыто — в другом пространстве, свёрнуто или спрятано, — Figma приостанавливает работу с документом. Apply, Generate и экспорт ждут, хотя на другие команды плагин отвечает. figma_desktop_status показывает, видно ли окно. /api/status сообщает FIGMA_WINDOW_HIDDEN, если команда плагина идёт дольше 20 секунд при скрытом окне. Перед долгой работой выведите файл на экран: это делает figma_open_file.
Подключение AI-инструмента
Bridge работает по протоколу MCP. Для Cursor добавьте в .cursor/mcp.json:
{
"mcpServers": {
"sxl-studio": {
"url": "http://127.0.0.1:37830/mcp"
}
}
}
Другие MCP-клиенты подключаются к тому же адресу. Запускайте Bridge до открытия чата с агентом, иначе инструменты не появятся в списке. Первое, что стоит попросить агента: вызвать get_operator_runbook, он описывает, с чего начинать, и get_plugin_status, он показывает, видит ли Bridge плагин.
Что может агент
| Область | Примеры инструментов |
|---|---|
| Токены и файлы | list_token_files, get_token_file_content, save_token_file, export_variables |
| Переменные и стили | get_variables, create_variable, bind_variable, import_variable_spec, get_local_styles, import_style_spec |
| Композиции и экраны | list_compositions, generate_composition, apply_composition, build_screen, build_mockup |
| Документация в Figma | build_token_documentation, bind_variable_palette, build_component_doc, build_doc_flow |
| Аудит | analyze_variable_usage, audit_variable_coverage, audit_style_coverage, audit_composition_drift |
| Данные Database | list_datasets, save_dataset, save_mapping, apply_mapping, generate_instances |
| Git | git_pull, git_push, git_hard_pull |
| Код | get_codegen, export_composition_json |
| Файлы Figma и плагин | list_plugin_sessions, select_plugin_session, get_session_policy, figma_open_file, figma_run_plugin, restart_plugin |
Полный список отдаёт сам Bridge: инструмент list_tools или адрес http://127.0.0.1:37830/api/tools.
Инструменты предпросмотра и аудита ничего не меняют. Инструменты записи принимают dryRun: true для проверки без изменений. Большие ответы Bridge сокращает до сводки, полный вариант можно запросить отдельно.
Bridge и режимы Figma
| Где открыт плагин | Чтение | Изменения на холсте | Токены, настройки, Git |
|---|---|---|---|
| Design | Да | Да | Да |
| Dev Mode, окно плагина | Да | Нет, плагин отвечает ошибкой | Да |
| Dev Mode, панель Code | Только генерация кода | Нет | Нет |
Local Workspace
Bridge читает и записывает файлы токенов и данных в папке на диске для режима Local Workspace и хранит большие файлы Local Storage для Git-подключений. Для этого не нужен Remote Connect: достаточно запущенного Bridge и включённого профиля в настройках синхронизации. Порт и токен задаются на вкладке Local Workspace окна Synchronization settings. Подробнее: Local Workspace и Local Storage.
Если что-то не работает
| Что случилось | Что делать |
|---|---|
Агент получает ошибку «Failed to send to plugin», PLUGIN_NOT_CONNECTED или no-plugin-connected | Плагин не подключён. Откройте плагин в режиме Design: Remote Connect включится сам. Если до этого нажимали Disconnect, перезапустите плагин. На macOS агент может запустить его сам через figma_run_plugin |
Команда отклонена с ambiguous-target | Плагин подключён в нескольких файлах, и цель не выбрана. Передайте targetFileKey или выберите файл через select_plugin_session. Защищённый файл выбирается только так |
Команда ждёт и падает с target-not-connected | В выбранном файле плагин не подключился за 20 секунд. Запустите плагин в этом файле или выберите другой файл |
figma_run_plugin отвечает automation-permission-required | Разрешите процессу Bridge Accessibility: System Settings → Privacy & Security → Accessibility. Путь к процессу есть в ответе и в figma_desktop_status |
| Меню нажато, но плагин не запустился | Figma должна выйти на передний план: Bridge ждёт этого до нажатия и иначе отвечает ошибкой. Если сессия не появилась, проверьте, что в активной вкладке открыт файл, и повторите |
При запуске Bridge пишет EADDRINUSE | Порт занят. Запустите с BRIDGE_PORT=<другой порт> и укажите его в плагине и MCP-клиенте |
| Инструменты не появляются в чате | Bridge запущен после открытия чата. Перезапустите чат или клиент |
| Ошибка авторизации | Токен в плагине или клиенте не совпадает с BRIDGE_AUTH_TOKEN |
После перезапуска Bridge Local Workspace сообщает reload-required | Перезапуск оборвал связь рабочей области с Bridge. Выполните reload_local_workspace или нажмите Reload в плагине |
Команда долго не отвечает, /api/status сообщает FIGMA_WINDOW_HIDDEN | Окно Figma скрыто, и Figma приостановила работу с документом. Выведите Figma на экран или вызовите figma_open_file: команда продолжится сама |
| Команда удаления отклонена | Файл защищён или опасные команды выключены в этой сессии. Включите их командой set_session_policy (для защищённого файла с confirmFile) или переключателем Allow destructive commands и повторите с подтверждением |
| Плагин отвечает, что редактор только для чтения | Файл открыт в Dev Mode. Переключитесь в Design для изменений на холсте |
| Local Workspace не видит папку | Проверьте, что Bridge запущен на порту из настроек профиля, и нажмите Test на вкладке Local Workspace |