Figma Mcp Rust

io.github.alvinindra由 GitHub 帳號 alvinindra 發布v0.2.1更新於 Oct 24, 2026

Figma MCP server in Rust: plugin bridge, no API token, no rate limits, 73 tools.

發布方自己的服務:rust.wiki

已驗證STDIO僅桌面開發者工具媒體與設計

概覽

AI 產生的概覽

在本機執行的 Figma MCP 伺服器,透過外掛橋接讀寫即時 Figma 檔案,提供 73 個工具,不需 API 權杖。

可以做什麼
  • 讀取文件結構、頁面、選取範圍、節點、文字節點、樣式、變數、元件、字型與原型互動
  • 建立畫框、形狀、文字、圖片、元件與區段
  • 修改節點:文字、填色、描邊、不透明度、圓角、自動版面、可見性、鎖定、旋轉、層級、混合模式、限制條件、位置、尺寸、重新命名、複製、變更父層、批次重新命名與尋找取代
  • 刪除節點、管理頁面、群組與取消群組、替換或分離元件實例
  • 建立樣式與變數、將變數綁定到節點屬性、設定原型互動
  • 匯出截圖、將圖片存到磁碟、把畫框匯出成 PDF、將設計權杖匯出為 JSON 或 CSS
適用情境
適合讓助理檢視 Figma 設計並直接產生或修改設計,例如把設計轉成程式碼或把文字變成版面,同時避開 Figma REST API 的呼叫次數限制。適用於在 Figma 桌面版工作、使用免費或低階方案的設計師與開發者。
執行需求
透過 npx(Node.js)以 stdio 在本機執行。需要 Figma 桌面版,並從外掛壓縮檔匯入 manifest 後在開啟的檔案中執行該外掛,伺服器透過本機橋接與其通訊。未宣告需要 Figma API 權杖或環境變數。選用環境變數 FIGMA_MCP_LOG 可控制日誌詳細程度。
安裝前請注意
伺服器對開啟的 Figma 檔案擁有完整讀寫權限:工具可建立、修改、重新命名、移動並永久刪除節點、頁面、樣式與變數,也可將截圖與 PDF 寫入磁碟。在允許助理執行批次或刪除操作前先檢查變更,並建議在副本或已版本化的檔案上操作。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Figma Mcp Rust,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

figma-mcp-rust

A high-performance Rust port of vkhanhqui/figma-mcp-go. All credit for the original design, the Figma plugin bridge, and the tool catalogue goes to @vkhanhqui. This repo migrates that same MCP server to Rust with structured logging, race-free request correlation, and a declarative tool table; see "What changed in the Rust rewrite" below.

Figma MCP: Free, No Rate Limits

[npm version] [MCP Registry] [License: MIT] [GitHub stars]

Open-source Figma MCP server with full read/write access via plugin. No REST API, no rate limits. Turn text into designs and designs into real code. Works with Cursor, Claude, GitHub Copilot, and any MCP-compatible AI tool.

Highlights

  • No Figma API token required
  • No rate limits, free plan friendly
  • Read and Write live Figma data via plugin bridge, 73 tools in total
  • Full design automation: styles, variables, components, prototypes, and content
  • Design strategies built in as MCP prompts, plus matching Claude Code skills

Why this exists

Most Figma MCP servers rely on the Figma REST API.

That sounds fine until you hit this:

PlanLimit
Starter / View / Collab6 tool calls/month
Pro / Org (Dev seat)200 tool calls/day
Enterprise600 tool calls/day

If you're experimenting with AI tools, you'll burn through that in minutes.

I didn't have enough money to pay for higher limits. So I built something that doesn't use the API at all.


Installation & Setup

Install via npx, no build step required.

1. Configure your AI tool

Claude Code CLI

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

Claude Code plugin marketplace

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

Installing the plugin also adds 13 skills covering the workflows below, from reading designs to generating tokens and troubleshooting the bridge.

Codex CLI

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

.mcp.json (Claude and other MCP-compatible tools)

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

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

json
{  "servers": {    "figma-mcp-rust": {      "type": "stdio",      "command": "npx",      "args": [        "-y",        "@alvinindra/figma-mcp-rust"      ]    }  }}

2. Install the Figma plugin

  1. In Figma Desktop: Plugins → Development → Import plugin from manifest
  2. Select manifest.json from the plugin.zip
  3. Run the plugin inside any Figma file

Available Tools

Write: Create

ToolDescription
create_frameCreate a frame with optional auto-layout, fill, and parent
create_rectangleCreate a rectangle with optional fill and corner radius
create_ellipseCreate an ellipse or circle
create_textCreate a text node (font loaded automatically)
import_imageDecode base64 image and place it as a rectangle fill
create_componentConvert an existing FRAME node into a reusable component
create_sectionCreate a Figma Section node to organise frames on a page

Write: Modify

ToolDescription
set_textUpdate text content of an existing TEXT node
set_fillsSet solid fill color (hex) on a node
set_strokesSet solid stroke color and weight on a node
set_opacitySet opacity of one or more nodes (0 = transparent, 1 = opaque)
set_corner_radiusSet corner radius, uniform or per-corner
set_auto_layoutSet or update auto-layout (flex) properties on a frame
set_visibleShow or hide one or more nodes
lock_nodesLock one or more nodes to prevent accidental edits
unlock_nodesUnlock one or more nodes
rotate_nodesSet absolute rotation in degrees on one or more nodes
reorder_nodesChange z-order: bringToFront, sendToBack, bringForward, sendBackward
set_blend_modeSet blend mode (MULTIPLY, SCREEN, OVERLAY, and more) on one or more nodes
set_constraintsSet responsive constraints { horizontal, vertical } on one or more nodes
move_nodesMove nodes to an absolute x/y position
resize_nodesResize nodes by width and/or height
rename_nodeRename a node
clone_nodeClone a node, optionally repositioning or reparenting
reparent_nodesMove nodes to a different parent frame, group, or section
batch_rename_nodesBulk rename nodes via find/replace, regex, or prefix/suffix
find_replace_textFind and replace text across all TEXT nodes in a subtree or page; supports regex

Write: Delete

ToolDescription
delete_nodesDelete one or more nodes permanently

Write: Prototype

ToolDescription
set_reactionsSet prototype reactions (triggers + actions) on a node; mode replace or append
remove_reactionsRemove all or specific reactions by zero-based index from a node

Write: Styles

ToolDescription
set_effectsApply drop shadow / blur effects directly on a node (no style required)
create_paint_styleCreate a named paint style with a solid color
create_text_styleCreate a named text style with font, size, and spacing
create_effect_styleCreate a named effect style (drop shadow, inner shadow, blur)
create_grid_styleCreate a named layout grid style (columns, rows, or grid)
update_paint_styleRename or recolor an existing paint style
apply_style_to_nodeApply an existing local style to a node, linking it to that style
delete_styleDelete any style (paint, text, effect, or grid) by ID

Write: Variables

ToolDescription
create_variable_collectionCreate a new local variable collection with an optional initial mode
add_variable_modeAdd a new mode to an existing collection (e.g. Light/Dark)
create_variableCreate a variable (COLOR/FLOAT/STRING/BOOLEAN) in a collection
set_variable_valueSet a variable's value for a specific mode
bind_variable_to_nodeBind a variable to a node property; supports fillColor, strokeColor, visible, opacity, rotation, width, height, corner radii, spacing, and more
delete_variableDelete a variable or an entire collection

Write: Pages

ToolDescription
add_pageAdd a new page to the document (optional name and index)
delete_pageDelete a page by ID or name (cannot delete the only page)
rename_pageRename a page by ID or current name

Write: Components & Navigation

ToolDescription
navigate_to_pageSwitch the active Figma page by ID or name
group_nodesGroup two or more nodes into a GROUP
ungroup_nodesUngroup GROUP nodes, moving children to the parent
swap_componentSwap the main component of an INSTANCE node
detach_instanceDetach component instances, converting them to plain frames

Read: Document & Selection

ToolDescription
get_documentFull current page tree
get_metadataFile name, pages, current page
get_pagesAll pages (IDs + names), lightweight, no tree loading
get_selectionCurrently selected nodes
get_nodeSingle node by ID
get_nodes_infoMultiple nodes by ID
get_design_contextDepth-limited tree with detail level (minimal/compact/full)
search_nodesFind nodes by name substring and/or type within a subtree
scan_text_nodesAll text nodes in a subtree
scan_nodes_by_typesNodes matching given type list
get_viewportCurrent viewport center, zoom, and visible bounds

Read: Styles & Variables

ToolDescription
get_stylesPaint, text, effect, and grid styles
get_variable_defsVariable collections and values
get_local_componentsAll components + component sets with variant properties
get_annotationsDev-mode annotations
get_fontsAll fonts used on the current page, sorted by frequency
get_reactionsPrototype/interaction reactions on a node

Export

ToolDescription
get_screenshotBase64 image export of any node
save_screenshotsExport images to disk (server-side, no API call)
export_frames_to_pdfExport multiple frames as a single multi-page PDF file saved to disk
export_tokensExport design tokens (variables + paint styles) as JSON or CSS

MCP Prompts

PromptDescription
read_design_strategyBest practices for reading Figma designs
design_strategyBest practices for creating and modifying designs
text_replacement_strategyChunked approach for replacing text across a design
annotation_conversion_strategyConvert manual annotations to native Figma annotations
swap_overrides_instancesTransfer overrides between component instances
reaction_to_connector_strategyMap prototype reactions into interaction flow diagrams
style_audit_strategyFind nodes using raw values instead of linked styles or variables
bulk_rename_strategyRename nodes to follow a consistent naming convention
design_token_generation_strategyBuild a variable and style token system from an existing design
generate_color_paletteCreate a primitive color scale plus semantic aliases as variables
generate_type_scaleCreate a full typographic scale as text styles
generate_component_variantsClone a component into size, theme, state, or dark-mode variants

Each prompt is also available as a Claude Code skill when the server is installed through the plugin marketplace, alongside a bridge-troubleshooting skill for connection issues.


Related Projects


What changed in the Rust rewrite

  • Memory-safe websocket bridge: request/response correlation uses tokio::sync::oneshot instead of Go channels guarded by sync.Once, removing the send-on-closed-channel race.
  • Declarative tool table: all 73 tool registrations live in a single static array (src/tools/definitions.rs) instead of ~700 lines of repetitive Go handlers. New tools are added by appending one entry plus an optional JSON Schema builder.
  • Structured logging via tracing: every component emits per-target events (bridge, leader, follower, election, node) at adjustable levels. Set FIGMA_MCP_LOG=debug for verbose output.
  • thiserror-based error types instead of formatted strings, so callers can match on specific failure modes (NotConnected, Timeout, etc.).
  • Pure-Rust PDF merging via lopdf, no external CLI dependency.
  • First-class CLI via clap with derived help text and validation.

Contributing

Issues and PRs are welcome.

Star History

[Star History Chart]

來源:README.md,提交 6094566

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.2.1最新Oct 12, 2026
  2. v0.2.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Rust 整合