Skip to main content

talktofigma-desktop-mcp

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

インストールへ移動

ソース情報

リポジトリ
reason-machines/design-skills
ソースの最終更新活動
2026年5月18日 04:56
検出された SKILL.md の言語
英語
スター
4
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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... }
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る