Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Bidirectional Figma MCP — AI draws UI on Figma canvas, reads designs back
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"figma-ui": {
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add figma-ui -- npx -y figma-ui-mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"figma-ui": {
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"figma-ui": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 5 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub TranHoaiHung ซึ่งเป็นเจ้าของ repo
มีการแก้โค้ดล่าสุด 10 วันที่ผ่านมา
ใช้ MIT
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
ต้องอ่านรายการเครื่องมือของ server ก่อน จะเริ่มตรวจในขั้นถัดไป
เทียบเฉพาะ server ที่อยู่ในต้นแบบนี้ ไม่ใช่ทั้ง registry
จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด 10 วันที่ผ่านมา และส่งรุ่นล่าสุด (2.5.30) เข้า registry 10 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Figma Context MCP, Claude Real Video, Figma MCP Server
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
server ทางการของ Figma ส่งข้อมูลงานออกแบบให้ AI อ่าน เพื่อเปลี่ยนแบบเป็นโค้ดหรืออธิบายแบบได้ตรงขึ้น ต่อผ่านคลาวด์ของ Figma
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Claude Code to Figma · Antigravity to Figma · Cursor to Figma · Any MCP IDE to Figma
✅ Tested: Claude Code, Antigravity | 🔧 Compatible: Cursor, VS Code, Windsurf, Zed (any MCP stdio client)
Bidirectional Figma MCP bridge — let AI assistants (Claude Code, Cursor, Windsurf, Antigravity, VS Code Copilot, or any MCP-compatible IDE) draw UI directly on Figma canvas and read existing designs back as structured data, screenshots, or code-ready tokens. No Figma API key needed — works entirely over localhost.
Requires Figma Desktop — the plugin communicates with the MCP server over
localhostHTTP polling. Figma's web app does not allow localhost network access, so Figma Desktop is required.
Claude ──figma_write──▶ MCP Server ──HTTP (localhost:38451)──▶ Figma Plugin ──▶ Figma Document
Claude ◀─figma_read──── MCP Server ◀──HTTP (localhost:38451)── Figma Plugin ◀── Figma Document
The MCP server starts a small HTTP server bound to localhost:38451. The Figma plugin (running inside Figma Desktop) uses long polling — the server holds requests up to 8s until work arrives, flushing immediately when new ops are queued (near-realtime latency <100ms). All traffic stays on your machine — nothing is sent to any external server.
Multi-instance support (v2.3.0+): Multiple Figma files/tabs can connect simultaneously. Each plugin instance sends a sessionId, and the bridge routes operations to the correct session. Use the optional sessionId param in figma_write/figma_read to target a specific file.
| Direction | Tool | What it does |
|---|---|---|
| Write | figma_write | Draw frames, shapes, text, prototypes via JS code |
| Read | figma_read | Extract node trees, colors, typography, screenshots |
| Info | figma_status | Check plugin connection + active sessions |
| Docs | figma_docs | Get full API reference + examples |
| Rules | figma_rules | Generate design system rule sheet — tokens, typography, components |
| Feature | Description | |||
|---|---|---|---|---|
| `get_design_context` | AI-optimized payload for a node — flex layout, token-resolved colors (var(--name)), typography with style names, component instances with variant properties. Best single call for design→React/Vue/Swift code. | |||
| `get_component_map` | List every component instance in a frame with componentSetName, variantLabel, properties, and suggestedImport path. Scaffold import statements in one call. | |||
| `get_unmapped_components` | Find component instances that have no description in Figma (no code mapping yet). Prompts AI to ask user for correct import paths. | |||
| `figma_rules` tool | New top-level MCP tool — aggregates color tokens, typography styles, variables (all modes), and component catalog into a single markdown rule sheet. Equivalent to official Figma MCP's create_design_system_rules. Call once at session start. | |||
| `get_css` operation | figma_read get_css { nodeId } → ready-to-use CSS string (flex, typography, fill, border, shadow, opacity, transform). One call, paste into code. | |||
| Resolved variables | get_node_detail now resolves boundVariables IDs → { name, resolvedType, value }. No more manual ID lookup. | |||
| Resolved style refs | fillStyleId / textStyleId now include fillStyle: { name, hex } and textStyle: { name, fontSize, fontFamily }. | |||
| Instance overrides detail | overrides: [{ id, overriddenFields: ["fills","characters",...] }] — full diff vs mainComponent, not just count. | |||
| `componentSetName` + `variantLabel` | INSTANCE nodes now expose set name ("Button") and variant label ("State=Primary, Size=Large") separately. | |||
| `insertIndex` for create | figma.create({ ..., insertIndex: 2 }) — insert node at exact position in parent, not always at end. | |||
| Typography tokens | setupDesignTokens({ fontSizes, fonts, textStyles }) — 1 call bootstrap full typography system with variable-bound text styles. Multi-mode (Compact/Comfortable/Large) supported. | |||
| `applyTextStyle` | Apply a local text style to a TEXT node by name in 1 call — auto-loads font. | |||
| STRING variables for fonts | applyVariable now binds fontFamily, fontStyle, characters (swap Inter → SF Pro via 1 variable). | |||
| Effects | `effects: [{ type: "DROP_SHADOW" \ | "INNER_SHADOW" \ | "LAYER_BLUR" \ | "BACKGROUND_BLUR", ... }]` on any node. |
| Gradient fills | `fill: { type: "LINEAR_GRADIENT" \ | "RADIAL_GRADIENT", angle, stops }` in create/modify. | ||
| Individual corner radii | topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius on FRAME/RECT. | |||
| 8-digit hex + rgba alpha | fill: "#FFFFFF80" or "rgba(255,255,255,0.5)" — alpha auto-applied to paint opacity. | |||
| SVG arc (A) + commas | VECTOR d paths accept A arc command (auto-converted to cubic Bézier) and commas. | |||
| Icon libraries | 7 free open-source libraries, iOS-filled first: Ionicons → Fluent → Bootstrap → Phosphor → Tabler Filled → Tabler Outline → Lucide. | |||
| Instance overrides | figma.instantiate({ overrides: { "LayerName": { text, fill, fontSize } } }) — override props per-layer. | |||
| Batch delete | figma.delete({ ids: [...] }) — delete multiple nodes in 1 round-trip. | |||
| Prototyping | setReactions — click/hover/press → navigate/overlay/swap with Smart Animate. | |||
| Scroll behavior | setScrollBehavior — HORIZONTAL / VERTICAL / BOTH overflow. | |||
| Variants & instance swap | setComponentProperties / swapComponent — variants + instance swap. | |||
| Component property definitions *(v2.5.24)* | addComponentProperty + bindComponentProperty — create TEXT / BOOLEAN / INSTANCE_SWAP properties on master components. Instance text overrides now actually re-measure auto-layout (button grows to fit longer label). | |||
| Multi-instance | Multiple Figma tabs connect simultaneously via sessions. |
Full version history: see CHANGELOG.md.
Choose your platform:
Claude Code (CLI)
# Project scope (default)
claude mcp add figma-ui-mcp -- npx figma-ui-mcp
claude mcp add --scope user figma-ui-mcp -- npx figma-ui-mcp
</details>
Claude Desktop
Edit config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": { "figma": { "command": "npx", "args": ["-y", "figma-ui-mcp"] } } }
</details>
Cursor
Edit .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": { "figma": { "command": "npx", "args": ["-y", "figma-ui-mcp"] } } }
</details>
VS Code / GitHub Copilot
Edit .vscode/mcp.json (project) or add to settings.json (global):
{
"mcp": { "servers": { "figma": { "command": "npx", "args": ["-y", "figma-ui-mcp"] } } } }
</details>
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "figma": { "command": "npx", "args": ["-y", "figma-ui-mcp"] } } }
</details>
Antigravity (Google)
mcp_config.json:{
"mcpServers": { "figma": { "command": "npx", "args": ["-y", "figma-ui-mcp"] } } }
</details>
From source (any client)
git clone https://github.com/TranHoaiHung/figma-ui-mcp
cd figma-ui-mcp npm install
</details>
⚠️ IMPORTANT: After adding the MCP server, you MUST restart your IDE / AI client (quit and reopen). The MCP server only loads on startup — simply saving the config file is not enough. This applies to Claude Code, Cursor, VS Code, Windsurf, and Antigravity.
[⬇ Download plugin.zip](https://github.com/TranHoaiHung/figma-ui-mcp/raw/main/plugin.zip) — no git clone needed
plugin.zip anywhere on your machinemanifest.json from the unzipped folderThe plugin UI shows a green dot when the MCP server is connected.
# Step 1 — get the new version + plugin path
npx figma-ui-mcp@latest --version
The Figma plugin does not auto-update — re-linking (Step 3) is required whenever the plugin changes.
Tell your AI assistant to connect:
"Connect to figma-ui-mcp"
The AI will call figma_status and confirm:
✅ Connected — File: "My Project", Page: "Page 1", Plugin v2.5.5
If you see "Plugin not connected", make sure the Figma plugin is running (Step 2).
Once connected, just describe what you want in natural language:
"Use figma-ui-mcp to draw a login screen for mobile"
The AI will automatically:
figma_docs to load the API reference and design rulesfigma_read get_page_nodes to understand the current canvasfigma_write to create the design on your Figma canvasfigma_read screenshot to verify the result| Prompt | What happens |
|---|---|
"Draw a mobile login screen with social login buttons" | Creates a 390×844 frame with email/password inputs, Apple/Google buttons |
"Read the selected frame and describe the design" | Extracts colors, typography, spacing from your selection |
| "Take a screenshot of the current frame" | Return