"Figma 设计稿转 Cursor 代码:Framelink MCP 配置与验收清单"

"figma 设计稿怎么用 cursor 转成代码?用 Framelink MCP 把布局信息喂给 Agent,附 token 配置、选节点工作流,以及从设计稿到 PR 的间距/字体/状态/无障碍检查清单。"

"Figma 设计稿转 Cursor 代码:Framelink MCP 配置与验收清单"

figma 设计稿怎么用 cursor 转成代码,最稳的路径不是截图粘贴,而是让 Agent 直接读 Figma 节点的布局与样式 metadata。Framelink MCP(npm 包名 figma-developer-mcp,仓库 GLips/Figma-Context-MCP)会把 Figma API 返回的结构化数据精简后再塞进上下文,比纯视觉描述更接近「设计稿即 spec」。下面从 MCP 配置、日常工作流、到 PR 前验收,按实施顺序写。

为什么截图喂 Cursor 经常对不准?

截图只有像素,没有层级、约束、组件变体和 design token 名称。Agent 会猜 padding 是 16 还是 20,猜错 hover 态有没有定义。Figma REST API 能返回 frame 树、auto-layout 方向、gap、fontSize、fills 等字段;Framelink 在转发给模型前做了一层「只留 layout 相关信息」的过滤,减少无关字段占用的 token,也降低模型被 hex 色值淹没的概率。

官方 demo 视频(YouTube 6G9yb-LrEqg)展示的是:在 Cursor Agent 模式粘贴 Figma 链接,一次生成接近稿面的 React 组件。一次到位不保证像素级,但结构误差通常比截图流小。

Framelink MCP 是什么、怎么装?

Framelink MCP for Figma 是一个 MCP server,通过 stdio 与 Cursor 通信。Cursor 侧在 ~/.cursor/mcp.json(或项目级 .cursor/mcp.json)里声明 server,Cursor 启动 Agent 时会拉起 npx figma-developer-mcp

前置条件

  1. Figma 账号能访问目标文件(至少 view;改稿需 edit)
  2. Personal Access Token(Settings → Security → Personal access tokens)
  3. Cursor 已开启 Agent / MCP 支持

macOS / Linux 配置骨架(把 YOUR-KEY 换成 token,勿提交进 git):

{
  "mcpServers": {
    "Framelink MCP for Figma": {
      "command": "npx",
      "args": ["-y", "figma-developer-mcp", "--figma-api-key=YOUR-KEY", "--stdio"]
    }
  }
}

Windowscommand 换成 cmdargs 换成 ["/c", "npx", "-y", "figma-developer-mcp", "--figma-api-key=YOUR-KEY", "--stdio"]

更干净的做法是把 key 放进 env 字段而不是写在 args 里:

{
  "mcpServers": {
    "Framelink MCP for Figma": {
      "command": "npx",
      "args": ["-y", "figma-developer-mcp", "--stdio"],
      "env": {
        "FIGMA_API_KEY": "YOUR-KEY"
      }
    }
  }
}

改完配置重启 Cursor,在 MCP 面板确认 server 绿灯。MCP 能力边界和常见踩坑见Claude Code / Cursor 接 MCP 能做什么

从选节点到生成组件:推荐工作流

按下面顺序做,返工率最低:

  1. 在 Figma 里框选目标:选中单个 frame 或 component set,不要整页文件(节点太大会撑爆上下文)。Copy link to selection,URL 里带 node-id
  2. 在 Cursor Agent 粘贴链接:prompt 写清技术栈,例如「用 React + Tailwind 实现这个 frame,组件名 PricingCard」。
  3. 让 Agent 先读布局再写码:明确说「先用 Figma MCP 读取节点结构,列出 spacing 和 typography,确认后再生成代码」。跳过这一步容易漏 hidden layer。
  4. 对照 design system:若稿里用了 Figma Variables,prompt 里附上项目里 token 的映射表(--color-primary 对应哪个 variable),否则 Agent 会硬编码 hex。
  5. 本地预览 diff:生成后 pnpm dev 并排对照 Figma;差 2px 以内通常可接受,大偏差回到步骤 2 换更小的节点重试。

Composer 2.5 前端组件写法可以组合:MCP 负责「读稿」,Composer 负责「快速迭代 JSX 和样式微调」。若团队有人用 Claude Code 写逻辑、Cursor 写 UI,分工参考Cursor 与 Claude Code 组合工作流

MCP 读到的信息够不够用?

Framelink 故意裁剪 API 响应,保留的多是 layout、constraints、部分 style;不保证导出切图、复杂 gradient mesh、或 Figma 插件生成的 exotic effect。典型缺口:

设计稿元素 MCP 通常能读到 常见缺口
Auto-layout 行列、gap、padding 嵌套过深时摘要丢层
文字 fontFamily / size / weight 自定义字体需本地已安装
颜色 fills 是(hex/rgba) gradient Stop 可能简化
Component variant(hover/disabled) 部分 未命名 variant 易被忽略
图片 fill 节点 ID 二进制需另下或占位
Prototype 交互 要手写状态机

所以「figma 设计稿怎么用 cursor 转成代码」的 realistic 预期是:结构 + 主样式一次生成,状态态和响应式 breakpoint 要你补 prompt 或手写

从设计稿到 PR 的验收检查清单

生成代码只是 halfway。提 PR 前按这张表过一遍,避免设计验收打回:

间距与尺寸

  • 主容器 padding/margin 与 Figma inspect 一致(允许 ±1px 若项目用 rem 换算)
  • Auto-layout gap 未写死 magic number,优先用 token 或 theme spacing scale
  • 图标与文字 baseline 对齐,非「看起来差不多」

字体

  • font-family 落在项目已加载字体栈内
  • 字重、行高、letter-spacing 与稿一致;长文案处检查 truncate / line-clamp

状态

  • default / hover / focus / disabled / loading 五种至少覆盖稿里出现过的
  • focus ring 可见,不只 :hover 伪类

无障碍

  • 交互元素是 <button> 或带 role + keyboard handler,不是裸 <div onClick>
  • 图标按钮有 aria-label
  • 正文与背景对比度 WCAG AA(4.5:1 正文,3:1 大字);用浏览器 DevTools 或 contrast checker 抽测
  • 表单控件有 <label>aria-labelledby

工程

  • 无硬编码 Figma 节点 ID 进生产代码
  • 图片走 CDN 或 assets 目录,非 hotlink Figma API
  • Storybook / 单测(若有)覆盖主 variant

这张清单可以直接贴进 PR template 的「Design QA」小节。

权限、安全与团队稿

Personal Access Token 权限跟随你的 Figma 账号:能看见的文件才能读,离职账号 token 应轮换。不要把 token 写进仓库;用环境变量或 Cursor 本地 mcp.json(已在 .gitignore 的 path)。

客户保密稿、未公开 redesign,走公司 Figma 的 view-only 链接仍会把结构发给 MCP 进程和下游模型。敏感项目应使用脱敏副本 file,或内网自建 MCP 网关审计日志。

团队 design system 若用 Figma Organization library,确认 token 对 Agent 账号可见;否则 MCP 只能看到 detached hex,变量名对不上代码里的 theme.colors.brand

截图流 vs MCP 流:什么时候换方案?

两种输入方式不是非此即彼,按任务类型选:

场景 推荐输入 原因
新组件从 0 到 1 Figma MCP 链接 有 gap、padding、层级树
微调已有页面某个按钮颜色 截图 + 「只改 primary 按钮 background」 改动小,读 API 反而慢
设计稿用了 heavy blur / mesh gradient 截图 + 人工描述 fallback API 常简化效果层
批量落地 6 个同类卡片 MCP 读 component set variant 名能进 prompt
设计师只给了 PDF 导出 截图 没有 Figma 源文件

MCP 流的隐性成本是 token:一次读中等 frame 可能吃掉几千 token 的工具返回。若项目已有 .cursorrules 限制上下文,先读上下文窗口管理里「工具目录膨胀」一节,避免同一轮里再挂五六个无关 MCP。

第一次跑通时的典型报错

401 / Invalid token:token 复制多了空格,或 token 已被 Figma 撤销。重新生成 PAT,更新 mcp.json 后完全退出 Cursor 再开。

403 / File not found:链接里的 file key 对,但你的账号没有该 team project 权限。让设计师 share 到「can view」,或换 personal draft 副本测通。

节点为空 / No children:URL 没带 node-id,Agent 读的是整文件根节点但摘要被截断。务必 Copy link to selection。

生成代码全是 inline style:prompt 没约束栈。补一句「项目用 Tailwind v4 + shadcn,禁止 inline style,颜色用 CSS variable」。

和图片差一截:常见是 border-radius 或 box-shadow 在 API 摘要里被省略。打开 Figma inspect 补两项,或截图局部让 Agent 只修 shadow。

和 design handoff 文档怎么配合?

单靠 MCP 不能替代设计说明。建议在 Figma 同页加一页「Handoff」frame,纯文字列出:breakpoint 行为、空态文案、错误态、埋点 id。Agent 读 layout frame 之前先 @ 这个 Handoff frame 的链接,生成代码时会把业务规则一起带上。

若团队用 Storybook,生成组件后补一条 story:DefaultHoverDisabledLoading 四态。设计验收不再靠「肉眼对 Figma 网页」,而是 reviewer 在 Storybook 里点。这和前面 PR 检查清单里的状态节是同一套标准,只是提前到组件级。

常见问题

Cursor 里 MCP 显示连接失败怎么办?

先终端手动跑 npx -y figma-developer-mcp --figma-api-key=$FIGMA_API_KEY --stdio,看是否报 token 无效。Windows 检查是否用了 cmd /c 包装。Node 版本过旧也会导致 npx 拉包失败。

可以一次转换整页 Landing 吗?

不建议。整页节点树太大,模型会省略 section。按 section frame 拆分,每帧一个 PR commit,最后拼页面。

和 Figma Dev Mode 手写 CSS 比哪个快?

Dev Mode 适合人眼抄码;MCP 适合整组件骨架。Dev Mode 给的 CSS 往往不适配你的 Tailwind 约定,Agent 生成时声明「用 Tailwind utility,不要 inline style」更一致。

设计改了还要重跑 Agent 吗?

小改(颜色 token)人工 diff 更快。结构改(列数、breakpoint)重新 paste 新 node 链接让 Agent 读新版更稳。

参考资料