Claude使用Figma MCP 开发UI设计

7 阅读9分钟

Figma MCP 使用完全指南

从安装配置到实战使用,再到踩坑排查的完整记录。


目录

  1. 什么是 Figma MCP
  2. 为什么用 figma-developer-mcp 而不是官方 MCP
  3. 前置准备
  4. 安装与配置
  5. 在 Claude Code 中使用
  6. 核心工具说明
  7. 实战示例:生成像素级 UI 代码
  8. 常见问题与解决思路
  9. 已知限制与注意事项

1. 什么是 Figma MCP

MCP(Model Context Protocol)是 Anthropic 推出的一套开放协议,允许 AI 模型通过标准化接口调用外部工具和服务。

Figma MCP 是基于该协议实现的 Figma 集成工具,让 Claude 能够直接读取 Figma 设计文件的结构、样式、组件信息,从而:

  • 将设计稿转换为高还原度的前端代码(HTML / Tailwind / React 等)
  • 提取设计 token(颜色、字体、间距)
  • 读取组件层级与布局信息
  • 导出设计资源图片

目前社区常用的实现包是 figma-developer-mcp,也称 figma-free


2. 为什么用 figma-developer-mcp 而不是官方 MCP

官方 Figma MCP 的限制

Figma 在 2025 年推出了官方的 Dev Mode MCP Server,但调用次数按套餐严格限制:

套餐限额
Starter(免费)/ View / Collab 席位6 次 / 月
Pro / Organization(Full 或 Dev 席位)200 次 / 天
Enterprise600 次 / 天

免费用户每月只有 6 次调用,在实际开发中几乎不够用——读取一个页面的设计数据就可能消耗掉好几次配额。

figma-developer-mcp 的原理

这个社区包(由开发者 GLips 维护)走的是完全不同的路径,直接调用 Figma 的 REST API,用 Personal Access Token 鉴权:

官方 MCP:   Claude → Figma Dev Mode MCP Server → 受套餐配额限制  ❌(免费用户)
社区 MCP:   Claude → Figma REST API(Personal Access Token)→ 无套餐配额墙  ✅

REST API 有速率限制(防止短时间爆发请求),但没有"每月 6 次"这种硬性配额,免费账号也能正常使用。

两者对比

对比项官方 Figma MCPfigma-developer-mcp
底层接口Dev Mode MCP ServerFigma REST API
免费用户限额6 次 / 月无硬性配额
需要付费套餐实用需要 Pro+不需要
鉴权方式OAuth / Figma 内置授权Personal Access Token
维护方Figma 官方社区(GLips)

结论: 对于免费账号,figma-developer-mcp 是唯一可以正常高频使用的选择。


3. 前置准备

3.1 获取 Figma API Key

  1. 登录 figma.com
  2. 点击右上角头像 → Settings
  3. 左侧菜单选择 Security
  4. 滚动到 Personal access tokens 区域
  5. 点击 Generate new token,填写名称后复制 token

token 格式通常为 figd_ 开头的长字符串,只显示一次,请立即保存

3.2 获取 Figma 文件信息

打开目标 Figma 文件,从 URL 中提取关键参数:

https://www.figma.com/design/{FILE_KEY}/...?node-id={NODE_ID}
  • FILE_KEY:URL 中 /design/ 后面的那段字符串,例如 oN5e9fcV9MAIoZGseiUTrc
  • NODE_ID:URL 参数 node-id 的值,例如 0-1(表示根节点)

3.3 环境要求

依赖版本要求
Node.js>= 18
npm / npx随 Node.js 附带
Claude Code最新版本

4. 安装与配置

4.1 配置 MCP Server

Figma MCP 通过 npx 按需拉取,无需手动安装包。只需在 Claude Code 的配置文件中声明即可。

编辑 ~/.claude/settings.json,在 mcpServers 字段中添加:

{
  "mcpServers": {
    "figma-free": {
      "command": "npx",
      "args": [
        "-y",
        "figma-developer-mcp",
        "--figma-api-key=YOUR_FIGMA_API_KEY_HERE",
        "--stdio"
      ]
    }
  }
}

YOUR_FIGMA_API_KEY_HERE 替换为第 2.1 步获取的 token。

4.2 验证配置生效

重启 Claude Code 后,在对话中输入:

列出当前可用的 MCP 工具

如果看到 get_figma_dataget_images 等工具名称,说明配置成功。

也可以通过 Claude Code 的 /mcp 命令查看已连接的 MCP 服务器状态。

4.3 安全提示

API Key 是敏感凭证,注意以下几点:

  • 不要将含有 API Key 的 settings.json 提交到 Git 仓库
  • 建议在 .gitignore 中排除 ~/.claude/settings.json(通常该文件在 home 目录,不在项目内,风险较低)
  • 如果 Key 泄露,立即在 Figma 设置中撤销并重新生成

5. 在 Claude Code 中使用

5.1 基本调用方式

配置完成后,直接在主会话中告诉 Claude 你想读取的文件:

请使用 figma-free MCP 工具读取以下 Figma 文件:
- file key: oN5e9fcV9MAIoZGseiUTrc
- node-id: 0-1

生成对应的 HTML + Tailwind CSS 代码

Claude 会自动调用 get_figma_data 工具获取设计数据,然后生成代码。

5.2 指定具体节点

如果只需要某个组件或页面,可以指定更精确的 node-id:

读取 Figma 文件 {FILE_KEY},节点 {NODE_ID}(这是首页的 Hero 区域),
生成 React + Tailwind 组件代码,要求像素级还原。

node-id 可以在 Figma 中右键点击任意图层 → Copy link 获取,链接中包含该节点的 id。

5.3 提取设计 Token

读取 Figma 文件 {FILE_KEY},提取所有颜色变量和字体样式,
整理成 Tailwind 的 theme 配置格式输出。

6. 核心工具说明

figma-developer-mcp 提供以下主要工具:

get_figma_data

读取 Figma 文件的节点数据,返回完整的设计结构(层级、样式、文本、约束等)。

参数类型说明
fileKeystringFigma 文件的 key
nodeIdstring目标节点 ID,不传则读取整个文件
depthnumber读取层级深度,默认全量

get_images

导出指定节点的图片资源(PNG / SVG / JPG)。

参数类型说明
fileKeystringFigma 文件的 key
nodeIdsstring[]要导出的节点 ID 列表
formatstring导出格式:png / svg / jpg
scalenumber导出倍率,默认 1

7. 实战示例:生成像素级 UI 代码

以下是一个完整的工作流示例。

步骤一:确认设计稿信息

从 Figma URL 提取参数:

  • file key: oN5e9fcV9MAIoZGseiUTrc
  • node-id: 0-1(根节点,包含整个页面)

步骤二:向 Claude 发出指令

请使用 figma-free MCP 工具读取文件
file key: oN5e9fcV9MAIoZGseiUTrc
node-id: 0-1

要求:
1. 生成像素级 HTML + Tailwind CSS 完整代码
2. 保持原始字体大小、颜色、间距
3. 图片资源用占位符替代,标注原始尺寸
4. 响应式布局,移动端优先

步骤三:迭代优化

Claude 生成初版代码后,可以继续追问:

第三个卡片组件的间距和设计稿不一致,请重新读取节点 {CARD_NODE_ID} 并修正

8. 常见问题与解决思路

问题一:子代理无法调用 MCP 工具 ⚠️

现象: 在 Claude Code 中使用 Agent 工具启动子代理,子代理调用 figma-free 工具时静默失败或报错。

根本原因: MCP 工具的作用域绑定在主对话会话,子代理是独立进程,无法继承主会话的 MCP 上下文。

错误做法:

主会话 → Agent(子代理) → 调用 figma-free MCP  ❌

正确做法:

主会话 → 直接调用 figma-free MCP 工具  ✅

结论: 需要 MCP 工具时,始终在主会话中直接调用,不要通过 Agent 中转。


问题二:MCP 服务器启动失败

现象: Claude Code 启动后提示 MCP 连接失败,或工具列表中看不到 figma 相关工具。

排查步骤:

  1. 检查 Node.js 版本是否 >= 18:

    node -v
    
  2. 手动测试 npx 命令是否能正常拉取包:

    npx -y figma-developer-mcp --help
    
  3. 检查 ~/.claude/settings.json 的 JSON 格式是否合法(常见错误:多余的逗号、引号不匹配):

    cat ~/.claude/settings.json | python3 -m json.tool
    
  4. 重启 Claude Code,观察启动日志中是否有 MCP 相关报错。


问题三:API Key 无效或权限不足

现象: 工具调用返回 401 Unauthorized403 Forbidden

排查步骤:

  1. 确认 token 是否完整复制(figd_ 开头)
  2. 在 Figma 设置中确认 token 未被撤销
  3. 确认你对目标文件有查看权限(View access)
  4. 如果文件属于团队/组织,确认 token 所属账号有访问权限

问题四:节点数据返回为空或不完整

现象: get_figma_data 返回的数据缺少某些图层或组件。

可能原因与解决方案:

  • 节点 ID 错误:重新从 Figma URL 或右键菜单复制正确的 node-id
  • 文件过大:尝试缩小范围,指定具体的子节点而非根节点
  • 组件在其他文件:Figma 的跨文件组件引用需要分别读取各自的文件
  • depth 限制:尝试不指定 depth 参数,让工具读取完整层级

问题五:生成的代码与设计稿偏差较大

现象: Claude 生成的代码在视觉上与 Figma 设计稿有明显差距。

优化建议:

  1. 缩小节点范围:不要一次性读取整个页面,按区域分块处理
  2. 明确技术栈:在 prompt 中指定框架(React / Vue / 纯 HTML)和 CSS 方案(Tailwind / CSS Modules)
  3. 提供上下文:告知 Claude 这是移动端还是桌面端设计
  4. 迭代修正:生成后对比截图,针对具体偏差的节点重新读取并修正

9. 已知限制与注意事项

限制说明
MCP 作用域只能在主会话中调用,子代理(Agent)无法使用
图片资源get_images 返回的是临时 URL,有效期有限,需及时下载
复杂动画Figma 的 Prototype 动画信息无法通过 MCP 读取
字体自定义字体需要在项目中单独引入,MCP 只返回字体名称
速率限制Figma API 有请求频率限制,短时间内大量调用可能触发 429
私有组件库跨文件的组件引用需要分别读取各自的源文件

总结

Figma MCP 极大地缩短了从设计到代码的距离,核心工作流是:

  1. ~/.claude/settings.json 配置好 API Key
  2. 从 Figma URL 提取 file key 和 node-id
  3. 在主会话中直接调用 MCP 工具,不要通过子代理中转
  4. 按区域分块读取,迭代优化生成质量

最容易踩的坑是通过 Agent 子代理调用 MCP——子代理没有主会话的 MCP 上下文,调用会静默失败。记住这一点,能省去大量调试时间。