Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Description from the maker (original English)
Bidirectional Figma MCP — AI draws UI on Figma canvas, reads designs back
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"figma-ui": {
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}Run this in your terminal
claude mcp add figma-ui -- npx -y figma-ui-mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"figma-ui": {
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"figma-ui": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"figma-ui-mcp"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 5, 2026
The registry name was verified with the GitHub account TranHoaiHung, which owns the repo
Code last changed 10 days ago
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Needs the server’s tool list first; this check starts in the next step
Compared only with servers in this prototype, not the whole registry.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 10 days ago, and the latest version (2.5.30) reached the registry 10 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Figma Context MCP, Claude Real Video, Figma MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the 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.
Figma’s official server gives AI your design data so it can turn designs into code or describe them accurately. Connects to Figma’s cloud.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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