关于 TalkToFigma
TalkToFigma 是一个 MCP 服务,连接 Cursor、Claude Code 等 AI Agent 与 Figma,使 Agent 能够读取设计稿并以编程方式修改。适合希望用自然语言批量处理 Figma 设计的设计师和开发者。项目由 TypeScript MCP 服务、WebSocket 服务和 Figma 插件组成。
主要功能
- 01读取 Figma 文档与选区信息
- 02创建和修改图形、文本与框架
- 03批量替换文本内容
- 04Auto Layout 与样式设置
- 05标注与原型连接线管理
适用场景
- 01批量替换设计稿中的文本内容
- 02将组件实例的覆盖属性同步到多个实例
- 03把原型连接关系转换为 FigJam 连接线
MCP 相关
该项目是 MCP 服务,通过 WebSocket 与 Figma 插件通信,向 Cursor、Claude Code 等 MCP 客户端暴露读取、创建、修改 Figma 设计的工具,并提供若干辅助提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
与 Figma MCP 对话
本项目实现了 AI Agent(Cursor、Claude Code)与 Figma 之间的模型上下文协议(MCP)集成,让 AI Agent 能够与 Figma 通信,以编程方式读取和修改设计。
https://github.com/user-attachments/assets/129a14d2-ed73-470f-9a4c-2240b2a4885c
项目结构
src/talk_to_figma_mcp/- 用于集成 Figma 的 TypeScript MCP 服务src/cursor_mcp_plugin/- 用于与 Cursor 通信的 Figma 插件src/socket.ts- 用于促进 MCP 服务与 Figma 插件通信的 WebSocket 服务
使用方法
- 如果尚未安装 Bun,请先安装:
curl -fsSL https://bun.sh/install | bash
- 运行安装程序,这也会在 Cursor 当前项目中安装 MCP
bun setup
- 启动 WebSocket 服务
bun socket
- 全新 从 Figma 社区页面安装 Figma 插件,或在本地安装
快速视频教程
设计自动化示例
批量替换文本内容
感谢 @dusskapark 贡献批量替换文本功能。这里是演示视频。
实例覆盖传播 另一项来自 @dusskapark 的贡献。 只需一条命令,即可将源实例的组件实例覆盖传播到多个目标实例。此功能在处理需要相似自定义设置的组件实例时,可大幅减少重复设计工作。请观看我们的演示视频。
手动设置与安装
MCP 服务:与 Cursor 集成
将服务添加到 Cursor 的 MCP 配置 ~/.cursor/mcp.json 中:
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": ["cursor-talk-to-figma-mcp@latest"]
}
}
}
WebSocket 服务
启动 WebSocket 服务:
bun socket
Figma 插件
- 在 Figma 中,依次进入 Plugins > Development > New Plugin
- 选择“Link existing plugin”
- 选择
src/cursor_mcp_plugin/manifest.json文件 - 该插件现在应显示在 Figma 的开发插件中
Windows + WSL 指南
- 使用 PowerShell 安装 Bun
powershell -c "irm bun.sh/install.ps1|iex"
- 在
src/socket.ts中取消0.0.0.0主机名的注释
// uncomment this to allow connections in windows wsl
hostname: "0.0.0.0",
- 启动 WebSocket
bun socket
用法
- 启动 WebSocket 服务
- 在 Cursor 中安装 MCP 服务
- 打开 Figma 并运行 Cursor MCP 插件
- 使用
join_channel加入频道,将插件连接到 WebSocket 服务 - 使用 Cursor 通过 MCP 工具与 Figma 通信
本地开发设置
如需进行开发,请更新 MCP 配置,使其指向本地目录。
{
"mcpServers": {
"TalkToFigma": {
"command": "bun",
"args": ["/path-to-repo/src/talk_to_figma_mcp/server.ts"]
}
}
}
MCP 工具
MCP 服务提供以下工具,用于与 Figma 交互:
文档与选区
get_document_info- 获取当前 Figma 文档的信息get_selection- 获取当前选区的信息read_my_design- 无需参数即可获取当前选区的详细节点信息get_node_info- 获取特定节点的详细信息get_nodes_info- 通过提供节点 ID 数组,获取多个节点的详细信息set_focus- 选中指定节点并滚动视口至该节点,以将焦点设在此节点上set_selections- 选中多个节点并滚动视口以显示它们
注释
get_annotations- 获取当前文档或指定节点中的所有注释set_annotation- 创建或更新注释,支持 Markdownset_multiple_annotations- 高效地批量创建或更新多个注释scan_nodes_by_types- 扫描指定类型的节点(可用于查找注释目标)
原型与连接
get_reactions- 获取节点的所有原型交互,并通过视觉高亮动画突出显示set_default_connector- 将复制的 FigJam 连接线设为创建连接时的默认连接线样式(必须在创建连接前设置)create_connections- 根据原型流程或自定义映射,在节点之间创建 FigJam 连接线
创建元素
create_rectangle- 创建新的矩形,并设置位置、尺寸和可选名称create_frame- 创建新的画框,并设置位置、尺寸和可选名称create_section- 创建一个区段,用于在画布上归类相关内容create_text- 创建新的文本节点,并自定义字体属性
修改文本内容
scan_text_nodes- 扫描文本节点,并对大型设计进行智能分块处理set_text_content- 设置单个文本节点的内容set_multiple_text_contents- 高效批量更新多个文本节点
自动布局与间距
set_layout_mode- 设置画框的布局模式和换行行为(NONE、HORIZONTAL、VERTICAL)set_padding- 设置自动布局画框的内边距值(上、右、下、左)set_axis_align- 设置自动布局画框的主轴和交叉轴对齐方式set_layout_sizing- 设置自动布局画框的水平和垂直尺寸模式(FIXED、HUG、FILL)set_item_spacing- 设置自动布局画框中子元素之间的间距
样式
set_fill_color- 设置节点的填充颜色(RGBA)set_stroke_color- 设置节点的描边颜色和粗细set_corner_radius- 设置节点的圆角半径,并可选择分别控制各个角set_image_fill- 使用本地文件路径、URL 或 base64 数据为节点填充图像(FILL、FIT、CROP 或 TILE)
布局与组织
move_node- 将节点移动到新位置resize_node- 使用新尺寸调整节点大小delete_node- 删除节点delete_multiple_nodes- 高效地一次删除多个节点clone_node- 创建现有节点的副本,并可选择设置位置偏移rename_node- 重命名节点set_parent- 将节点移入新的父级(区段、画框或组),默认保留其绝对位置
组件与样式
get_styles- 获取本地样式的信息get_local_components- 获取本地组件的信息create_component_instance- 创建组件实例get_instance_overrides- 提取所选组件实例的覆盖属性set_instance_overrides- 将提取的覆盖属性应用到目标实例
导出与高级功能
export_node_as_image- 将节点导出为图像(PNG、JPG、SVG 或 PDF)——目前对图像的支持有限,当前仅以文本形式返回 base64
连接管理
join_channel- 加入指定频道以与 Figma 通信
MCP 提示词
MCP 服务包含多个辅助提示词,帮助你完成复杂的设计任务:
design_strategy- 使用 Figma 设计的最佳实践read_design_strategy- 读取 Figma 设计的最佳实践text_replacement_strategy- 在 Figma 设计中替换文本的系统化方法annotation_conversion_strategy- 将手动标注转换为 Figma 原生标注的策略swap_overrides_instances- 在 Figma 的组件实例之间转移覆盖属性的策略reaction_to_connector_strategy- 使用get_reactions的输出将 Figma 原型交互转换为连接线,并指导按顺序使用create_connections
开发
构建 Figma 插件
-
导航到 Figma 插件目录:
cd src/cursor_mcp_plugin -
编辑 code.js 和 ui.html
最佳实践
使用 Figma MCP 时:
- 发送命令前,始终先加入频道
- 首先使用
get_document_info获取文档概览 - 修改前使用
get_selection检查当前选区 - 根据需要使用适当的创建工具:
- 使用
create_frame创建容器 - 使用
create_rectangle创建基本形状 - 使用
create_text创建文本元素
- 使用
- 使用
get_node_info验证更改 - 尽可能使用组件实例,以保持一致性
- 妥善处理错误,因为所有命令都可能抛出异常
- 对于大型设计:
- 在
scan_text_nodes中使用分块参数 - 通过 WebSocket 更新监控进度
- 实施适当的错误处理
- 在
- 对于文本操作:
- 尽可能使用批量操作
- 考虑结构关系
- 使用有针对性的导出验证更改
- 转换旧版注释时:
- 扫描文本节点,识别带编号的标记和说明
- 使用
scan_nodes_by_types查找注释所指向的 UI 元素 - 根据路径、名称或邻近程度,将标记与目标元素匹配
- 使用
get_annotations对注释进行适当分类 - 使用
set_multiple_annotations批量创建原生注释 - 验证所有注释是否都已正确关联到目标
- 转换成功后,删除旧版注释节点
- 将原型流程线可视化为 FigJam 连接线:
- 使用
get_reactions提取原型流程, - 使用
set_default_connector设置默认连接线, - 并使用
create_connections生成连接线,以清晰地映射视觉流程。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。