mcpField
F
figma-mcp-rust

figma-mcp-rust

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

关于 figma-mcp-rust

figma-mcp-rust 是 Rust 实现的 Figma MCP 服务,通过 Figma 插件桥接读写设计数据,不使用 REST API,因此无需 API 令牌且没有调用频率限制。它是 vkhanhqui/figma-mcp-go 的移植版,并对日志、请求关联和工具注册方式做了调整。

主要功能

  1. 01通过插件桥接读写 Figma 实时数据
  2. 02无需 Figma API 令牌,也无频率限制
  3. 03提供 73 个工具,涵盖创建、修改与导出
  4. 04支持样式、变量、组件与原型配置
  5. 05内置设计策略提示词与配套 Skills

适用场景

  1. 01由 AI 工具根据文本生成或修改 Figma 设计
  2. 02批量重命名节点、替换文本与整理设计令牌
  3. 03将设计导出为 PDF、截图或 JSON/CSS 令牌

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 73 个 Figma 工具与若干 MCP 提示词,由 Figma 插件作为桥接与设计文件通信。

配置

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

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

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

安装包
npm@alvinindra/figma-mcp-rust0.2.1

工具

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 @alvinindra/figma-mcp-rust@latest

Claude Code 插件市场

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

安装插件还会添加 13 个技能,涵盖下方所述的工作流,包括读取设计、生成令牌以及排查桥接问题。

Codex CLI

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

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

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

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

{
  "servers": {
    "figma-mcp-rust": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@alvinindra/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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。