Figma MCP 使用完全指南
从安装配置到实战使用,再到踩坑排查的完整记录。
目录
- 什么是 Figma MCP
- 为什么用 figma-developer-mcp 而不是官方 MCP
- 前置准备
- 安装与配置
- 在 Claude Code 中使用
- 核心工具说明
- 实战示例:生成像素级 UI 代码
- 常见问题与解决思路
- 已知限制与注意事项
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 次 / 天 |
| Enterprise | 600 次 / 天 |
免费用户每月只有 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 MCP | figma-developer-mcp |
|---|---|---|
| 底层接口 | Dev Mode MCP Server | Figma REST API |
| 免费用户限额 | 6 次 / 月 | 无硬性配额 |
| 需要付费套餐 | 实用需要 Pro+ | 不需要 |
| 鉴权方式 | OAuth / Figma 内置授权 | Personal Access Token |
| 维护方 | Figma 官方 | 社区(GLips) |
结论: 对于免费账号,figma-developer-mcp 是唯一可以正常高频使用的选择。
3. 前置准备
3.1 获取 Figma API Key
- 登录 figma.com
- 点击右上角头像 → Settings
- 左侧菜单选择 Security
- 滚动到 Personal access tokens 区域
- 点击 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_data、get_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 文件的节点数据,返回完整的设计结构(层级、样式、文本、约束等)。
| 参数 | 类型 | 说明 |
|---|---|---|
fileKey | string | Figma 文件的 key |
nodeId | string | 目标节点 ID,不传则读取整个文件 |
depth | number | 读取层级深度,默认全量 |
get_images
导出指定节点的图片资源(PNG / SVG / JPG)。
| 参数 | 类型 | 说明 |
|---|---|---|
fileKey | string | Figma 文件的 key |
nodeIds | string[] | 要导出的节点 ID 列表 |
format | string | 导出格式:png / svg / jpg |
scale | number | 导出倍率,默认 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 相关工具。
排查步骤:
-
检查 Node.js 版本是否 >= 18:
node -v -
手动测试 npx 命令是否能正常拉取包:
npx -y figma-developer-mcp --help -
检查
~/.claude/settings.json的 JSON 格式是否合法(常见错误:多余的逗号、引号不匹配):cat ~/.claude/settings.json | python3 -m json.tool -
重启 Claude Code,观察启动日志中是否有 MCP 相关报错。
问题三:API Key 无效或权限不足
现象: 工具调用返回 401 Unauthorized 或 403 Forbidden。
排查步骤:
- 确认 token 是否完整复制(
figd_开头) - 在 Figma 设置中确认 token 未被撤销
- 确认你对目标文件有查看权限(View access)
- 如果文件属于团队/组织,确认 token 所属账号有访问权限
问题四:节点数据返回为空或不完整
现象: get_figma_data 返回的数据缺少某些图层或组件。
可能原因与解决方案:
- 节点 ID 错误:重新从 Figma URL 或右键菜单复制正确的 node-id
- 文件过大:尝试缩小范围,指定具体的子节点而非根节点
- 组件在其他文件:Figma 的跨文件组件引用需要分别读取各自的文件
- depth 限制:尝试不指定 depth 参数,让工具读取完整层级
问题五:生成的代码与设计稿偏差较大
现象: Claude 生成的代码在视觉上与 Figma 设计稿有明显差距。
优化建议:
- 缩小节点范围:不要一次性读取整个页面,按区域分块处理
- 明确技术栈:在 prompt 中指定框架(React / Vue / 纯 HTML)和 CSS 方案(Tailwind / CSS Modules)
- 提供上下文:告知 Claude 这是移动端还是桌面端设计
- 迭代修正:生成后对比截图,针对具体偏差的节点重新读取并修正
9. 已知限制与注意事项
| 限制 | 说明 |
|---|---|
| MCP 作用域 | 只能在主会话中调用,子代理(Agent)无法使用 |
| 图片资源 | get_images 返回的是临时 URL,有效期有限,需及时下载 |
| 复杂动画 | Figma 的 Prototype 动画信息无法通过 MCP 读取 |
| 字体 | 自定义字体需要在项目中单独引入,MCP 只返回字体名称 |
| 速率限制 | Figma API 有请求频率限制,短时间内大量调用可能触发 429 |
| 私有组件库 | 跨文件的组件引用需要分别读取各自的源文件 |
总结
Figma MCP 极大地缩短了从设计到代码的距离,核心工作流是:
- 在
~/.claude/settings.json配置好 API Key - 从 Figma URL 提取 file key 和 node-id
- 在主会话中直接调用 MCP 工具,不要通过子代理中转
- 按区域分块读取,迭代优化生成质量
最容易踩的坑是通过 Agent 子代理调用 MCP——子代理没有主会话的 MCP 上下文,调用会静默失败。记住这一点,能省去大量调试时间。