Архитектура
В этом документе описано устройство Figma Agent Kit: пакеты, роли во время выполнения, потоки данных и принципы проектирования.
Цели
- Позволить ИИ-агентам (Cursor, Claude Code, Codex, …) читать и записывать файл Figma, открытый в Figma Desktop
- Сохранять трафик холста на localhost — инструменты моста не загружают документ через Figma REST
- Поддерживать несколько MCP-клиентов одновременно с выбором Leader / Follower на одном порту моста
- Предоставлять необязательный путь ИИ внутри плагина (переименование / группировка), независимый от учётных данных MCP
Структура монорепозитория
Версии синхронизированы (0.1.x). Предпочтите pnpm release:kit:* выпуску только одной стороны.
Обзор системы
Полный путь:
- Агент общается по MCP через stdio с процессом
figma-agent-mcp. - Этот процесс — либо Leader (привязывает
localhost:PORT), либо Follower (перенаправляет к Leader). - UI iframe плагина открывает WebSocket к Leader и использует MessagePack.
- UI перенаправляет RPC в главный поток плагина main, который вызывает Figma Plugin API (
documentAccess: dynamic-page).
Технологический стек
Карта модулей (MCP)
Карта модулей (плагин)
Выбор Leader / Follower
Несколько окон агента часто запускают несколько процессов MCP. Только один процесс может привязать порт моста.
- Leader: привязывает порт, принимает сокеты плагина, обслуживает обнаружение + RPC.
- Follower: каждый вызов инструмента →
POST /rpc(MsgPack) к Leader;list_files→GET /files. - Опрос здоровья (~3–5 с): если Leader завершится, Follower повторит выбор и может занять его место.
Путь RPC (вызов инструмента)
Важные детали:
- Имя инструмента в протоколе может быть представлено как
typeилиtool. - Данные скриншота
data— это необработанные байты PNG в мосте (MsgPackbin), а не base64. - Логи выводятся только в stderr — stdout зарезервирован для MCP stdio.
Пути скриншотов и экспорта срезов
Два пути ИИ
Инструментам MCP-моста никогда не нужен API-ключ LLM. Необязательный ИИ для переименования/группировки работает только в UI плагина.
Настройка порта
- Отредактируйте корневой
bridge.config.json(defaultPort). - Выполните
pnpm sync:bridge(также запускается наpredev/prebuild). - Пересоберите плагин и перезапустите MCP.
Переопределение во время выполнения только для MCP: FIGMA_AGENT_MCP_PORT — должно совпадать с портом, встроенным в manifest / UI плагина.
Принципы
- Local-first — трафик моста остаётся на
localhost; данные дизайна не загружаются для инструментов MCP. - MsgPack на горячем пути — WS + RPC follower; небольшие конечные точки обнаружения остаются JSON.
- Чистый stdout — никогда не выводите диагностику в stdout процесса MCP.
- Асинхронный поиск узлов — плагины
dynamic-pageиспользуютfigma.getNodeByIdAsync. - Совместно версионируемые релизы — после изменения протокола обновляйте плагин + MCP вместе.
- Честность возможностей — для инструментов Motion нужна сборка Figma с Motion API; иначе возвращайте понятную ошибку.
Дополнительные материалы
- Протокол моста — форматы обмена и конечные точки
- Инструменты MCP — полный каталог инструментов
- Начало работы — установка и подключение
- FAQ — распространённые режимы отказа
