Skip to main content

talktofigma-desktop-mcp

Bridge Figma designs with AI assistants using TalkToFigma Desktop via Model Context Protocol

Zur Installation springen

Quellinformationen

Repository
reason-machines/design-skills
Letzte Quellaktivität
18. Mai 2026 um 04:56
Erkannte Sprache von SKILL.md
Englisch
Sterne
4
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
talktofigma-desktop-mcp
description
Bridge Figma designs with AI assistants using TalkToFigma Desktop via Model Context Protocol
triggers
["connect to figma designs","read figma file layers","modify figma components","extract design tokens from figma","sync figma with ai tools","access figma via mcp","talk to figma desktop","integrate figma with cursor"]
# TalkToFigma Desktop MCP > Skill by [ara.so](https://ara.so) — Design Skills collection. TalkToFigma Desktop is a cross-platform desktop application that bridges Figma and AI coding assistants through the Model Context Protocol (MCP). It provides 50+ MCP tools for reading and manipulating Figma designs, enabling AI agents to directly interact with design files through a WebSocket server and stdio-based MCP servers. ## Architecture Overview ``` MCP Client (Cursor/Claude Code) → stdio MCP Server → WebSocket (port 3055) → Desktop App → Figma Plugin ``` The desktop app manages: - **WebSocket server** on port 3055 for real-time communication - **stdio MCP servers** spawned independently by each AI client - **Channel-based routing** for multi-client support - **System tray interface** for server management ## Installation ### 1. Install Desktop Application Download from [GitHub Releases](https://github.com/grab/TalkToFigmaDesktop/releases): - **macOS**: `TalkToFigma-v*.*.*.zip` (Universal binary) - **Windows**: `TalkToFigma-v*.*.*.exe` **First run on macOS**: Right-click app → "Open" → "Open" (bypass Gatekeeper) **First run on Windows**: SmartScreen → "More info" → "Run anyway" ### 2. Install Figma Plugin Install the [Talk to Figma MCP Plugin](https://www.figma.com/community/plugin/1485687494525374295/talk-to-figma-mcp-plugin) from Figma Community. ### 3. Configure MCP Client **For Cursor, Claude Code, or VS Code with Cline:** 1. Launch TalkToFigma Desktop 2. Right-click tray icon → "Settings" 3. Copy the MCP configuration path shown 4. Add to your MCP client config: **macOS** (`~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`): ```json { "mcpServers": { "TalkToFigmaDesktop": { "command": "node", "args": [ "/Users/yourname/Library/Application Support/TalkToFigma/mcp-server.cjs" ] } } } ``` **Windows Direct Install** (`%APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`): ```json { "mcpServers": { "TalkToFigmaDesktop": { "command": "node", "args": [ "%APPDATA%\\TalkToFigma\\mcp-server.cjs" ] } } } ``` **Windows Store/MSIX**: Use the exact path from Settings page (usually under `%LOCALAPPDATA%\Packages\...\LocalCache\Roaming\TalkToFigma\mcp-server.cjs`) ## Starting the Server 1. **Launch TalkToFigma Desktop** from Applications/Start Menu 2. **Start WebSocket server**: Right-click tray icon → "Start Server" 3. **Verify status**: Tray icon should show green (🟢 Active) 4. **Open Figma**: Run the Talk to Figma MCP plugin 5. **Connect**: Plugin should show "Connected" status ## MCP Tools Reference ### Core Connection Tools #### `join_channel` Join a Figma file channel to start interacting with it. **Parameters:** - `channel` (string): Format `{file_key}:{page_id}:{view_id}` **Usage:** ```typescript // Extract from Figma URL: https://www.figma.com/design/ABC123/Project?node-id=1-2&t=xyz // Format: ABC123:1:2 await use_mcp_tool("TalkToFigmaDesktop", "join_channel", { channel: "ABC123:1:2" }); ``` #### `leave_channel` Leave the current Figma file channel. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "leave_channel", {}); ``` ### Reading Design Data #### `get_current_page` Get the currently active page in Figma. ```typescript const page = await use_mcp_tool("TalkToFigmaDesktop", "get_current_page", {}); // Returns: { id: "1:2", name: "Page 1", type: "PAGE" } ``` #### `get_node_by_id` Retrieve a specific node by its ID. ```typescript const node = await use_mcp_tool("TalkToFigmaDesktop", "get_node_by_id", { nodeId: "123:456" }); // Returns complete node data including children, properties, styles ``` #### `get_all_nodes` Get all nodes in the current page with optional filtering. ```typescript const allFrames = await use_mcp_tool("TalkToFigmaDesktop", "get_all_nodes", { type: "FRAME" }); const allComponents = await use_mcp_tool("TalkToFigmaDesktop", "get_all_nodes", { type: "COMPONENT" }); ``` #### `search_nodes` Search for nodes by name or type. ```typescript const buttons = await use_mcp_tool("TalkToFigmaDesktop", "search_nodes", { query: "Button", type: "COMPONENT" }); ``` #### `get_selection` Get currently selected nodes in Figma. ```typescript const selection = await use_mcp_tool("TalkToFigmaDesktop", "get_selection", {}); // Returns: [{ id: "123:456", name: "Selected Frame", type: "FRAME" }] ``` ### Creating and Modifying Nodes #### `create_rectangle` Create a rectangle node. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "create_rectangle", { name: "Background", x: 0, y: 0, width: 375, height: 812, fills: JSON.stringify([{ type: "SOLID", color: { r: 0.95, g: 0.95, b: 0.95 } }]) }); ``` #### `create_frame` Create a frame container. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "create_frame", { name: "Mobile Screen", x: 100, y: 100, width: 375, height: 812 }); ``` #### `create_text` Create a text node. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "create_text", { name: "Heading", characters: "Welcome to TalkToFigma", x: 20, y: 40, fontSize: 24, fontName: JSON.stringify({ family: "Inter", style: "Bold" }) }); ``` #### `create_component` Create a reusable component. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "create_component", { name: "Button/Primary", x: 0, y: 0, width: 120, height: 44 }); ``` #### `set_properties` Modify properties of existing nodes. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "set_properties", { nodeId: "123:456", properties: JSON.stringify({ name: "Updated Button", x: 50, y: 50, fills: [{ type: "SOLID", color: { r: 0.2, g: 0.4, b: 0.8 } }] }) }); ``` #### `delete_node` Delete a node by ID. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "delete_node", { nodeId: "123:456" }); ``` ### Layout and Positioning #### `set_auto_layout` Apply auto layout to a frame. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "set_auto_layout", { nodeId: "123:456", mode: "VERTICAL", padding: 16, spacing: 12, primaryAxisAlignItems: "MIN", counterAxisAlignItems: "CENTER" }); ``` #### `group_nodes` Group multiple nodes together. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "group_nodes", { nodeIds: JSON.stringify(["123:456", "123:457", "123:458"]), name: "Button Group" }); ``` ### Styles and Design Tokens #### `get_local_paint_styles` Get all local color styles. ```typescript const colors = await use_mcp_tool("TalkToFigmaDesktop", "get_local_paint_styles", {}); // Returns: [{ id: "S:...", name: "Primary/Blue", paints: [...] }] ``` #### `get_local_text_styles` Get all local text styles. ```typescript const textStyles = await use_mcp_tool("TalkToFigmaDesktop", "get_local_text_styles", {}); // Returns: [{ id: "S:...", name: "Heading/H1", fontSize: 32, ... }] ``` #### `create_paint_style` Create a new color style. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "create_paint_style", { name: "Brand/Primary", paints: JSON.stringify([{ type: "SOLID", color: { r: 0.2, g: 0.4, b: 0.8 } }]) }); ``` #### `apply_paint_style` Apply a color style to a node. ```typescript await use_mcp_tool("TalkToFigmaDesktop", "apply_paint_style", { nodeId: "123:456", styleId: "S:abc123..." }); ``` ### Export and Assets #### `export_node` Export a node as an image. ```typescript const imageData = await use_mcp_tool("TalkToFigmaDesktop", "export_node", { nodeId: "123:456", format: "PNG", scale: 2 }); // Returns base64-encoded image data ``` #### `get_image_fills` Get image fill data from nodes. ```typescript const images = await use_mcp_tool("TalkToFigmaDesktop", "get_image_fills", { nodeId: "123:456" }); ``` ## Common Workflows ### Extract Design Tokens ```typescript // 1. Join the Figma file await use_mcp_tool("TalkToFigmaDesktop", "join_channel", { channel: "FILE_KEY:PAGE_ID:VIEW_ID" }); // 2. Get all color styles const colors = await use_mcp_tool("TalkToFigmaDesktop", "get_local_paint_styles", {}); // 3. Get all text styles const typography = await use_mcp_tool("TalkToFigmaDesktop", "get_local_text_styles", {}); // 4. Convert to design tokens const tokens = { colors: colors.map(style => ({ name: style.name.replace(/\//g, '-'), value: rgbToHex(style.paints[0].color) })), typography: typography.map(style => ({ name: style.name.replace(/\//g, '-'), fontSize: style.fontSize, fontFamily: style.fontName.family, fontWeight: style.fontName.style })) }; ``` ### Build Component Library ```typescript // 1. Search for all components const components = await use_mcp_tool("TalkToFigmaDesktop", "get_all_nodes", { type: "COMPONENT" }); // 2. For each component, get detailed properties for (const comp of components) { const details = await use_mcp_tool("TalkToFigmaDesktop", "get_node_by_id", { nodeId: comp.id }); // 3. Generate React component code const componentCode = generateReactComponent(details); // Write to file system... }
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen