figma-unified-mcp
Provides tools for interacting with the Figma design platform, enabling reading file structure, nodes, styles, components, variables, and comments; creating frames, shapes, text, components, instances, vector paths, SVG imports, and pages; modifying colors, gradients, sizes, positions, auto-layout, effects; adding prototype interactions; managing variables; generating code (CSS, React, SwiftUI, HTML, Tailwind); checking accessibility; exporting nodes, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@figma-unified-mcpgenerate React code from the selected frame"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figma Unified MCP
A comprehensive Model Context Protocol (MCP) server that enables Claude to read, create, edit, and generate code from Figma designs.
Features
🔍 Read — Get file structure, nodes, styles, components, variables, and comments
✏️ Create — Make frames, shapes, text, components, instances, vector paths, SVG imports, and pages
🎨 Modify — Change colors, gradients, sizes, positions, auto-layout, effects, and more
🎭 Prototype — Add interactions, flows, transitions, and overlays
🧩 Variables — Create and manage design tokens via REST API (no plugin needed)
💻 Code Generation — Export to CSS, React, SwiftUI, HTML, and Tailwind
📱 Prototype to HTML — Generate interactive HTML prototypes from Figma designs
♿ Accessibility — Check color contrast and touch target sizes
📐 Layout Validation — Verify spacing, alignment, and overflow
🎯 Boolean Operations — Union, subtract, intersect, exclude shapes
📤 Export — Export nodes as PNG/JPG/SVG/PDF to local files or base64
🔗 Code Connect — Bridge Figma components to code via fuzzy matching and Dev Mode links
✨ Text Presets — Apply 16 built-in typography presets (display, heading, body, label, etc.)
🌈 Gradient Fills — Set linear, radial, angular, and diamond gradient fills
Related MCP server: F_MCP
Installation
Quick Setup (Recommended)
macOS / Linux:
./setup.shWindows:
.\setup.batFor Claude Code users: stop any running session first with
/exit, then run the setup script, then relaunch.
This single command will:
✅ Check Node.js is installed (Windows: auto-install via winget)
✅ Install all dependencies
✅ Build the MCP server and Figma plugin
✅ Configure Claude Desktop, Claude Code, or Cursor automatically
After the script finishes, just:
Import the plugin in Figma (Plugins → Development → Import from manifest)
Restart Claude Desktop (or Claude Code picks it up automatically)
Manual Setup
Prerequisites
Node.js 18+ — Download
Figma Desktop App — Download
Claude Desktop — Download
Figma Personal Access Token — Get one here
Step 1: Clone or Download
git clone https://github.com/sso-ss/figma-unified-mcp.git
cd figma-unified-mcpStep 2: Install Dependencies
cd figma-unified-mcp
npm installStep 3: Build the MCP Server
npm run buildThis creates dist/server.js — the compiled MCP server.
Step 4: Configure Your Claude Client
Option A: Claude Desktop
Edit your Claude Desktop configuration file:
macOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonAdd the Figma MCP server:
macOS / Linux:
{
"mcpServers": {
"figma-unified-mcp": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/Desktop/Claude/mcp/figma-unified-mcp/dist/server.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Windows:
{
"mcpServers": {
"figma-unified-mcp": {
"command": "node",
"args": ["C:\\Users\\YOUR_USERNAME\\Desktop\\Claude\\mcp\\figma-unified-mcp\\dist\\server.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}⚠️ Replace
YOUR_USERNAMEwith your actual username andfigd_YOUR_TOKEN_HEREwith your Figma Personal Access Token.
Option B: Claude Code (CLI)
macOS / Linux:
claude mcp add figma-unified-mcp \
-e FIGMA_ACCESS_TOKEN=figd_YOUR_TOKEN_HERE \
-- node /Users/YOUR_USERNAME/Desktop/Claude/mcp/figma-unified-mcp/dist/server.jsWindows (PowerShell):
claude mcp add figma-unified-mcp `
-e FIGMA_ACCESS_TOKEN=figd_YOUR_TOKEN_HERE `
-- node C:\Users\YOUR_USERNAME\Desktop\Claude\mcp\figma-unified-mcp\dist\server.jsOr add it to .claude/settings.json:
macOS / Linux:
{
"mcpServers": {
"figma-unified-mcp": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/Desktop/Claude/mcp/figma-unified-mcp/dist/server.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Windows:
{
"mcpServers": {
"figma-unified-mcp": {
"command": "node",
"args": ["C:\\Users\\YOUR_USERNAME\\Desktop\\Claude\\mcp\\figma-unified-mcp\\dist\\server.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Step 5: Restart Your Claude Client
Quit and reopen Claude Desktop, or restart Claude Code to load the MCP server.
Step 6: Install the Figma Plugin
Open Figma Desktop
Go to Plugins → Development → Import plugin from manifest...
Select:
figma-unified-mcp/figma-plugin/manifest.jsonThe plugin "Figma Unified MCP Bridge" is now installed
Step 7: Connect Plugin to MCP
In Figma, go to Plugins → Development → Figma Unified MCP Bridge
Click Connect (default settings:
localhost:18211, channelfigma)Status should show "Connected" ✅
Verification
In Claude Desktop or Claude Code, try:
What Figma tools do you have available?Claude should list the tools available for your profile. You can also check the logs:
tail -f ~/Library/Logs/Claude/mcp-server-figma-unified-mcp.logCLI — unified-design
A standalone command-line interface that uses the same REST API + plugin bridge as the MCP server, but without the MCP overhead. No plugin needed for read operations.
Setup
cd figma-unified-mcp
npm install
npm run build
npm link # makes 'unified-design' available globallyWindows note: PowerShell 5.1 does not support
&&. Use;to chain commands (e.g.,npm install; npm run build) or run them on separate lines. Ifunified-designis blocked by execution policy, useunified-design.cmdinstead, or run directly withnode dist/cli.js.macOS / Linux: If
unified-designisn't found afternpm link, ensure your npm global bin directory is in yourPATH:export PATH="$(npm prefix -g)/bin:$PATH" # add to ~/.zshrc or ~/.bashrcOr run directly with
node dist/cli.js.
Plugin Bridge — Coexisting with MCP Server
Canvas write commands (e.g., create-frame, set-fill) require the Figma plugin.
The CLI automatically detects how to connect:
MCP server running? → CLI connects as a client to the existing bridge (no port conflict)
No server running? → CLI starts its own bridge server and waits for the plugin
This means you can use the CLI alongside Claude Desktop / Cursor without stopping the MCP server.
Authentication
# Option 1: Environment variable
export FIGMA_ACCESS_TOKEN=figd_xxx
# Option 2: Config file (~/.figmarc)
unified-design config set accessToken figd_xxx
# Option 3: Auto-discovery (reads from Claude Desktop / Cursor MCP config)
# Just works — no setup needed if you already configured MCPQuick start
# Set a default file so you don't need --file-key every time
unified-design config set defaultFileKey ABC123
# Read operations (REST API — no plugin needed)
unified-design get-file # File tree (depth 2)
unified-design get-node --node-id 123:456 # Single node details
unified-design search --query "Button" # Find nodes by name
unified-design get-styles # All styles
unified-design get-variables # All variables/tokens
unified-design screenshot --node-id 123:456 # Export as PNG
unified-design export-svg --node-id 123:456 # Export as SVG
unified-design audit # Design quality audit
# Paste Figma URLs directly
unified-design get-node --url 'https://figma.com/design/ABC123/File?node-id=1-2'
# Variable operations (REST API — no plugin needed)
unified-design create-variable-collection --name "Colors" --modes light,dark
unified-design create-variable --collection-id <id> --name primary --type COLOR --value "#3B82F6"
unified-design set-variable-value --variable-id <id> --mode-id <id> --value "#1E40AF"
unified-design update-variable --variable-id <id> --name "brand-primary"
unified-design delete-variable --variable-id <id>
# Canvas write operations (need Figma plugin running)
unified-design create-frame --name "Header" --width 375 --height 64
unified-design set-fill --node-id 1:2 --color "#3B82F6"
unified-design set-text --node-id 1:3 --text "Hello World"
unified-design move-node --node-id 1:2 --x 100 --y 200Output control
# Compact JSON (auto-enabled when piping to another command)
unified-design get-styles --compact
# Select specific fields (dot-notation, comma-separated)
unified-design get-file --fields "document.name,document.children"
# Save to file
unified-design get-styles --output styles.json
# Chain with jq
unified-design get-styles | jq '.styles[].name'Short aliases
Alias | Command | Alias | Command |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Interactive REPL
Run without arguments for an interactive session:
unified-design
# >
# unified-design ❯ file
# unified-design ❯ find --query "Logo"
# unified-design ❯ audit --json
# unified-design ❯ /exitUsing CLI as an AI Agent Backend
The CLI is optimized for use with Claude Code and other AI coding agents. When piped (non-TTY), output is automatically compact JSON — ~90% fewer tokens than MCP tool schemas.
Add this to your project's CLAUDE.md:
## Figma CLI
Use `unified-design` CLI to read and modify Figma designs:
- `unified-design get-file --file-key <key> --compact`
- `unified-design search --file-key <key> --query <name>`
- `unified-design screenshot --file-key <key> --node-id <id>`See CLAUDE.md for the full agent instructions.
Tool Profiles
Control how many tools are registered via the TOOL_PROFILE environment variable:
Profile | Tools | Token cost | Best for |
| 43 | ~3,500/msg | Claude $20 plan, daily design work |
| 71 | ~6,500/msg | Prototyping + variables + code connect + advanced modify |
| 112 | ~9,800/msg | Full power, all features |
Set in your MCP config:
{
"env": {
"FIGMA_ACCESS_TOKEN": "figd_...",
"TOOL_PROFILE": "standard"
}
}Non-full profiles include figma_run escape hatch to access excluded tools on demand.
Available Tools
Connection Tools (3)
Tool | Description |
| Check MCP server and plugin connection status |
| Connect to the Figma plugin via WebSocket |
| Send a raw command to the Figma plugin |
Utility Tools (3)
Tool | Description |
| Inspect or clear the in-memory library/component/style cache |
| Escape hatch to run any tool by name (for non-full profiles) |
| Run a registered agent skill/prompt by name |
Read Tools (32)
Tool | Description |
| Get full file structure and metadata |
| Get a specific node by ID |
| Get multiple nodes by IDs |
| Get styles (fileKey → REST API, omit → plugin local styles) |
| Get components (source: file/local/library) |
| Get all variables/design tokens |
| Get all comments on a file |
| Add a comment to a file |
| Search for nodes by name or type |
| Get currently selected nodes in Figma |
| Get published components from team libraries |
| Get published styles from team libraries |
| Get details of a specific component by key |
| Get details of a specific style by key |
| Analyze which external library items a file uses |
| Get version history of a file |
| Get all projects in a team |
| Get all files in a project |
| Scan text nodes with chunking for large designs |
| Find nodes by type (FRAME, TEXT, etc.) |
| Focus on a node and scroll viewport |
| Select multiple nodes and scroll to view |
| Get enabled library variable collections |
| Get variables from a library collection |
| Get current viewport position and zoom |
| Import a published component by key |
| Import library styles by key (batch supported) |
| Get code connect mappings for components |
| Extract design system rules from current file |
| Export a node as PNG/SVG/PDF via plugin |
| Create a new page |
| Switch to a page by name, ID, or index |
Visual/Export Tools (4)
Tool | Description |
| Export nodes as PNG/JPG/SVG/PDF via REST API |
| Screenshot one or more nodes (nodeId or nodeIds[]) as base64 |
| Export a node as SVG code |
| Export a node to a local file (PNG/JPG/SVG/PDF) with configurable scale |
Create Tools (10)
Tool | Description |
| Create a new frame/artboard |
| Create a rectangle shape |
| Create an ellipse/circle |
| Create a text layer |
| Create a reusable component |
| Create an instance of a component |
| Create a line |
| Create a vector path from points (straight or smooth curves) |
| Create a vector node from raw SVG markup |
| Batch multiple create/modify/variable ops in one round-trip |
Modify Tools (19)
Tool | Description |
| Move a node to x, y position |
| Resize a node's width/height |
| Set fills — solid color, linear/radial/angular/diamond gradients, or images |
| Set border/stroke color and weight |
| Set node opacity |
| Show or hide a node |
| Set border radius |
| Change text (single nodeId+content or batch updates[]) |
| Set font size, weight, family — or use 16 built-in presets (e.g., |
| Rename a node |
| Delete nodes (single nodeId or batch nodeIds[]) |
| Clone/duplicate a node with offset |
| Configure auto-layout (flexbox) |
| Add shadows, blurs, glows |
| Group multiple nodes |
| Set resize constraints |
| Move node to different parent |
| Get annotations on nodes |
| Set annotation (single nodeId+label or batch annotations[]) |
Instance Override Tools (2)
Tool | Description |
| Extract instance overrides |
| Apply overrides to instances |
Variable/Token Tools (10) — REST API, no plugin needed
Tool | Description | Transport |
| Create a variable collection | REST API |
| Create a design token variable | REST API |
| Set variable value for a mode | REST API |
| Update variable name/description/scopes | REST API |
| Delete a variable | REST API |
| Delete a variable collection | REST API |
| Bind a variable to a node property | Plugin |
| Create a reusable style | Plugin |
| Apply a style to a node by ID or by name | Plugin |
| Import library styles by key (batch supported) | Plugin |
Prototype Tools (10)
Tool | Description |
| Add click/hover interaction |
| Remove all interactions from node |
| Create a prototype flow starting point |
| Remove a flow starting point |
| List all flows on current page |
| Set default transition for frame |
| Configure overlay behavior |
| Set scroll direction |
| Get all interactions on a node |
| Prepare to present prototype |
Design Quality Tools (3)
Tool | Description |
| Boolean ops (union, subtract, intersect, exclude) |
| Check contrast ratios and touch target sizes |
| Verify spacing, alignment, and overflow |
Code Connect Tools (4)
Tool | Description | Profile |
| Scan a local directory for UI components (React, Vue, Svelte, Angular, Swift, Flutter, Compose) | standard+ |
| Fuzzy-match Figma components to code components with confidence scores | standard+ |
| Publish code file URLs to Figma Dev Mode (bulk) | standard+ |
| Get existing dev resource links from a Figma file | standard+ |
Code Generation Tools (9)
Tool | Description | Profile |
| Generate CSS from node styles | full |
| Generate React component | full |
| Generate SwiftUI view | full |
| Generate semantic HTML | full |
| Generate Tailwind config | full |
| Export design tokens | full |
| Generate developer handoff spec | full |
| Generate a complete code bundle (HTML + CSS + JS) | standard+ |
| Analyze for best codegen approach | full |
Available Agent Skills (14)
See skills.md for all 14 agent skills and their parameters.
Usage Examples
Example 1: Read a Figma File
You say:
Can you analyze my Figma file? The URL is:
https://www.figma.com/design/ABC123xyz/MyDesignClaude will:
Extract the file key from the URL
Use
figma_get_fileto fetch the structureSummarize pages, frames, and components
Example 2: Get Design Tokens
You say:
What colors and text styles are defined in file ABC123xyz?Claude will:
Use
figma_get_stylesto get all stylesUse
figma_get_variablesto get variablesPresent them in an organized list
Example 3: Create a Button Component
You say:
Create a primary button component in Figma with:
- Blue background (#3B82F6)
- White text "Click me"
- 16px padding
- 8px border radiusClaude will:
Use
figma_connect_pluginto connectUse
figma_create_componentto create the componentUse
figma_create_textto add the labelUse
figma_set_fillto set the blue backgroundUse
figma_set_auto_layoutto add paddingUse
figma_set_corner_radiusto round corners
Example 4: Build a Login Screen
You say:
Design a mobile login screen with email, password fields, and a sign in button.Claude will:
Create a frame (375x812 for mobile)
Add a logo placeholder
Create input fields with labels
Add a primary button
Apply consistent spacing with auto-layout
Example 5: Generate React Code
You say:
Generate a React component from the card in node 123:456Claude will:
Use
figma_generate_reactwith the node IDReturn a complete React component with Tailwind classes
Example output:
interface CardProps {
text?: string;
}
export function Card(props: CardProps) {
return (
<div className="flex flex-col gap-4 p-6 bg-white rounded-xl shadow-lg">
<h2 className="text-xl font-semibold">Card Title</h2>
<p className="text-gray-600">Card description goes here</p>
<button className="bg-blue-500 text-white px-4 py-2 rounded-lg">
Action
</button>
</div>
);
}Example 6: Export Design Tokens
You say:
Export all design tokens from my file as CSS variablesClaude will:
Use
figma_generate_tokenswith format "css"Return CSS custom properties
Example output:
:root {
--color-primary: #3B82F6;
--color-secondary: #10B981;
--color-neutral-100: #F3F4F6;
--color-neutral-900: #111827;
--font-size-heading: 24px;
--font-size-body: 16px;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
}Example 7: Add Prototype Interaction
You say:
Make the login button navigate to the Dashboard frame when clicked, with a slide animationClaude will:
Use
figma_create_interactionwith:trigger:
ON_CLICKaction:
NAVIGATEdestinationId: (dashboard frame ID)
transition:
SLIDE_INdirection:
LEFTduration:
300
Example 8: Review Comments
You say:
What comments are on file ABC123xyz? Are any unresolved?Claude will:
Use
figma_get_commentsto fetch all commentsList each comment with:
Author name
Message content
Created date
Resolved status
Example 9: Audit Design System
You say:
/audit_design_system
fileKey: ABC123xyzClaude will run a comprehensive audit checking:
✅ Color consistency (are colors using styles/variables?)
✅ Typography scale (is there a defined type scale?)
✅ Spacing consistency (8px grid?)
✅ Component usage (are components properly structured?)
✅ Variable coverage (what's tokenized vs hardcoded?)
Example 10: Generate SwiftUI
You say:
Convert the profile card to SwiftUI codeClaude will:
Use
figma_generate_swiftuiReturn SwiftUI code
Example output:
import SwiftUI
struct ProfileCard: View {
var body: some View {
VStack(spacing: 16) {
Image("avatar")
.resizable()
.frame(width: 80, height: 80)
.clipShape(Circle())
Text("John Doe")
.font(.system(size: 20))
.fontWeight(.semibold)
Text("Product Designer")
.font(.system(size: 14))
.foregroundColor(.gray)
}
.padding(24)
.background(Color.white)
.cornerRadius(16)
}
}
struct ProfileCard_Previews: PreviewProvider {
static var previews: some View {
ProfileCard()
}
}Example 11: Create Variables/Tokens
You say:
Create a color variable collection with primary, secondary, and neutral colors that support light and dark modesClaude will:
Use
figma_create_variable_collectionwith modes "Light" and "Dark"Use
figma_create_variablefor each colorUse
figma_set_variable_valueto set values per mode
Example 12: Search and Modify
You say:
Find all buttons in my file and change their corner radius to 12pxClaude will:
Use
figma_searchto find nodes named "button"Use
figma_set_corner_radiuson each result
Example 13: Set Gradient Fill
You say:
Apply a sunset gradient (orange to purple) to the hero section backgroundClaude will:
Use
figma_set_fillwith afillsarray:
{
"nodeId": "1:23",
"fills": [{
"type": "GRADIENT_LINEAR",
"gradientStops": [
{ "position": 0, "color": { "r": 1, "g": 0.5, "b": 0, "a": 1 } },
{ "position": 1, "color": { "r": 0.6, "g": 0.2, "b": 0.8, "a": 1 } }
]
}]
}Example 14: Export to Local File
You say:
Export the hero banner to my Desktop as a PNG at 2x scaleClaude will:
Use
figma_export_to_filewith:nodeId: the hero banner nodefilePath:~/Desktop/hero-banner.pngscale: 2
Example 15: Text Style Presets
You say:
Make the title use heading-xl style and the body use body-mdClaude will:
Use
figma_set_text_stylewithpreset: "heading-xl"(96px bold)Use
figma_set_text_stylewithpreset: "body-md"(16px regular)
Available presets: display, heading-xl/lg/md/sm/xs, body-xl/lg/md/sm/xs, label-lg/md/sm, caption, overline
Example 16: Code Connect — Link Components to Code
You say:
Scan my project at ~/my-app/src and link matching components to FigmaClaude will:
Use
figma_scan_codebaseto find React/Vue/Svelte componentsUse
figma_match_componentsto fuzzy-match against Figma componentsReview confidence scores with you
Use
figma_publish_dev_resourcesto attach GitHub URLs to Figma Dev Mode
Developers then see code links directly in Figma's Dev Mode panel.
Architecture
┌─────────────────┐ stdio ┌──────────────────┐
│ Claude Client │◄──────────────►│ MCP Server │
└─────────────────┘ │ (Node.js) │
└────────┬─────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ REST API │ │ REST API │ │ WebSocket │
│ (Read) │ │ (Write) │ │ Server:18211 │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Figma API │ │ Figma API │ │ Figma Plugin │
│ api.figma.com│ │ api.figma.com│ │ (in Figma) │
└───────────────┘ └───────────────┘ └───────────────┘
Read operations Variable writes Canvas writes
(files, styles, (create, update, (create frames,
components) delete tokens) modify nodes)
NO PLUGIN NEEDED PLUGIN REQUIREDThree data paths:
REST API (Read) — File data, styles, components, variables (no plugin)
REST API (Write) — Variable/token CRUD operations (no plugin needed)
WebSocket + Plugin — Canvas manipulation (creating/modifying nodes)
No-plugin mode: All read operations + variable management work with just a Figma access token. You only need the plugin for canvas writes (frames, shapes, text, auto-layout, prototyping).
Troubleshooting
"Plugin not connected"
Make sure Figma Desktop is open
Run the plugin: Plugins → Development → Figma Unified MCP Bridge
Click Connect
Verify status shows "Connected"
"FIGMA_ACCESS_TOKEN not set"
Add your token to claude_desktop_config.json:
"env": {
"FIGMA_ACCESS_TOKEN": "figd_xxxxx"
}"WebSocket connection failed"
The MCP server starts a WebSocket on port 18211. Make sure:
Port 18211 is not in use (change with
FIGMA_WS_PORTenv var)No firewall blocking localhost connections
Check Logs
macOS:
# MCP server logs
tail -f ~/Library/Logs/Claude/mcp-server-figma-unified-mcp.log
# Claude Desktop logs
tail -f ~/Library/Logs/Claude/mcp.logWindows (PowerShell):
# MCP server logs
Get-Content "$env:APPDATA\Claude\Logs\mcp-server-figma-unified-mcp.log" -Wait
# Claude Desktop logs
Get-Content "$env:APPDATA\Claude\Logs\mcp.log" -WaitDevelopment
Rebuild after changes
# MCP server + CLI
npm run build
# Figma plugin (use ; instead of && on Windows PowerShell)
cd figma-plugin; npm run build
# Run tests
npm testRunning tests
npm test # Run all tests once
npm run test:watch # Watch modeProject Structure
figma-unified-mcp/
├── src/
│ ├── server.ts # MCP server entry
│ ├── cli.ts # CLI entry (unified-design)
│ ├── config.ts # Configuration & URL parsing
│ ├── types.ts # TypeScript types
│ ├── cli/
│ │ ├── colors.ts # ANSI color utilities
│ │ └── audit.ts # Design audit command
│ ├── transport/
│ │ ├── rest-client.ts # Figma REST API
│ │ └── plugin-bridge.ts # WebSocket bridge to plugin
│ ├── tools/
│ │ ├── shared.ts # Shared helpers (toolSuccess, toolError)
│ │ ├── tool-profiles.ts # Profile filtering (minimal/standard/full)
│ │ ├── connection.ts # Connection tools
│ │ ├── read.ts # Read tools (35+)
│ │ ├── visual.ts # Export tools
│ │ ├── create.ts # Create tools
│ │ ├── modify.ts # Modify tools
│ │ ├── variables.ts # Variable tools
│ │ ├── prototype.ts # Prototype tools
│ │ ├── codegen.ts # Code generation tools
│ │ ├── code-connect.ts # Code Connect tools (scan, match, publish)
│ │ ├── skill.ts # Skill tool runner
│ │ └── figma-run.ts # Escape hatch for non-full profiles
│ └── prompts/
│ ├── index.ts # Agent skill registration
│ └── screen-patterns.ts # UX pattern data for design_screen skill
├── tests/
│ ├── config.test.ts # URL parsing & config tests
│ ├── shared.test.ts # Shared helper tests
│ ├── tool-profiles.test.ts # Profile filtering tests
│ └── code-connect.test.ts # Code Connect fuzzy matching & scanner tests
├── figma-plugin/
│ ├── manifest.json # Plugin manifest
│ ├── code.ts # Plugin logic
│ ├── ui.html # Plugin UI
│ └── code.js # Compiled plugin
├── CLAUDE.md # Agent instructions for Claude Code
├── skills.md # All 14 agent skills documentation
├── package.json
├── tsconfig.json
└── tsup.config.tsLicense
MIT
Author
Credits
Built with:
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sso-ss/figma-unified-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server