Figma MCP Server
Figma MCP Server
A powerful MCP (Model Context Protocol) server that connects AI applications to the Figma API, enabling seamless access to Figma designs, automatic HTML/CSS generation, and screenshot capture.
๐ Features
Available MCP Tools
Tool | Description | Use Case |
getFile | Fetch complete Figma file data | Get entire file structure and metadata |
getNode | Fetch specific node from a file | Access individual components or frames |
analyzeDesign | Extract and analyze design properties | Understand component structure and styling |
generateCSS | Generate CSS from Figma nodes | Convert Figma styles to CSS code |
generateHTML | Generate HTML structure | Create semantic HTML from designs |
generateFullDesign | Generate complete HTML/CSS file | Convert entire designs to working code |
getImage | Capture screenshots/renders | Export designs as PNG, JPG, SVG, or PDF |
generateDesignWithScreenshot | Generate HTML/CSS with screenshot reference | More accurate design-to-code with visual context |
generateBootstrapDesign โญ | Generate Bootstrap 5 + SCSS from Figma | Production-ready responsive designs |
What You Can Do
๐ Extract Design Data - Access complete design specifications
๐จ Generate CSS - Convert Figma styles to production-ready CSS
๐๏ธ Create HTML - Generate semantic HTML structure from designs
๐ธ Capture Screenshots - Export designs as images in multiple formats
๐ Analyze Components - Understand design properties and hierarchy
โก Automate Workflows - Integrate with AI tools like Claude Desktop
๐ Bootstrap Integration โญ NEW - Generate responsive designs with Bootstrap 5 + SCSS
๐ Prerequisites
Node.js v17 or higher
Figma Personal Access Token (not a file access token)
๐ ๏ธ Installation
1. Clone and Install
git clone <your-repo-url>
cd figma-mcp
npm install2. Configure Figma Token
Create a .env file in the root directory:
FIGMA_TOKEN=your_personal_access_token_hereGetting Your Token:
Go to Figma Account Settings
Scroll to "Personal access tokens"
Click "Create a new personal access token"
Copy the token and add it to
.env
โ ๏ธ Important: Use a Personal Access Token, not a file-specific token.
3. Build the Project
npm run build๐ฏ Usage
With Claude Desktop
Add to your Claude config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"figma": {
"command": "node",
"args": ["C:\\path\\to\\figma-mcp\\build\\index.js"]
}
}
}With VS Code MCP
Add to .vscode/mcp.json:
{
"servers": {
"figma-mcp-server": {
"type": "stdio",
"command": "npm",
"args": ["start"]
}
}
}๐ Tool Usage Examples
Understanding Figma URLs
For a URL like:
https://www.figma.com/design/YwUqmarhRx74Gb4zePtEUx/My-Design?node-id=8384-4File Key:
YwUqmarhRx74Gb4zePtEUxNode ID:
8384-4(or8384:4- both formats work)
1. Analyze Design Structure
Use analyzeDesign with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4Returns detailed design properties including:
Component hierarchy
Colors and fills
Typography settings
Dimensions and positioning
2. Generate CSS Styles
Use generateCSS with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4
- className: .my-component (optional)Generates production-ready CSS with:
Colors (rgba format)
Typography (font-family, size, weight)
Layout (width, height, padding)
Effects (shadows, borders, border-radius)
3. Generate HTML Structure
Use generateHTML with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4Creates semantic HTML structure matching your Figma hierarchy.
4. Generate Complete HTML/CSS Page
Use generateFullDesign with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4Generates a complete HTML file with:
Inline CSS styles
Semantic HTML structure
Responsive reset styles
Proper typography and spacing
5. Capture Screenshots/Images
Use getImage with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4
- format: png (or jpg, svg, pdf)
- scale: 2 (optional, 0.01 to 4)Format Guide:
PNG - Best for UI designs with transparency (recommended)
JPG - Smaller file size, no transparency
SVG - Vector format, scalable
PDF - Print-ready documents
Scale Options:
1- Original size (default)2- Retina/HiDPI displays (recommended)3-4- Very high resolution (print quality)0.01-0.99- Thumbnails/previews
Returns a temporary download URL (valid ~30 minutes).
6. Generate Design with Screenshot Reference (Enhanced) โญ
Use generateDesignWithScreenshot with:
- fileKey: YwUqmarhRx74Gb4zePtEUx
- nodeId: 8384-4
- includeScreenshot: true (optional, default true)What makes this special: This tool combines both the Figma API data AND a screenshot of the actual design to give you more accurate HTML/CSS generation.
Benefits:
๐ธ Visual Reference - Screenshot URL included in CSS comments
๐ฏ More Accurate - Generate code with visual context
๐ก Better Guidance - Comments suggest how to match the screenshot
๐ Side-by-side Comparison - Easily compare output with original
Perfect for:
Pixel-perfect implementations
Complex layouts requiring visual verification
When you want to ensure design fidelity
Learning how designs translate to code
๐งช Testing Tools
Run test scripts from the tests/ directory. All outputs are saved to the output/ folder.
Test Bootstrap-Enhanced Generation ๐ RECOMMENDED
npx tsx tests/test-bootstrap-enhanced.tsGenerates production-ready designs with:
โ Bootstrap 5 framework included
โ SCSS source files (editable)
โ Compiled CSS embedded in HTML
โ Semantic class names from Figma
โ Screenshot reference for comparison
โ Responsive, mobile-first layout
Output: output/{component-name}.html, output/{component-name}.scss, output/{component-name}-screenshot.png
Why use this? Generates designs that actually look like the screenshot!
Test HTML/CSS Generation
npx tsx tests/test-tool.tsGenerates output/output.html with complete HTML/CSS from a Figma design.
Test Enhanced Generation with Screenshot
npx tsx tests/test-screenshot-enhanced.tsGenerates output/output-with-screenshot.html AND downloads a reference screenshot to output/screenshot-{nodeId}.png. The HTML includes comments with the screenshot path for easy comparison.
Test Image Capture
npx tsx tests/test-image.tsDownloads a screenshot as output/figma-screenshot-{nodeId}.png
Test Token Validation
npx tsx tests/test-token.tsValidates your Figma API token and permissions.
๐๏ธ Project Structure
figma-mcp/
โโโ src/
โ โโโ index.ts # Main MCP server implementation
โโโ tests/
โ โโโ test-bootstrap-enhanced.ts # ๐ Bootstrap + SCSS generation (RECOMMENDED)
โ โโโ test-tool.ts # HTML/CSS generation test
โ โโโ test-screenshot-enhanced.ts # Enhanced generation with screenshot
โ โโโ test-image.ts # Image capture test
โ โโโ test-token.ts # Token validation test
โ โโโ README.md # Test documentation
โโโ output/ # Generated HTML/CSS and screenshots
โ โโโ .gitignore # Ignores generated files
โ โโโ README.md # Output folder guide
โโโ docs/
โ โโโ TROUBLESHOOTING.md # Common issues and solutions
โ โโโ CSS-IMPROVEMENTS.md # CSS generation details
โ โโโ IMAGE-FEATURE.md # Screenshot feature guide
โ โโโ SCREENSHOT-ENHANCED.md # Enhanced generation guide
โ โโโ BOOTSTRAP-ENHANCED.md # ๐ Bootstrap + SCSS guide (NEW)
โ โโโ README.md # Documentation index
โโโ build/ # Compiled JavaScript output
โโโ .env # Environment variables (not in git)
โโโ .gitignore
โโโ package.json
โโโ tsconfig.json
โโโ README.md๐ง Development
Build Commands
# Build once
npm run build
# Build and watch for changes
npm run build -- --watch
# Start the server
npm startSupported Figma Properties
Layout:
Width, height, positioning
Padding and margins
Border radius
Typography:
Font family, size, weight
Line height, text alignment
Text content
Colors:
Fill colors (solid, gradients)
Stroke/border colors
Opacity/transparency
Effects:
Drop shadows
Box shadows
Border styles
๐ Documentation
TROUBLESHOOTING.md - Common issues and fixes
CSS-IMPROVEMENTS.md - CSS generation details
IMAGE-FEATURE.md - Screenshot capabilities
๐ Troubleshooting
"Invalid token" Error
โ Solution: Use a Personal Access Token, not a file access token
Go to Figma Settings โ Personal access tokens
Create a new token with full API access
Update your
.envfile
Node Not Found
โ Solution: Check node ID format
Both
8384-4and8384:4workGet node ID from Figma URL or inspect panel
Class Names Not Working
โ Solution: Already fixed in latest version
Class names are normalized (colons โ dashes)
CSS selectors are valid
See docs/TROUBLESHOOTING.md for more solutions.
๐ Security
โ ๏ธ Never commit
.env- Contains your Figma tokenโ Use environment variables for all secrets
๐ For production, follow MCP Authorization Best Practices
๐ Use Cases
Design-to-Code - Convert Figma designs to HTML/CSS automatically
Design Systems - Extract component styles for documentation
Asset Export - Batch export design elements as images
Design Review - Capture screenshots for presentations
AI Integration - Connect Figma to AI tools via MCP
Automation - Build workflows with Figma data
๐ References
๐ License
MIT
Made with โค๏ธ for the design-to-code community
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MinhazTopaz/figma-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server