架构说明
说明 Figma Agent Kit 的包结构、运行时角色、数据路径与设计原则。
目标
- 让 AI Agent(Cursor、Claude Code、Codex 等)读写当前在 Figma Desktop 打开的文件
- 画布流量保持在 localhost — 桥工具不经 Figma REST 上传文档
- 通过单端口 Leader / Follower 选举支持多个 MCP 客户端
- 提供与 MCP 凭证无关的可选插件内 AI路径(重命名 / 分组)
Monorepo 布局
版本锁定在同一 0.1.x。优先使用 pnpm release:kit:*。
系统总览
端到端:
- Agent 经 stdio MCP 连接
figma-agent-mcp进程。 - 该进程是 Leader(绑定
localhost:PORT)或 Follower(转发到 Leader)。 - 插件 UI iframe 用 MessagePack 连接 Leader 的 WebSocket。
- UI 将 RPC 转到插件 main,调用 Figma Plugin API(
documentAccess: dynamic-page)。
技术栈
MCP 模块
插件模块
Leader / Follower 选举
多个 Agent 窗口常会拉起多个 MCP 进程,但只有一个能绑定桥端口。
- Leader:绑端口、接插件、提供发现与 RPC。
- Follower:工具调用 → Leader 的
POST /rpc(MsgPack);list_files→GET /files。 - 健康轮询约 3–5s:Leader 挂掉后 Follower 可再竞选接管。
RPC 调用路径
要点:
- 线工具名可能是
type或tool。 - 截图
data在桥上是原始 PNG 字节(MsgPackbin),不是 base64。 - 日志只写 stderr — stdout 留给 MCP stdio。
截图与切图路径
两条 AI 路径
MCP 桥工具不需要 LLM API Key。可选重命名/分组 AI 仅在插件 UI 内运行。
端口配置
- 改根目录
bridge.config.json的defaultPort - 执行
pnpm sync:bridge(predev/prebuild也会跑) - 重建插件并重启 MCP
仅 MCP 运行时可设 FIGMA_AGENT_MCP_PORT — 必须与插件 manifest / UI 内嵌端口一致。
设计原则
- 本地优先 — 桥流量留在
localhost - 热路径 MsgPack — WS + Follower RPC;小探测接口用 JSON
- Stdout 纯净 — MCP 进程禁止往 stdout 打诊断日志
- 异步查节点 —
dynamic-page使用figma.getNodeByIdAsync - 同版本发版 — 协议变更后插件与 MCP 一起升级
- 能力诚实 — Motion 需 Figma 暴露对应 API,否则返回明确错误
