join_channel
Join a named channel on the Figma Vector MCP socket relay. Must be called before any drawing commands if the channel was not set via env/arg.
channel必填
io.github.workingmodel由 GitHub 帳號 workingmodel 發布v0.3.3更新於 Oct 30, 2026
Let Claude create and edit fully editable vector nodes on the Figma canvas.
發布方自己的服務:Figma MCP Server
本機 MCP 伺服器加 Figma 外掛,讓助理在 Figma 畫布上建立與編輯可完整編輯的向量節點、形狀、文字與元件。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
A Figma plugin + MCP server that lets Claude (or any MCP client) create and manipulate fully-editable vector nodes on the Figma canvas — paths, shapes, gradients, text, effects, image fills, and more — via a local WebSocket relay.
Developed by Working Model Inc
Version 0.3.3 — 58 tools across creation, styling, layout, components, effects, pages, and export.
cursor-talk-to-figma-mcp is great for reading Figma state and creating basic primitives, but it has no vector path creation, gradient, effects, or compositing tools. This plugin fills that gap:
The socket relay runs locally. The Figma plugin connects and joins a named channel. The MCP server joins the same channel and sends commands. Results flow back the same path.
For AI agents (Claude Code, Cursor, etc.) — the recommended call sequence to start any session:
Color convention: All RGB values are 0–1 throughout (matching Figma's internal format). r: 1, g: 0, b: 0 = red. Never use 0–255.
Gradient workflow:
Image fill workflow (with generative AI):
Batch compositions — use $prev.id to chain commands without extra round-trips:
Known SVG limits: figma.createNodeFromSvg() strips <defs>, gradients, filters, masks, and animations. Use set_gradient_fill for gradients instead of SVG <linearGradient>.
Reconnection: If the plugin disconnects, it auto-reconnects with exponential backoff (1s→30s max) and replays queued commands (up to 30s old). No manual intervention needed for short interruptions.
src/figma-plugin/manifest.jsonListens on ws://localhost:3055. Auto-start on login (macOS):
Manual config (~/.claude/settings.json or ~/.cursor/mcp.json):
ws://localhost:3055) → Connectfigma-vector-mcp) → JoinThe plugin saves your last URL and channel — pre-filled on next open. Keep the plugin panel open during your session — closing it terminates the WebSocket connection.
Per-tool timeout overrides: health_check → 3s, export_node_as_png → 30s, export_node_as_svg → 15s, create_batch → 60s.
The plugin main thread (code.js) runs in Figma's restricted QuickJS sandbox. The UI (ui.html) is a normal browser context and is not affected.
Run bun run lint:plugin to check code.src.js for violations before building. A pre-commit hook can be installed via ./scripts/install-hooks.sh.
code.jscreate_vector_from_svg)src/figma-plugin/code.src.jsbun run lint:plugin — catch sandbox violations before buildingbun run build:plugin — esbuild outputs code.js (ES2017)code.jssrc/socket.ts) adapted from cursor-talk-to-figma-mcp — Copyright (c) 2025 sonnylazuardi, MIT LicensesetCharacters helpers in code.src.js adapted from the same project — Copyright (c) 2025 sonnylazuardi, MIT LicenseMIT © Working Model — see LICENSE and THIRD_PARTY_NOTICES.md.
Developed by Working Model Inc
來源:README.md,提交 ec9dccc
Join a named channel on the Figma Vector MCP socket relay. Must be called before any drawing commands if the channel was not set via env/arg.
channel必填Ping the Figma plugin and confirm connectivity. Returns plugin version and current page.
無需輸入參數。
Place a fully editable vector node on the Figma canvas from an SVG string. Supports any valid SVG including paths, polylines, polygons, circles, and groups. The created node is fully editable in Figma.
xysvg必填nameparentIdCreate an editable vector from a single SVG path `d` attribute string. Shorthand for simple paths without a full SVG wrapper.
d必填xynameparentIdfillColorstrokeColorstrokeWeightCreate an editable vector from an array of [x, y] point pairs. Use closed=true to produce a filled polygon.
xynameclosedpoints必填parentIdstrokeColorstrokeWeightCreate a Figma frame (container) on the canvas.
xynamewidth必填height必填parentIdfillColorCreate a rectangle on the Figma canvas.
xynamewidth必填height必填parentIdfillColorCreate an ellipse (or circle) on the Figma canvas.
xynamewidth必填height必填parentIdfillColorCreate a text node on the Figma canvas. Use width to fix the column width and enable text wrapping.
xynametext必填widthheightfontSizeparentIdfillColorfontStylefontFamilytextAutoResizeApply a gradient fill to a Figma node. Supports LINEAR, RADIAL, ANGULAR (conic), and DIAMOND types. Replaces any existing fills. Stops must be sorted by position (0 → 1).
typeanglestops必填centernodeId必填gradientTransformEnable auto-layout on a frame and configure direction, spacing, padding, and alignment. Set direction to NONE to disable auto-layout.
wrapnodeId必填paddingspacingdirectioncounterAxisAlignprimaryAxisAligncounterAxisSizingModeprimaryAxisSizingModeConvert an existing frame or group into a reusable Figma component.
namenodeId必填Place an instance of a local component on the canvas by component ID.
xynameparentIdcomponentId必填Set the fill color of a Figma node.
ab必填g必填r必填nodeId必填Set the stroke color (and optional weight) of a Figma node.
ab必填g必填r必填nodeId必填weightSet comprehensive stroke properties on a node: color, weight, position, dash pattern, line cap, and line join.
colornodeId必填weightlineCaplineJoinpositiondashPatternModify typographic properties of an existing text node without replacing its content. Also use to set or update text box width and wrapping.
widthheightnodeId必填fontSizefillColorfontStyletextAlignfontFamilylineHeightletterSpacingtextAutoResizeSet corner radius of a rectangle or frame. Use radius for uniform corners or topLeft/topRight/bottomLeft/bottomRight for individual corners (e.g. pill, tab, card shapes).
nodeId必填radiustopLefttopRightbottomLeftbottomRightSet the opacity of a Figma node (0 = invisible, 1 = fully opaque).
nodeId必填opacity必填Move a Figma node to a new position on the canvas.
x必填y必填nodeId必填Resize a Figma node to the given width and height.
width必填height必填nodeId必填Delete a node from the Figma canvas.
nodeId必填Duplicate a Figma node, optionally repositioning the clone.
xynodeId必填parentIdRename a Figma node.
name必填nodeId必填Show or hide a Figma node.
nodeId必填visible必填Change a node's Z-order within its parent. Use action for relative moves or index for an absolute position (0 = bottom of stack).
indexactionnodeId必填Group multiple Figma nodes into a group layer.
namenodeIds必填parentIdUngroup a group node, returning its children to the parent.
nodeId必填Execute multiple commands in a single round-trip. Commands run sequentially. Each result includes success/error status. Use this for complex compositions (e.g. place an SVG, add a label, group them) to avoid multiple round-trips.
commands必填Get information about the current Figma document: name, current page, all pages, and top-level nodes.
無需輸入參數。
Get the currently selected nodes in Figma, including position and size.
無需輸入參數。
Get detailed information about a specific node by ID: type, position, size, opacity, children.
nodeId必填Scroll the Figma viewport to focus on a node and select it.
nodeId必填List all pages in the current Figma document.
無需輸入參數。
Switch to a different page in the Figma document by ID or name.
pageIdpageNameGet all local paint styles and text styles defined in the Figma document. Use these IDs with apply_style to keep output on-brand.
無需輸入參數。
Apply a named document style (paint or text) to a node by style ID.
nodeId必填styleId必填styleTypeList all fonts available in this Figma environment (system fonts + Figma font agent). Use before create_text to verify a font is loadable. Optionally filter by family name substring.
queryList all local components in the Figma document.
無需輸入參數。
Export a Figma node as an SVG string. Useful for round-tripping: create a vector, modify it in Figma, export back.
nodeId必填Export a Figma node as a base64-encoded PNG at the specified pixel scale.
scalenodeId必填Search for nodes by name (case-insensitive contains) and/or type. Scoped to a page (defaults to current page). Recursive by default.
typequerypageIdrecursiveCreate a new page in the Figma document.
name必填Copy a node to a target page at an optional position.
xynodeId必填targetPageId必填Update fill color, stroke color, opacity, position, and/or size on multiple nodes in a single round-trip.
operations必填Apply effects (drop shadow, inner shadow, layer blur, background blur) to a node. Use mode REPLACE (default) to overwrite all effects, or APPEND to add to existing ones.
modenodeId必填effects必填Set the blend mode of a node layer.
mode必填nodeId必填Set a node's fill to a base64-encoded image. Use with image generation APIs (Replicate, fal.ai) to place rendered imagery directly on canvas.
base64必填nodeId必填opacitymimeTypescaleModePerform a boolean operation (union, subtract, intersect, exclude) on 2 or more vector nodes.
namenodeIds必填operation必填Apply column, row, or uniform grid guides to a frame.
grids必填nodeId必填Save a named alias for a node ID, persisted in the Figma document. Use resolve_node to retrieve it later.
alias必填nodeId必填Look up a node ID by its registered alias. Returns the node ID previously saved with register_node.
alias必填Save a named color alias to the document palette. All RGB values are 0–1. Use resolve_color or list_colors to retrieve.
ab必填g必填r必填alias必填Look up a color by its registered alias. Returns r, g, b, a values (0–1).
alias必填List all color aliases registered in this document's palette.
無需輸入參數。
Export the current Figma page as a base64-encoded PNG. Useful for visual verification of the canvas state.
scaleList components available for use. Returns local document components. Filter by name with optional query.
queryApply a clip mask — maskNode defines the shape, targetNode is clipped to it. Both nodes are grouped.
namemaskNodeId必填targetNodeId必填已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

com.figma.mcp官方發布者
Figma 官方遠端 MCP 伺服器,為 AI 程式助理提供 Figma 設計脈絡,用來產生與更新程式碼。

由 GitHub 帳號 Mehmoodqureshi 發布
把 Figma 畫框轉換成 HTML、React 或 Next.js 程式碼,並將渲染結果與設計稿做像素比對,反覆迭代直到收斂。

由 GitHub 帳號 Mehmoodqureshi 發布
把 Figma 畫框確定性地轉成 HTML、React 或 Next.js 程式碼,在 Chromium 中算繪並與設計稿做像素比對,直到一致。

由 GitHub 帳號 NBhey 發布
本機 MCP 伺服器,讓助理讀取一次性拉取到本機儲存庫的 Figma 設計,可離線使用,不需 Figma 權杖,也不受速率限制。

io.scalably
在本機執行的 Figma REST API MCP 伺服器,讓助理列出檔案中的頂層畫框,並下載某個畫框的 PNG、節點 JSON 與圖片填色對應表。
Claude (MCP client) ↕ stdio (MCP protocol)server.ts (MCP server) ↕ WebSocket (ws://localhost:3055)socket.ts (relay — channel-based routing) ↕ WebSocketFigma plugin (ui.html ↔ code.js) ↕ postMessageFigma Plugin API → canvas1. health_check → confirm plugin is connected2. get_document_info → get page IDs, current page, top-level nodes3. get_available_fonts → discover loadable fonts before create_text4. get_styles → load brand colours/text styles if available1. create_frame({ width, height }) → get frameId2. set_gradient_fill({ nodeId: frameId, type: "LINEAR", angle: 135, stops: [{ color: { r:0.2, g:0.1, b:0.9 }, position: 0 }, { color: { r:0.9, g:0.2, b:0.4 }, position: 1 }] })1. Generate image via Replicate/fal.ai → get base64 PNG2. create_frame({ width: 512, height: 512 })3. set_image_fill({ nodeId, base64, scaleMode: "FILL" }){ "commands": [ { "command": "create_frame", "params": { "width": 400, "height": 300, "name": "Card" } }, { "command": "set_gradient_fill", "params": { "nodeId": "$prev.id", "type": "LINEAR", "stops": [{"color":{"r":0.1,"g":0.1,"b":0.9},"position":0}, {"color":{"r":0.8,"g":0.2,"b":0.5},"position":1}] } }, { "command": "create_text", "params": { "parentId": "$results.0.id", "text": "Hello", "fontSize": 32, "x": 24, "y": 24 } }]}npm install -g figma-vector-mcp# or use without installing via npx / bunx (see MCP config below)bun run socket./scripts/setup.sh --launchd# Auto-detect Claude Code / Cursor and write config:./scripts/setup.sh
# Local build:./scripts/setup.sh --local
# Install git pre-commit sandbox lint hook:./scripts/setup.sh --hooks{ "mcpServers": { "FigmaVectorMCP": { "command": "bunx", "args": ["figma-vector-mcp@latest"], "env": { "FVMCP_CHANNEL": "figma-vector-mcp" } } }}health_check → { "status": "ok", "version": "0.3.3", "currentPage": { ... } }bun install # install depsbun run socket # start relay on :3055bun run build # build MCP server → dist/server.jsbun run build:plugin # build plugin: code.src.js → code.jsbun run lint:plugin # check code.src.js for sandbox violations./scripts/install-hooks.sh # install pre-commit lint hook