mcpField
F
figma-mcp-go

figma-mcp-go

本地服务
github.com/tunglt1810媒体与设计162 周前更新

关于 figma-mcp-go

figma-mcp-go 是通过本地 Figma 插件桥接的 MCP 服务,供 AI 工具读取和编辑当前打开的 Figma 文件。它提供涵盖设计节点、样式、变量、组件和原型的工具,并支持批量操作。

主要功能

  1. 01实时读取和编辑打开的 Figma 文件
  2. 02管理样式、变量、组件与原型
  3. 03创建、修改和导出设计内容
  4. 04通过批处理运行多步编辑
  5. 05支持只读模式和撤销

适用场景

  1. 01从设计文件提取节点与样式信息
  2. 02根据文字指令创建或修改设计
  3. 03导出截图、画板 PDF 或设计令牌
  4. 04批量调整组件、文本和页面

MCP 相关

该 MCP 服务通过 Figma 插件连接本地打开的文件,向 MCP 客户端提供读取、导出、创建和编辑设计的工具及提示词。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"tunglt1810-figma-mcp-go": {
"command": "npx",
"args": [
"-y",
"@tunglt1810/figma-mcp-go"
]
}
}
}
启动命令npx -y @tunglt1810/figma-mcp-go

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

安装包
npm@tunglt1810/figma-mcp-go0.6.0

工具

60

收录的工具列表 · 更新于 2 周前

参数类型必填说明
nodeIdstring是目标节点 ID
targetstring否绘制样式:fill(默认)或 stroke
styleIdstring是来自 get_styles 的样式 ID

详细介绍

figma-mcp-go

Figma MCP — 本地插件集成 tunglt1810/figma-mcp-go server

npm 版本 MCP 注册表 许可证:MIT GitHub 星标

开源的 Figma MCP 服务,通过 Figma 插件提供完整的读取和写入权限。将文本转化为设计,将设计转化为代码。支持 Claude、Cursor、GitHub Copilot 和任何 MCP 客户端。

亮点

  • 通过 Figma Plugin API 在本地运行。无需 REST API 令牌。
  • 实时读取和编辑已打开的 Figma 文件——提供 60 个工具。
  • 涵盖样式、变量、组件、原型、文本和支持撤销的多步骤批处理。
  • 内置提示词,例如 read_design_strategy 和 design_strategy。
  • 节省令牌:简短的工具说明、受限的节点树,以及以图像形式返回图像。

样式、变量、组件、原型和内容

https://github.com/user-attachments/assets/eae41471-fc72-4574-8261-4f42c38b8c99

文本转设计,设计转代码

https://github.com/user-attachments/assets/17bda971-0e83-4f18-8758-8ac2b8dcba62


为什么要开发这个项目

大多数 Figma MCP 服务都使用云端 Figma REST API。AI 工具每个会话会进行数百次快速调用,每次云端往返都会增加延迟。

这个服务会改为连接你自己电脑上的 Figma 插件。无需 API 令牌,即可快速、实时地读取和编辑已打开的文件。


设置

使用 npx 或 bunx 安装。无需构建。观看设置视频或按照以下步骤操作。

观看视频

1. 将服务添加到 AI 工具

Claude Code CLI

# via npx
claude mcp add -s project figma-mcp-go -- npx -y @tunglt1810/figma-mcp-go@latest

# or via bunx
claude mcp add -s project figma-mcp-go -- bunx @tunglt1810/figma-mcp-go@latest

Codex CLI

# via npx
codex mcp add figma-mcp-go -- npx -y @tunglt1810/figma-mcp-go@latest

# or via bunx
codex mcp add figma-mcp-go -- bunx @tunglt1810/figma-mcp-go@latest

.mcp.json(Claude 和其他兼容 MCP 的工具)

{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": ["-y", "@tunglt1810/figma-mcp-go"]
    }
  }
}

.vscode/mcp.json(Cursor / VS Code / GitHub Copilot)

{
  "servers": {
    "figma-mcp-go": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@tunglt1810/figma-mcp-go"
      ]
    }
  }
}
2. 安装 Figma 插件
  1. 在 Figma Desktop 中:插件 → 开发 → 从清单导入插件
  2. 从 plugin.zip 中选择 manifest.json
  3. 在任意 Figma 文件中运行插件
3. 使用多个 AI 工具(可选)

每个 AI 工具都会启动自己的服务,但同一端口上只能有一个服务持有插件连接。

**同一个文件:**无需更改。第一个服务会占用端口 1994;其他服务会将调用转发给它。如果它停止,另一个服务会在几秒钟内接管。

**不同的文件:**为每个工具指定不同端口,并在相应文件的插件中设置相同的端口(设置齿轮):

{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": ["-y", "@tunglt1810/figma-mcp-go", "--port", "1995"]
    }
  }
}

插件会记住所有文件上次使用的端口,因此在其他位置打开插件时,请检查端口设置。

--ip 0.0.0.0 会接受来自其他机器的连接。

**安全性:**插件连接没有登录验证。使用默认地址 127.0.0.1 时,只有你的机器可以访问。在其他任何地址上,能够连接该端口的任何人都可以读取和编辑你打开的文件。服务会发出警告,插件也会启用 confirm 模式。建议使用 SSH 隧道。

4. 只读模式(可选)

添加 --read-only,仅提供 17 个不会更改 Figma 文件的工具。这些工具包括读取工具、export_screenshots、export_frames_to_pdf 和 get_image_bytes。AI 加载的工具列表会缩减约 84%。

{
  "mcpServers": {
    "figma-mcp-go": {
      "command": "npx",
      "args": ["-y", "@tunglt1810/figma-mcp-go", "--read-only"]
    }
  }
}

此标志仅限制单个服务。同一端口上的其他 AI 工具仍可编辑文件,除非它们也使用此标志。

插件面板

面板会显示已连接的文件、所选内容以及 AI 正在执行的操作。

控件功能
Guardoff(默认)会执行所有操作。confirm 会在删除和批量更改前询问。read-only 会阻止所有更改。
Undo撤销上一次更改。一次完整的 batch_execute_pipeline 运行算作一个撤销步骤。
Log显示每个请求的工具、时间和错误。Copy 可导出日志,用于提交错误报告。
Pin保存当前所选内容。即使用户点击其他位置,get_selection(source: "pinned") 仍会返回此内容。

设置和面板大小会按机器保存。面板会跟随 Figma 的浅色和深色主题。

开发模式

set_codegen_result 会将代码保存到节点上。文件中的所有人都可以在开发模式的 Code 面板中查看。组件上的代码会显示在其所有实例中。Language 菜单用于筛选代码块;如果某种语言没有代码块,则会显示所有代码块。


工作原理

第一个启动的服务会成为主服务,并持有与插件之间唯一的 WebSocket。其他服务则作为从属服务,将调用转发给主服务。

flowchart LR
    client([MCP client]) -- stdio --> tools
    client2([2nd MCP client]) -- stdio --> follower[Follower]

    subgraph leaderProc [Leader process]
        tools[tools<br/>60 tools, Check] -- Send --> leader[cluster.Leader<br/>:1994 /rpc /ws /ping]
        leader --> bridge[bridge<br/>request/response match]
    end

    follower -. POST /rpc .-> leader

    subgraph plugin [Figma plugin]
        ui[Plugin UI<br/>Svelte iframe] -- postMessage --> main[Plugin main<br/>dispatch handlers]
    end

    bridge == WebSocket ==> ui
    main -- read / write --> figma[(Figma document)]

一次工具调用的完整流程:

sequenceDiagram
    participant C as MCP client
    participant T as tools
    participant L as cluster
    participant B as bridge
    participant U as Plugin UI
    participant M as Plugin main
    participant F as Figma

    C->>T: tools/call (stdio)
    T->>L: Send after Check
    Note over L: A follower first sends POST /rpc to the leader
    L->>B: forward
    B->>U: WebSocket request
    U->>M: postMessage
    M->>F: read / write nodes
    F-->>M: nodes
    M-->>U: response
    U-->>B: WebSocket reply
    B-->>L: matched by id
    L-->>T: (any, error)
    T-->>C: tool result

工具

读取
工具功能
get_document获取所选内容、页面或整个文件的节点树。默认最多显示 500 个节点;depth、maxNodes、detail、dedupe_components 可控制大小
get_nodes_info按 ID 获取节点的完整详情。未知 ID 会列在 missing 中;depth 和 maxNodes 用于限制子节点数量
get_selection获取所选节点,或使用 source: "pinned" 获取已固定的节点
get_metadata文件名、当前页面和所有页面
search_nodes在页面、节点或整个文件中按名称和/或类型查找节点
get_viewport视口中心、缩放比例和可见区域
get_styles填充、文本、效果和网格样式
get_variable_defs变量集合、模式和值
get_local_components所有组件和组件集
get_instance_overrides实例的组件属性和值
get_annotations开发模式注释
get_fonts当前页面上的字体,按使用频率从高到低排列
get_reactions节点的原型交互
导出
工具功能
export_screenshots将节点导出为图片:使用 outputPath 保存到文件,或直接返回(PNG/JPG 以图片形式返回,SVG 以文本形式返回)。未指定项目时,导出所选内容
export_frames_to_pdf将多个画框保存为一个多页 PDF
get_image_bytes获取图片填充中原始图片文件的 Base64 数据
export_tokens将变量和填充样式导出为 JSON 或 CSS
set_export_settings设置节点的导出预设
创建
工具功能
create_node创建 FRAME、RECTANGLE、ELLIPSE、STAR、POLYGON、LINE 或 SECTION
create_text创建文本节点(会加载字体)
create_vector根据 SVG 创建矢量图,例如图标
import_image从 URL 或 Base64 创建图片矩形,或将图片导入节点
create_component将画框转换为组件
create_component_instance创建本地组件或库组件的实例
combine_as_variants将多个组件组合为变体集
manage_component_properties添加、编辑、删除或绑定组件属性
create_connector创建连接线。此工具仅适用于 FigJam 文件
boolean_operation对形状执行 UNION、SUBTRACT、INTERSECT 或 EXCLUDE 操作
flatten_nodes将多个节点合并为一个矢量图
outline_stroke将描边转换为填充形状
编辑
工具功能
set_node_properties位置、大小、半径、可见性、锁定、不透明度、旋转、混合、约束、图层顺序、蒙版、描边
set_paint纯色或渐变填充或描边
set_auto_layout自动布局:方向、内边距、间距、对齐、HUG/FILL 尺寸、最小值/最大值
set_layout_grids列、行或方形网格
set_effects阴影、模糊、噪点、纹理、玻璃效果
set_text文本内容和整个节点的文本设置
set_text_ranges设置部分文本的样式:粗体、颜色、链接、列表
find_replace_text查找和替换文本,可使用正则表达式
set_instance_overrides设置实例的组件属性
swap_component将实例替换为其他本地或库组件
detach_instance将实例转换为普通框架
clone_node复制节点
reparent_nodes将节点移至另一个父级
group_nodes / ungroup_nodes分组或取消分组
batch_rename_nodes按名称、查找/替换、正则表达式、前缀或后缀重命名
set_annotationsDev Mode 注释(付费席位)
set_reactions原型交互:设置、追加或移除
delete_nodes删除节点
样式、变量、页面
工具功能
create_stylePAINT、TEXT、EFFECT 或 GRID 样式
update_paint_style重命名或更改绘制样式的颜色
apply_style_to_node将样式应用到节点
delete_style删除样式
manage_variable创建集合、模式和变量;设置值;删除;绑定到节点
manage_page添加、删除、重命名页面或跳转到页面
工作流
工具功能
batch_execute_pipeline在一次调用中运行多个写入步骤,在步骤间传递结果,出错时撤销
set_selection选中节点并缩放到节点,以便向用户展示
save_version_checkpoint在进行重大更改前保存一个命名版本
set_codegen_result为 Dev Mode 的 Code 面板保存代码
manage_plugin_data在文件中的节点上存储键值备注
提示词
提示词功能
read_design_strategy如何有效阅读设计
design_strategy如何创建和编辑设计
text_replacement_strategy分块替换设计中的文本
annotation_conversion_strategy将手动备注转换为 Figma 注释
swap_overrides_instances在实例间复制覆盖项
reaction_to_connector_strategy将原型链接转换为流程图

升级

更新服务时,请同时更新插件。 npx 会更新服务,但插件需要手动安装。旧版插件会拒绝新命令,并提示 Unknown request type。

请参阅 CHANGELOG.md,了解每个版本的更改,包括已移除的工具及其替代工具。


开发

  • 服务: Go 1.27+(make test-go、make build-go)
  • 插件: Bun 1.4+(cd plugin && bun install && bun run build)
  • 所有测试: make test
  • 日志: stderr。FIGMA_MCP_LOG=debug 会显示工具参数和流量。
  • 包规则: 错误方向的导入会导致 make deps-check 失败。internal/ 包含 bridge(插件 WebSocket)、cluster(领导者选举)、figma(规则)和 tools(工具表)。允许的依赖方向:tools → figma、cluster → bridge。

macOS 二进制文件需要 macOS 13 或更高版本(Go 1.27)。

贡献

欢迎提交问题和 PR。

Star History

Star History Chart

评论

支持 Markdown

第一次接触 MCP?

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

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