mcpField
F
figma-mcp-rust

figma-mcp-rust

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

关于 figma-mcp-rust

figma-mcp-rust 是用 Rust 编写的开源 MCP 服务,通过插件桥接读取和修改实时 Figma 文档。它提供设计内容、样式、变量、组件、原型和导出相关工具,不使用 REST API。

主要功能

  1. 01通过插件桥接读取和修改实时 Figma 文档
  2. 02创建和编辑画框、节点、样式及变量
  3. 03查看页面、组件、注释和设计上下文
  4. 04管理原型交互及组件实例
  5. 05导出截图、PDF 和设计令牌
  6. 06使用设计策略 MCP 提示词

适用场景

  1. 01通过兼容 MCP 的 AI 工具检查 Figma 设计
  2. 02创建或更新设计元素和样式
  3. 03生成或调整变量及设计令牌
  4. 04导出画框或令牌供后续使用

MCP 相关

向兼容 MCP 的客户端提供 73 种工具和设计策略提示词。服务通过 Figma 插件桥接连接,而非使用 REST API。

配置

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

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

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

安装包
npm@nntoan/figma-mcp-rust0.1.0

工具

73

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

此工具无需参数。

详细介绍

figma-mcp-rust

vkhanhqui/figma-mcp-go 的高性能 Rust 移植版。 原始设计、Figma 插件桥接和工具目录均归功于 @vkhanhqui。本仓库将同一 MCP 服务迁移到 Rust, 并加入结构化日志、无竞态的请求关联和声明式工具表; 详见下文“Rust 重写中的变更”。

Figma MCP:免费,无速率限制

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

开源 Figma MCP 服务,通过插件提供完整的读写权限。无需 REST API,没有速率限制。将文本转化为设计,再将设计转化为真实代码。支持 Cursor、Claude、GitHub Copilot 及任何兼容 MCP 的 AI 工具。

亮点

  • 无需 Figma API 令牌
  • 无速率限制,适合免费套餐
  • 通过插件桥接读写实时 Figma 数据,共有 73 种工具
  • 完整的设计自动化:样式、变量、组件、原型和内容
  • 内置设计策略 MCP 提示词,并提供配套的 Claude Code 技能

为什么要构建它

大多数 Figma MCP 服务都依赖 Figma REST API。

这看起来没问题,直到你遇到以下限制:

套餐限制
Starter / View / Collab每月 6 次工具调用
Pro / Org(Dev 席位)每天 200 次工具调用
Enterprise每天 600 次工具调用

如果你正在尝试 AI 工具,几分钟内就会耗尽额度。

我没有足够的钱支付更高的限额。 所以我构建了一个完全不使用 API的方案。


安装与设置

通过 npx 安装,无需构建步骤。

1. 配置 AI 工具

Claude Code CLI

claude mcp add -s project figma-mcp-rust -- npx -y @nntoan/figma-mcp-rust@latest

Claude Code 插件市场

/plugin marketplace add nntoan/figma-mcp-rust
/plugin install figma-mcp-rust@figma-mcp-rust

安装插件还会添加 13 个技能,涵盖下文所述的工作流,从读取设计到生成令牌和排查桥接问题。

Codex CLI

codex mcp add figma-mcp-rust -- npx -y @nntoan/figma-mcp-rust@latest

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

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

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

{
  "servers": {
    "figma-mcp-rust": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@nntoan/figma-mcp-rust"
      ]
    }
  }
}
2. 安装 Figma 插件
  1. 在 Figma Desktop 中:Plugins → Development → Import plugin from manifest
  2. 从 plugin.zip 中选择 manifest.json
  3. 在任意 Figma 文件中运行插件

可用工具

写入:创建
工具描述
create_frame创建一个画框,可选自动布局、填充和父级
create_rectangle创建一个矩形,可选填充和圆角半径
create_ellipse创建一个椭圆或圆形
create_text创建一个文本节点(自动加载字体)
import_image解码 Base64 图像,并将其作为矩形填充放置
create_component将现有 FRAME 节点转换为可复用组件
create_section创建 Figma Section 节点,用于整理页面上的画框
写入:修改
工具描述
set_text更新现有 TEXT 节点的文本内容
set_fills设置节点的纯色填充(十六进制)
set_strokes设置节点的纯色描边和粗细
set_opacity设置一个或多个节点的不透明度(0 = 透明,1 = 不透明)
set_corner_radius设置圆角半径,可统一设置或逐角设置
set_auto_layout设置或更新框架的自动布局(弹性布局)属性
set_visible显示或隐藏一个或多个节点
lock_nodes锁定一个或多个节点,防止意外编辑
unlock_nodes解锁一个或多个节点
rotate_nodes设置一个或多个节点的绝对旋转角度
reorder_nodes更改 z 轴顺序:bringToFront、sendToBack、bringForward、sendBackward
set_blend_mode为一个或多个节点设置混合模式(MULTIPLY、SCREEN、OVERLAY 等)
set_constraints为一个或多个节点设置响应式约束 { horizontal, vertical }
move_nodes将节点移动到绝对 x/y 位置
resize_nodes按宽度和/或高度调整节点大小
rename_node重命名节点
clone_node克隆节点,可选择重新定位或更改父级
reparent_nodes将节点移动到其他父框架、组或分区
batch_rename_nodes通过查找/替换、正则表达式或前缀/后缀批量重命名节点
find_replace_text在子树或页面的所有 TEXT 节点中查找并替换文本;支持正则表达式
写入:删除
工具描述
delete_nodes永久删除一个或多个节点
写入:原型
工具描述
set_reactions为节点设置原型响应(触发条件 + 操作);模式为 replace 或 append
remove_reactions按节点中从零开始的索引移除所有或指定响应
写入:样式
工具描述
set_effects直接为节点应用投影/模糊效果(无需样式)
create_paint_style创建具有纯色的新命名绘画样式
create_text_style创建包含字体、字号和间距的新命名文本样式
create_effect_style创建新命名效果样式(投影、内阴影、模糊)
create_grid_style创建新命名布局网格样式(列、行或网格)
update_paint_style重命名或更改现有绘画样式的颜色
apply_style_to_node将现有本地样式应用到节点,并将其关联到该样式
delete_style按 ID 删除任意样式(绘画、文本、效果或网格)
写入:变量
工具描述
create_variable_collection创建新的本地变量集合,可选择设置初始模式
add_variable_mode为现有集合添加新模式(例如,浅色/深色)
create_variable在集合中创建变量(COLOR/FLOAT/STRING/BOOLEAN)
set_variable_value为特定模式设置变量值
bind_variable_to_node将变量绑定到节点属性;支持 fillColor、strokeColor、visible、opacity、rotation、width、height、圆角半径、间距等
delete_variable删除变量或整个集合
写入:页面
工具描述
add_page向文档添加新页面(可选名称和索引)
delete_page按 ID 或名称删除页面(无法删除唯一页面)
rename_page按 ID 或当前名称重命名页面
写入:组件与导航
工具描述
navigate_to_page按 ID 或名称切换当前 Figma 页面
group_nodes将两个或多个节点编组为 GROUP
ungroup_nodes解散 GROUP 节点,并将子节点移至父级
swap_component替换 INSTANCE 节点的主组件
detach_instance分离组件实例,将其转换为普通框架
读取:文档和选区
工具描述
get_document当前页面的完整树结构
get_metadata文件名、页面和当前页面
get_pages所有页面(ID + 名称),轻量级,不加载树结构
get_selection当前选中的节点
get_node按 ID 获取单个节点
get_nodes_info按 ID 获取多个节点
get_design_context限定深度的树结构,包含 detail 级别(minimal/compact/full)
search_nodes在子树中按名称子串和/或类型查找节点
scan_text_nodes子树中的所有文本节点
scan_nodes_by_types匹配指定类型列表的节点
get_viewport当前视口的中心、缩放比例和可见边界
读取:样式和变量
工具描述
get_styles填充、文本、效果和网格样式
get_variable_defs变量集合和值
get_local_components所有组件和组件集及其变体属性
get_annotations开发模式注释
get_fonts当前页面使用的所有字体,按频率排序
get_reactions节点上的原型/交互反应
导出
工具描述
get_screenshot导出任意节点的 Base64 图像
save_screenshots将图像导出到磁盘(服务端执行,无需 API 调用)
export_frames_to_pdf将多个画框导出为单个多页 PDF 文件并保存到磁盘
export_tokens将设计令牌(变量 + 填充样式)导出为 JSON 或 CSS
MCP 提示词
提示词描述
read_design_strategy阅读 Figma 设计的最佳实践
design_strategy创建和修改设计的最佳实践
text_replacement_strategy在设计中分块替换文本的方法
annotation_conversion_strategy将手动注释转换为原生 Figma 注释
swap_overrides_instances在组件实例之间转移覆盖项
reaction_to_connector_strategy将原型反应映射为交互流程图
style_audit_strategy查找使用原始值而非关联样式或变量的节点
bulk_rename_strategy按照一致的命名规范重命名节点
design_token_generation_strategy根据现有设计构建变量和样式令牌系统
generate_color_palette创建原始颜色阶并将语义别名设为变量
generate_type_scale创建完整的排版比例,作为文本样式
generate_component_variants将组件克隆为尺寸、主题、状态或深色模式变体

通过插件市场安装服务后,每个提示词也都可作为 Claude Code 技能使用,此外还提供用于排查连接问题的 bridge-troubleshooting 技能。


相关项目


Rust 重写中的变化

  • 内存安全的 WebSocket 桥接:请求/响应关联使用 tokio::sync::oneshot, 而不是由 sync.Once 保护的 Go 通道,从而消除了向已关闭通道发送数据的竞态。
  • 声明式工具表:全部 73 个工具注册项都位于单个静态数组 (src/tools/definitions.rs)中,不再需要约 700 行重复的 Go 处理程序。添加新工具时, 只需追加一项,并可选择添加 JSON Schema 构建器。
  • 通过 tracing 实现结构化日志记录:每个组件都会发出按目标区分的事件 (bridge、leader、follower、election、node),并可调整日志级别。设置 FIGMA_MCP_LOG=debug 可输出详细日志。
  • 基于 thiserror 的错误类型,取代格式化字符串,因此调用方可以匹配 特定故障模式(NotConnected、Timeout 等)。
  • 使用 lopdf 以纯 Rust 方式合并 PDF,无需依赖外部 CLI。
  • 借助 clap 提供一流的 CLI,并支持派生帮助文本和验证。

贡献

欢迎提交问题和 PR。

Star 历史

Star 历史图表

评论

支持 Markdown

第一次接触 MCP?

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

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