MCP 这个词在技术圈刷屏的速度,比 Vue 发新版本还快。前阵子我接到一个需求:照着设计稿把一个数据看板页面还原成 Vue 组件。以前这种活,我都是先打开 Figma 拼命量尺寸、记颜色、导切图,一个页面下来至少要半天。这次我试着用 Figma MCP 把设计稿直接接到了 AI 工具里,让它辅助我完成整个 Vue 页面的还原,从读取图层到生成 SFC,效率提升比我预想得还要明显。
这篇文章不会只贴一段配置然后让你自己琢磨。我会从"MCP 到底是什么"讲起,再讲为什么 Figma MCP 能让设计稿被 AI"看见",最后给出一套从 Figma 到 Vue 的可复现流程,以及我实测下来容易翻车的地方。写给两类人:一是想把 AI 接入设计稿还原链路的前端工程师,二是已经装了 MCP 工具但不知道怎么用来实际干活的人。不管你是刚接触 Vue 新手,还是已经写了好几年业务页面的老手,只要手里有 Figma 设计稿、身边有 AI 工具,这篇内容应该都能直接转到你自己的项目里用。
1. MCP 的定位:它不是又一个接口规范,而是 AI 接入世界的"USB 接口"
1.1 一句话解释 MCP,以及它为什么值得关注
MCP 的全称是 Model Context Protocol,模型上下文协议,由 Anthropic 在 2024 年底开源。它的目标很简单:把 AI 模型与外部工具、数据源之间的通信方式标准化。你可以把它当成 AI 世界的 USB 接口来理解——USB 统一了键盘、鼠标、打印机的接入方式,MCP 统一了 AI 应用和各种外部服务之间的连接方式。
为什么这件事很重要?因为在 MCP 出现之前,AI 应用想接入一个新工具,通常要给这个工具单独写一套适配逻辑。你想让 AI 读数据库,要写数据库插件;想让 AI 读浏览器,要写浏览器插件;想让 AI 读设计稿,还得再写一套 Figma 插件。每一套都是定制的、不可复用的,而且不同 AI 应用之间的实现还互不兼容。MCP 的贡献在于,它把"工具如何被 AI 发现和调用"这个环节标准化了。工具方把能力封装成一个 server,AI 方实现标准的 client,大家按同一套协议对话。这也是过去一年 MCP 相关仓库增长速度非常快的原因,主流 AI 工具几乎都在往这个方向靠。
这里有一个容易混淆的点:MCP 和 REST、gRPC 这类接口规范不是一个层级的东西。REST 解决的是"HTTP 请求长什么样",MCP 解决的是"模型如何发现并调用外部能力"。它把工具发现、调用协商、上下文传递这些模型场景才需要的东西都包进去了。你可以直接把它记成"AI 世界的数据连接协议",这样后面看配置就不会懵。
1.2 没有 MCP 之前,AI 读取设计稿有多别扭
以"还原 Vue 页面"这个场景为例,没接 MCP 的时候我试过几种土办法,体验都不太理想:
- 直接把设计稿截图丢给多模态模型。它能看懂整体布局,但拿不到精确的坐标、间距、颜色值,还原出来的页面经常是"看起来像,细节经不起对比"。
- 手动从 Figma 的 Dev Mode 里复制属性。一个按钮还好,一个复杂页面能把人复制到崩溃,而且复制出来的样式要经过大量手工调整才能放进 Vue 组件里。
- 自己写脚本调 Figma REST API,拿回 JSON 再加工。这个方案成本明显更高,相当于为了一个还原任务写了一套专用管道,换一个设计平台或者换一种 AI 工具,管道就废了。
这些方式的核心问题不是"能不能实现",而是"太定制化"。每接入一个数据来源,AI 工具就要重新适配一套格式。MCP 想解决的,恰恰是这个碎片化问题。当设计稿、代码仓库、数据库、浏览器这些工具都通过 MCP 接入,AI 对你而言就是一个能自由操作这些工具的"通用员工",而不是某个只能读某种数据的专用机器人。
1.3 MCP 的三层角色:Host、Client、Server
真正配置 MCP 的时候,你会反复看到三个词:Host、Client、Server。它们的关系可以这样理解:
- Host 是你正在用的 AI 应用界面,比如 Claude Desktop、Cursor、VS Code 里的 Cline 或 Roo Code 插件。它是你和模型对话的入口,也是 MCP Server 配置真正生效的地方。
- MCP Client 是 Host 内部的协议客户端,负责和 Server 建立连接、传输请求和结果。普通用户一般不用直接写 Client 代码,配置工具会自动处理。
- MCP Server 是一个独立运行的轻量程序,通过统一的协议暴露能力。它可以跑在本机,通过 stdio 与客户端通信;也可以跑在远程服务器上,通过 HTTP/SSE 等方式访问。
一个 MCP Server 能暴露三类能力:Tools、Resources、Prompts。Tools 是模型可以调用的动作,比如"读取当前设计稿的选中节点";Resources 是模型可以读取的数据,比如设计文件里的样式变量列表;Prompts 是预置的提示词模板,方便复用常见任务。Figma MCP 主要就是通过 Tools 和 Resources 这两类能力,把设计信息提供给模型。你在配置界面看到某个 MCP Server 的时候,不用想得太玄,它本质上就是一个可执行命令加上几个环境变量。第三节我会具体演示怎么把它跑起来。
2. Figma MCP 让设计稿从"图片"变成了"结构化数据"
2.1 为什么 AI 本来"看不见"Figma 设计稿
很多人第一次接触 Figma MCP 时会有个疑问:我不就是把设计稿截图给 AI 了吗,为什么还需要一个协议层?问题在于,Figma 设计稿的原始信息根本不在图片里。你把设计稿截图发给 AI,它看到的是像素,不是数据。设计稿里精确到 0.1px 的间距、某个图层的填充色、文本的字号和行高,这些信息在截图里虽然"有",但无法被结构化读取,AI 只能靠视觉推理去猜。
而 Figma 云端文件本身是结构化数据:有页面、有画板、有图层树,每个节点都有类型、名称、坐标、尺寸、样式属性。Figma MCP 做的事情,就是通过 Figma API 读取这些结构化数据,再以 MCP 格式暴露给 AI。相当于在设计稿和模型之间打了一条数据管道,让 AI 拿到的是"文件内容"而不是"图片内容"。
所以标题里那个"辅助"很关键。MCP 不是把 AI 变成能读懂一切图片的魔法师,而是把设计稿变成 AI 可以可靠读取的数据源。没有这条管道,AI 的还原工作很大程度靠猜;有了这条管道,它是在一个明确的、结构化的输入上去做翻译。
2.2 Figma MCP 能暴露哪些具体信息
我实际跑下来,Figma MCP 主要能拿到这些信息:
- 文件结构:页面、画板的列表与层级关系
- 图层信息:每个节点的类型、名称、坐标、尺寸
- 样式属性:填充、描边、圆角、阴影、模糊;文本的字体、字号、行高、字重、字距
- 自动布局信息:Auto Layout 的方向、间距、内边距、对齐方式
- 设计变量:Figma Variables 里定义的颜色、字号、间距等 token
- 组件信息:设计系统里的组件和实例,以及组件属性、变体
- 标注信息:Dev Mode 下的注释、标注、说明
- 选中状态:当前选中节点的路径、类型、名称
对还原 Vue 页面来说,这些信息几乎正好覆盖了"生成代码所需的全部元数据"。特别是 Auto Layout 信息和设计变量,它们让 AI 可以直接把排版逻辑翻译成 flex 布局,把设计 token 映射成 CSS 变量。这一点比传统的手工截图还原方式靠谱得多。
2.3 "辅助还原"到底辅助在哪一步
要特别说清楚的是,Figma MCP 并不会自动生成 Vue 页面。它只是一个数据来源。真正的还原动作,是由你在 Host 里配置的 AI 模型完成的。模型通过 MCP 工具读取设计稿,然后把图层结构翻译成 Vue 的 template,把样式属性翻译成 CSS,把交互逻辑补充到 script 里。整条链路里,MCP 解决的是"输入侧"的问题,让 AI 拿到准确、干净、结构化的设计稿信息。
所以还原质量实际上取决于三件事:设计稿本身的质量(命名是否规范、是否用了组件和自动布局)、MCP Server 返回的数据是否完整、以及你给 AI 的提示词是否精准。这三者里,提示词是最容易被忽视但性价比最高的一环,我会在下一节展开。
3. 从 Figma MCP 到 Vue 页面:一套可落地的还原流程
3.1 开局准备:文件、令牌、MCP Server
要跑通这条链路,你需要准备四样东西:
- 一个有权限的 Figma 文件。建议使用自己公司或自己有编辑权限的项目,社区文件可能有授权限制,读取时会缺信息。
- 一个 Figma Personal Access Token。在 Figma 右上角头像 -> Settings -> Security -> Personal access tokens 里生成。生成时尽量只给它读取文件内容的权限,不要图省事开编辑权限。
- 一个支持 MCP 的客户端。Claude Desktop、Cursor、VS Code 下的 Cline / Roo Code 都可以,我后面会给配置示例。
- 一个 Figma MCP Server。社区里最常用的是 figma-developer-mcp,Anthropic 的文档里也把 Figma 作为典型示例推荐。安装方式基本就是通过 npx 拉起来,需要本机有 Node.js 环境。
这里有个容易被忽略的准备工作:确认你的 Figma 文件里已经开启了 Dev Mode,或者至少当前文件可以被 API 正常读取。否则 MCP Server 能连上,但返回的数据可能残缺不全,导致后面 AI 拿到的图层信息像被打了马赛克。
3.2 客户端配置:Claude Desktop 和 VS Code 两个示例
以 Claude Desktop 为例,配置文件在 Claude 菜单 -> Settings -> Developer -> Edit Config 里打开 claude_desktop_config.json,加上一段 mcpServers:
{ "mcpServers": { "figma-dev": { "command": "npx", "args": [ "-y", "figma-developer-mcp", "--stdio" ], "env": { "FIGMA_API_KEY": "替换成你的Figma只读令牌" } } } }注意:不同版本的 server 对参数要求不一样,有的需要显式加--stdio,有的还要求--port=3177。我第一次配置时就是因为少加了--stdio,Claude Desktop 一直显示连接失败。遇到这种情况,直接去看你选用的 MCP Server 的 README,照着里面最新的启动参数填。
如果你用 VS Code,配置入口通常在 Cline 或 Roo Code 的 MCP Server 面板里。本质上也是填一份 JSON,结构几乎一样:
{ "mcpServers": { "figma": { "command": "npx", "args": ["-y", "figma-developer-mcp"], "env": { "FIGMA_API_KEY": "替换成你的Figma只读令牌" } } } }配置完成后重启客户端,看到 MCP Server 状态变成 connected,就说明连接成功。这时候 AI 工具会自动获得一组工具描述,比如"读取文件节点""读取当前选中元素""获取样式变量列表"等。
3.3 写提示词的几个关键技巧
配置好 MCP 之后,真正决定还原效果的是提示词。我第一次直接用"把设计稿还原成 Vue 页面"这种模糊说法,结果 AI 读了一堆无关节点,上下文窗口被塞爆,输出又长又乱。后面我总结出几个技巧:
- 先定位范围。明确告诉 AI 读取哪个文件、哪个页面、哪个画板。比如"只关注名为 dashboard-home 的 Frame",不要让它在整个文件里漫游。
- 要求先方案后代码。让模型先输出页面结构分析、需要处理的图片资源、可能缺失的信息,确认后再写 Vue。这个"先规划后执行"的习惯能显著减少返工。
- 把技术栈写死。Vue 3 + TypeScript、Composition API、scoped CSS,还是需要 Tailwind?这些必须写在提示词里,不能靠 AI 猜。
- 约定还原基线。是"像素级还原"还是"语义级还原"?一个用了 Auto Layout 的组件,AI 可以自动转成 flex;如果设计稿里有大量绝对定位,你需要让它说明为何保留绝对定位,避免代码里埋雷。
- 补业务语义。设计稿里一个按钮如果只是文本"提交订单",你不告诉 AI 它属于什么业务场景,AI 只能还原外表,取不出有意义的变量名和事件名。你可以在提示词里点一句"这个按钮点击后要提交表单数据",生成结果立刻会合理很多。
我常用的提示词模板大概是这样:
"请通过 MCP 工具读取当前 Figma 文件里的 dashboard-home 画板。先把图层层级、Auto Layout 参数、颜色和字号变量整理成一份清单;然后基于这份清单,生成一个 Vue 3 + TypeScript 的单文件组件,使用 Composition API 和 scoped CSS。注意:布局尽量使用 flex/grid,间距和字号从设计变量映射为 CSS 变量;图片资源先输出需要导出的清单,不要直接使用尚不存在的 URL。生成代码之前,先说明你的还原方案。"
3.4 还原的产出物和后续处理
用上面的模板跑完一次,AI 一般会产出这些内容:
- 一个 Vue 单文件组件,包含 template、script、style
- 如果页面复杂,它可能会自动拆成多个子组件
- 一份设计变量映射表,把 Figma Variable 对应到 CSS 变量名
- 需要导出的图片资源清单
- 它认为存在的不确定点,比如阴影、渐变、hover 状态这些需要人工确认的地方
这里要强调一点:MCP Server 本身不负责导出位图资源。图片填充这类场景,MCP 返回的是图片引用信息,实际下载 PNG/WebP 需要调用 Figma REST API 的图片导出接口。你可以让 AI 生成一段批量下载脚本,也可以手动从 Figma 导出后放到本地 assets 目录。我的习惯是让 AI 输出一个"资源清单+下载命令",而不是让它直接把图片地址写死在 Vue 里,这样后续换图、压缩、走 CDN 都更灵活。
4. 实测还原一个 Vue 页面:顺滑的部分和翻车的现场
4.1 哪些环节体验很顺
我拿一个实际的中后台看板页面做了测试,页面里包含侧边栏、卡片、表格、图表区块。实测下来,最顺滑的部分集中在这几块:
- 基础样式属性还原准确率高得惊人。纯色、圆角、内边距、字体大小这些,AI 从 MCP 读到的就是数值,生成出来的 CSS 几乎不需要改。
- Auto Layout 信息翻译成 flex 布局非常自然。设计稿里写清楚了 direction: HORIZONTAL、spacing: 16、padding: 24,AI 直接生成
display:flex; gap:16px; padding:24px;,语义完全对得上。 - 设计变量联动很舒服。Figma Variables 里定义的主色、间距、字号,AI 能统一映射成 CSS 变量,后续改主题时不用满文件找硬编码的颜色值。
- 图层命名规范的设计稿,AI 会大概率使用语义化标签。按钮是 Button/Primary,它就生成
<button class="primary">,而不是一个<div class="box">。
这部分体验让我确定了一件事:Figma MCP 在"标准化设计稿"面前是真的能省时间的。它不是在玩具场景里好用,而是能在真实业务页面里减少大量机械劳动。
4.2 最容易翻车的六个地方
顺滑归顺滑,翻车现场也不少。我踩出来的问题基本集中在六个点:
- Group 和 Frame 的误判。Figma 里 Group 只是图层分组,很多时候不需要渲染成 DOM 元素。AI 拿到图层树后,习惯性给每个 Group 包一层 div,导致嵌套层级过深。解决方法是在提示词里明确写"Group 不一定渲染为元素,根据布局需要合并或忽略"。
- 图片填充的引用问题。设计稿里的插画、背景图是以图片填充形式存在的,MCP 返回的可能是 imageRef 或某个 API 端点,AI 如果直接把这个地址写进
<img src>或者 CSS background,大概率是坏链。正确做法是把图片导出独立出来,不要让 AI 假设图片 URL 已经可用。 - 复杂阴影和特效。投影有 offsetX、offsetY、blur、spread 四个参数,AI 偶尔会漏掉 spread,或者把内阴影直接忽略。背景模糊、混合模式这些效果,基本还是需要人手工补。
- 固定尺寸与响应式脱节。设计稿是一张 1440px 宽的图,AI 默认就可能生成
width: 1440px。如果你的 Vue 页面还要适配移动端,提示词里必须强制要求 flex/grid 布局,并明说需要考虑断点。 - 连接层的权限问题。Figma token 过期、文件没有授权、或者客户端和服务端的 MCP 协议版本不匹配,都会导致读取失败。我遇到过 token 刚生成一天就失效的情况,查了半天才发现是权限范围没给够。
- 上下文溢出。设计稿复杂时,MCP 返回的 JSON 可能非常大,AI 的上下文窗口根本装不下。解决办法是缩小读取范围,一次只处理一个 Frame,或者让 AI 先读取节点列表再按需读取细节。
4.3 我的兜底处理策略
踩了几次坑以后,我现在形成了稳定的兜底策略:
- 画板粒度优先。绝不一次让 AI 处理整个页面文件,而是按 Frame/Section 分批读取、分批生成。
- 先让 AI 输出"信息摘要",再让它生成代码。摘要阶段能提前暴露设计稿里的异常,比如某个图层重复了、某个图片节点根本没有实际内容。
- 生成的代码必过一轮人工审查。重点看语义化标签、可访问性、响应式断点,这些是 AI 最容易想当然的地方。
- 图片、图标资源统一走单独目录管理。AI 生成的组件里我只保留资源引用路径,不把任何内联 base64 或临时 URL 留在代码里。
这套策略跑下来,一个中等复杂度的页面从设计稿到可运行的 Vue 页面,大约能省掉一半的机械工时。省下来的时间可以投入到真正的交互细节和逻辑处理上。
5. 团队落地建议:什么时候该上 Figma MCP,什么时候别硬上
5.1 适合接入的场景与前置条件
如果你在评估团队要不要引入 Figma MCP,我的判断是:以下场景回报率最高。
- 中后台系统页面、数据看板、表单页。这类页面结构规整、组件复用度高、样式相对统一,AI 还原后只需要少量人工修正。
- 设计系统已比较完善的项目。设计师使用了 Auto Layout、Variants、Variables,Figma MCP 能拿到的高质量信息就越多,AI 的还原精度会明显上升。
- 快速原型验证。产品经理想看看设计稿变成可点击的 Vue 页面大概什么效果,以前要排期让前端做,现在我可以花二十分钟跑一版出来,决策成本低很多。
- 组件库开发时的 token 平移。把设计稿里的颜色、字号、间距变量批量映射成 CSS 变量,MCP 平台下的效率和准确性远超手工复制。
但要满足一个前置条件:设计稿本身要合格。图层名不能全是"Frame 1""Frame 2 copy",布局不能全靠绝对定位,颜色不能全是硬编码。否则 MCP 拿到的数据本身就是一堆混乱信息,AI 再聪明也还原不出干净代码。
5.2 不适合的场景
反过来,下面这些情况不建议硬上:
- 大面积插画、复杂渐变、毛玻璃、3D 渲染这类高保真视觉稿。AI 目前很难还原到像素级,与其让它生成一堆魔改代码,不如手写。
- 图层混乱、没有组件化、没有自动布局的设计稿。输入侧信息质量差,MCP 只能保证传输,不能保证内容。
- 设计稿还在高频迭代阶段。今天改一下间距,明天换一块视觉,每次变化都要重新跑一遍提示词,维护成本可能反而比手写高。
- 对代码可访问性和语义要求极高的项目。AI 生成的代码在 aria 标签、焦点管理、键盘操作这些方面还是不够稳定,需要大量人工润色。
5.3 引入时的规范与安全注意事项
如果决定引入,我建议按这几步走,能少踩很多团队协作层面的坑:
- 先试点,再铺开。挑一个标准页面跑通全流程,把团队的提示词模板固定下来,不要每个人各写各的。
- 推动设计侧规范化。约定组件命名、使用 Auto Layout、把颜色字体放进 Variables。这件事对还原质量的影响,超过任何参数调优。
- 把 AI 生成的内容当"初稿"而不是"成品"。每次生成后都要有 code review,重点审查语义化、可访问性、边界状态、响应式。
- 注意 token 安全。Figma Personal Access Token 属于高权限凭证,只分配必要权限,定期轮换,绝不写进公开仓库或聊天工具。MCP Server 尽量在本地跑,不要把内网服务轻易暴露到公网。
这些不是空泛的建议,都是我实际在团队里踩过坑后沉淀下来的原则。MCP 这条链路本身不复杂,真正复杂的是把它放进一个有既有规范、既有代码库、既有协作流程的团队里,还不让它制造新的混乱。
最后再分享一个我个人的小习惯:每次用 Figma MCP 还原完页面,我会顺手把提示词模板更新一下,把这次踩到的"AI 犯的错"作为反面示例补充进去。比如"不要给每个 Group 生成独立 DOM 包裹层"、"图片填充必须走资源清单,不要直接使用 imageRef 地址"。这些经验积累下来,会变成团队内部的 MCP 使用手册,比任何官方文档都实用。