mcpField
T
TalkToFigma

TalkToFigma

本地服务
figma.com开发工具7.1k13 周前更新

关于 TalkToFigma

TalkToFigma 是一个 MCP 服务,连接 Cursor、Claude Code 等 AI Agent 与 Figma,使 Agent 能够读取设计稿并以编程方式修改。适合希望用自然语言批量处理 Figma 设计的设计师和开发者。项目由 TypeScript MCP 服务、WebSocket 服务和 Figma 插件组成。

主要功能

  1. 01读取 Figma 文档与选区信息
  2. 02创建和修改图形、文本与框架
  3. 03批量替换文本内容
  4. 04Auto Layout 与样式设置
  5. 05标注与原型连接线管理

适用场景

  1. 01批量替换设计稿中的文本内容
  2. 02将组件实例的覆盖属性同步到多个实例
  3. 03把原型连接关系转换为 FigJam 连接线

MCP 相关

该项目是 MCP 服务,通过 WebSocket 与 Figma 插件通信,向 Cursor、Claude Code 等 MCP 客户端暴露读取、创建、修改 Figma 设计的工具,并提供若干辅助提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cursor-talk-to-figma": {
"command": "npx",
"args": [
"-y",
"cursor-talk-to-figma-mcp"
]
}
}
}
启动命令npx -y cursor-talk-to-figma-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcursor-talk-to-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 服务

使用方法

  1. 如果尚未安装 Bun,请先安装:
curl -fsSL https://bun.sh/install | bash
  1. 运行安装程序,这也会在 Cursor 当前项目中安装 MCP
bun setup
  1. 启动 WebSocket 服务
bun socket
  1. 全新 从 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 插件
  1. 在 Figma 中,依次进入 Plugins > Development > New Plugin
  2. 选择“Link existing plugin”
  3. 选择 src/cursor_mcp_plugin/manifest.json 文件
  4. 该插件现在应显示在 Figma 的开发插件中

Windows + WSL 指南

  1. 使用 PowerShell 安装 Bun
powershell -c "irm bun.sh/install.ps1|iex"
  1. 在 src/socket.ts 中取消 0.0.0.0 主机名的注释
// uncomment this to allow connections in windows wsl
hostname: "0.0.0.0",
  1. 启动 WebSocket
bun socket

用法

  1. 启动 WebSocket 服务
  2. 在 Cursor 中安装 MCP 服务
  3. 打开 Figma 并运行 Cursor MCP 插件
  4. 使用 join_channel 加入频道,将插件连接到 WebSocket 服务
  5. 使用 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 - 创建或更新注释,支持 Markdown
  • set_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 插件
  1. 导航到 Figma 插件目录:

    cd src/cursor_mcp_plugin
    
  2. 编辑 code.js 和 ui.html

最佳实践

使用 Figma MCP 时:

  1. 发送命令前,始终先加入频道
  2. 首先使用 get_document_info 获取文档概览
  3. 修改前使用 get_selection 检查当前选区
  4. 根据需要使用适当的创建工具:
    • 使用 create_frame 创建容器
    • 使用 create_rectangle 创建基本形状
    • 使用 create_text 创建文本元素
  5. 使用 get_node_info 验证更改
  6. 尽可能使用组件实例,以保持一致性
  7. 妥善处理错误,因为所有命令都可能抛出异常
  8. 对于大型设计:
    • 在 scan_text_nodes 中使用分块参数
    • 通过 WebSocket 更新监控进度
    • 实施适当的错误处理
  9. 对于文本操作:
    • 尽可能使用批量操作
    • 考虑结构关系
    • 使用有针对性的导出验证更改
  10. 转换旧版注释时:
    • 扫描文本节点,识别带编号的标记和说明
    • 使用 scan_nodes_by_types 查找注释所指向的 UI 元素
    • 根据路径、名称或邻近程度,将标记与目标元素匹配
    • 使用 get_annotations 对注释进行适当分类
    • 使用 set_multiple_annotations 批量创建原生注释
    • 验证所有注释是否都已正确关联到目标
    • 转换成功后,删除旧版注释节点
  11. 将原型流程线可视化为 FigJam 连接线:
  • 使用 get_reactions 提取原型流程,
  • 使用 set_default_connector 设置默认连接线,
  • 并使用 create_connections 生成连接线,以清晰地映射视觉流程。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。