mcpField
F
Figma MCP

Figma MCP

Local
github.com/1yhyMedia & Design30Updated 47w ago

About Figma MCP

Figma Context MCP is an MCP server that gives AI coding tools such as Cursor, Windsurf, and Cline access to Figma design data. It is aimed at developers who generate code from designs and adds layout inference and caching to its data output.

Key features

  1. 01Layout detection inferring Flexbox and Grid
  2. 02Merging vector layers into exportable icons
  3. 03Converting Figma styles to CSS
  4. 04Two-layer cache to reduce API calls
  5. 05Built-in design-to-code prompt templates

Use cases

  1. 01Implementing pages from Figma designs in AI coding tools
  2. 02Downloading images and icons from design files
  3. 03Extracting design tokens and component lists

MCP support

The server exposes tools such as get_figma_data and download_figma_images, prompt templates, and figma:// resources to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"figma-context-mcp-1yhy": {
"command": "npx",
"args": [
"-y",
"figma-mcp"
]
}
}
}
Run commandnpx -y figma-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmfigma-mcp

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
urlstringYesThe URL of the Figma file to add

Details

From the project README


Figma MCP
Figma Context MCP

MCP server for seamless Figma design integration with AI coding tools

Smithery Badge npm version License Stars TypeScript MCP SDK

Features • Quick Start • MCP Capabilities • Architecture • Documentation • 中文文档


What is This?

Figma Context MCP is a Model Context Protocol (MCP) server that bridges Figma designs with AI coding assistants like Cursor, Windsurf, and Cline.

When AI tools can access Figma design data directly, they generate more accurate code on the first try—far better than using screenshots.

Note: This project is based on Figma-Context-MCP, with optimized data structures and intelligent layout detection algorithms.

Features

Core Capabilities
CapabilityDescription
Smart Layout DetectionAutomatically infers Flexbox/Grid layouts from absolute positioning
Icon MergingIntelligently merges vector layers into single exportable icons
CSS GenerationConverts Figma styles to clean, usable CSS
Image ExportDownloads images and icons with proper naming
Multi-layer CachingL1 memory + L2 disk cache to reduce API calls
Design-to-Code PromptsBuilt-in professional prompt templates to guide AI code generation
Lightweight Resource AccessResources API provides low-token data access
Key Improvements
FeatureBeforeAfter
Icon exports~45 fragmented2 merged (96% reduction)
Layout detectionManual absoluteAuto Flexbox/Grid inference
CSS outputRaw valuesOptimized with defaults removed
API callsEvery request24-hour smart caching

Quick Start

Prerequisites
  • Node.js >= 18.0.0
  • A Figma account with API access
Installation

Via Smithery (Recommended)

npx -y @smithery/cli install @1yhy/Figma-Context-MCP --client claude

Via npm

npm install -g @yhy2001/figma-mcp-server

From Source

git clone https://github.com/1yhy/Figma-Context-MCP.git
cd Figma-Context-MCP
pnpm install
pnpm build
Configuration
1. Get Figma API Token
  1. Go to Figma Account Settings
  2. Scroll to "Personal access tokens"
  3. Click "Create new token"
  4. Copy the token
2. Configure Your AI Tool
Cursor / Windsurf / Cline

Add to your MCP configuration file:

{
  "mcpServers": {
    "Figma": {
      "command": "npx",
      "args": ["-y", "@yhy2001/figma-mcp-server", "--stdio"],
      "env": {
        "FIGMA_API_KEY": "your-figma-api-key"
      }
    }
  }
}
HTTP/SSE Mode (Local Development)
# From source (development)
cp .env.example .env  # Add FIGMA_API_KEY to .env
pnpm install && pnpm build
pnpm start            # Starts on port 3333

# Or with environment variable
FIGMA_API_KEY=<your-key> pnpm start

# Or via global install
figma-mcp --figma-api-key=<your-key> --port=3333

# Connect via SSE
# URL: http://localhost:3333/sse
Usage Example
Please implement this Figma design: https://www.figma.com/design/abc123/MyDesign?node-id=1:234

Use React and Tailwind CSS.

MCP Capabilities

This server provides full MCP capabilities support:

┌─────────────────────────────────────────────────────────────┐
│                  Figma MCP Server v1.1.0                    │
├─────────────────────────────────────────────────────────────┤
│  Tools (2)                        AI-invoked operations     │
│  ├── get_figma_data              Fetch design data          │
│  └── download_figma_images       Download image assets      │
├─────────────────────────────────────────────────────────────┤
│  Prompts (3)                      User-selected templates   │
│  ├── design_to_code              Full design-to-code flow   │
│  ├── analyze_components          Component structure        │
│  └── extract_styles              Style token extraction     │
├─────────────────────────────────────────────────────────────┤
│  Resources (5)                    Lightweight data sources  │
│  ├── figma://help                Usage guide                │
│  ├── figma://file/{key}          File metadata (~200 tok)   │
│  ├── figma://file/{key}/styles   Design tokens (~500 tok)   │
│  ├── figma://file/{key}/components Component list (~300 tok)│
│  └── figma://file/{key}/assets   Asset inventory (~400 tok) │
└─────────────────────────────────────────────────────────────┘
Tools
ToolDescriptionParameters
get_figma_dataFetch simplified design datafileKey, nodeId?, depth?
download_figma_imagesDownload images and iconsfileKey, nodes[], localPath
Prompts

Built-in professional prompt templates to help AI generate high-quality code:

PromptDescriptionParameters
design_to_codeComplete design-to-code workflowframework?, includeResponsive?
analyze_componentsAnalyze component structure and reusability-
extract_stylesExtract design tokens-

design_to_code workflow includes:

  1. Project Analysis - Read theme config, global styles, component library
  2. Structure Analysis - Identify page patterns, component splitting strategy
  3. ASCII Layout Blueprint - Generate layout diagram with component and asset annotations
  4. Asset Management - Analyze, download, and organize images/icons
  5. Code Generation - Generate code following project conventions
  6. Accessibility Optimization - Semantic HTML, ARIA labels
  7. Responsive Adaptation - Mobile layout adjustments
Resources

Lightweight data access to save tokens:

# Get file metadata (~200 tokens)
figma://file/abc123

# Get design tokens (~500 tokens)
figma://file/abc123/styles

# Get component list (~300 tokens)
figma://file/abc123/components

# Get asset inventory (~400 tokens)
figma://file/abc123/assets

Resources vs Tools comparison:

FeatureToolsResources
ControllerAI auto-invokedUser/client initiated
Token costHigher (full data)Lower (summaries)
Use caseExecute actionsBrowse and explore

Architecture

┌──────────────────────────────────────────────────────────────┐
│                        MCP Server                            │
├──────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │
│  │   Tools     │  │   Prompts   │  │     Resources       │   │
│  │ (2 tools)   │  │ (3 prompts) │  │   (5 resources)     │   │
│  └──────┬──────┘  └─────────────┘  └──────────┬──────────┘   │
│         │                                      │              │
│         └──────────────────┬───────────────────┘              │
│                            ▼                                  │
│  ┌────────────────────────────────────────────────────────┐  │
│  │                   FigmaService                         │  │
│  │          API Calls • Validation • Error Handling       │  │
│  └────────────────────────┬───────────────────────────────┘  │
│                           │                                  │
│         ┌─────────────────┴─────────────────┐                │
│         ▼                                   ▼                │
│  ┌─────────────────┐              ┌─────────────────────┐    │
│  │   CacheManager  │              │    Parser + Algo    │    │
│  │  L1: LRU Memory │              │  • Layout Detection │    │
│  │  L2: Disk Store │              │  • Icon Merging     │    │
│  └─────────────────┘              │  • CSS Generation   │    │
│                                   └─────────────────────┘    │
└──────────────────────────────────────────────────────────────┘
Cache System

Two-layer cache architecture significantly reduces API calls:

LayerStorageCapacityTTLPurpose
L1Memory LRU100 nodes / 50 images5-10 minHot data fast access
L2Disk500MB24 hoursPersistent cache
Layout Detection Algorithm

Automatically converts absolute positioning to semantic Flexbox/Grid layouts:

Input (Figma absolute positioning):
┌─────────────────────────┐
│ ■ (10,10)  ■ (110,10)   │
│ ■ (10,60)  ■ (110,60)   │
└─────────────────────────┘

Output (Inferred Grid):
display: grid
grid-template-columns: 100px 100px
grid-template-rows: 50px 50px
gap: 10px

Project Structure

src/
├── algorithms/           # Smart algorithms
│   ├── layout/          # Layout detection (Flex/Grid inference)
│   └── icon/            # Icon merge detection
├── core/                 # Core parsing
│   ├── parser.ts        # Figma data parser
│   ├── style.ts         # CSS style generation
│   ├── layout.ts        # Layout processing
│   └── effects.ts       # Effects handling
├── services/             # Service layer
│   ├── figma.ts         # Figma API client
│   └── cache/           # Multi-layer cache system
├── prompts/              # MCP prompt templates
├── resources/            # MCP resource handlers
├── types/                # TypeScript type definitions
├── utils/                # Utility functions
├── server.ts             # MCP server main entry
└── index.ts              # CLI entry

tests/
├── fixtures/             # Test data
│   ├── figma-data/      # Raw JSON from Figma API
│   └── expected/        # Expected output snapshots
├── integration/          # Integration tests
│   ├── layout-optimization.test.ts  # Layout optimization tests
│   ├── output-quality.test.ts       # Output quality validation
│   └── parser.test.ts               # Parser tests
└── unit/                 # Unit tests
    ├── algorithms/      # Algorithm tests (layout, icon detection)
    ├── resources/       # Resource handler tests
    └── services/        # Service layer tests

scripts/
└── fetch-test-data.ts   # Figma test data fetcher

Documentation

Core Algorithms
English中文
Layout Detection布局检测算法
Icon Detection图标检测算法
Cache Architecture缓存架构设计
Research Documents
English中文
Grid Layout ResearchGrid 布局研究
Layout Detection Research布局检测研究
Architecture Documents
English中文
Architecture系统架构

Command Line Options

OptionDescriptionDefault
--figma-api-keyFigma API tokenRequired
--portServer port for HTTP mode3333
--stdioRun in stdio modefalse
--helpShow help-

Contributing

Contributions are welcome!

# Setup
git clone https://github.com/1yhy/Figma-Context-MCP.git
cd Figma-Context-MCP
pnpm install

# Development
pnpm dev          # Watch mode
pnpm test         # Run tests (272 test cases)
pnpm lint         # Lint code
pnpm build        # Build

# Debug
pnpm inspect      # MCP Inspector

# Test with your own Figma data
pnpm tsx scripts/fetch-test-data.ts <fileKey> <nodeId> <outputName>

# Commit (uses conventional commits)
git commit -m "feat: add new feature"
Commit Types
TypeDescription
featNew feature
fixBug fix
docsDocumentation
styleCode style
refactorRefactoring
testTests
choreMaintenance
Release Process (Maintainers)
# 1. Update version in package.json and CHANGELOG.md

# 2. Commit version bump
git add -A
git commit -m "chore: bump version to x.x.x"

# 3. Publish to npm (auto runs: type-check → lint → test → build)
npm login --scope=@yhy2001  # if not logged in
pnpm run pub:release

# 4. Create git tag and push
git tag vx.x.x
git push origin main --tags

# 5. Create GitHub Release (optional)
# Go to https://github.com/1yhy/Figma-Context-MCP/releases/new
Testing with Your Own Figma Data

You can test the layout detection and optimization with your own Figma designs:

1. Configure Environment Variables
# Copy the environment template
cp .env.example .env

# Edit .env file with your configuration
FIGMA_API_KEY=your_figma_api_key_here
TEST_FIGMA_FILE_KEY=your_file_key      # Optional
TEST_FIGMA_NODE_ID=your_node_id        # Optional
2. Fetch Figma Node Data
# Method 1: Using command line arguments (recommended)
pnpm tsx scripts/fetch-test-data.ts <fileKey> <nodeId> <outputName>

# Example: Fetch a specific node
pnpm tsx scripts/fetch-test-data.ts UgtwrncR3GokKDIS7dpm4Z 402-34955 my-design

# Method 2: Using environment variables
TEST_FIGMA_FILE_KEY=xxx TEST_FIGMA_NODE_ID=123-456 pnpm tsx scripts/fetch-test-data.ts

Parameters:

ParameterDescriptionHow to Get
fileKeyFigma file identifierPart after /design/ in URL, e.g., UgtwrncR3GokKDIS7dpm4Z
nodeIdNode IDnode-id= parameter in URL, e.g., 402-34955
outputNameOutput filenameCustom name, e.g., my-design

Example URL Parsing:

https://www.figma.com/design/UgtwrncR3GokKDIS7dpm4Z/MyProject?node-id=402-34955
                            ↑ fileKey                              ↑ nodeId
3. Run Tests to Validate Output
# Run all tests
pnpm test

# Run only integration tests (validate layout optimization)
pnpm test tests/integration/

# View output JSON files
ls tests/fixtures/figma-data/
4. Analyze Optimization Results

Tests automatically validate:

  • Data Compression - Typically >50% compression
  • Layout Detection - Flex/Grid layout recognition rate
  • CSS Properties - Redundant property cleanup
  • Output Quality - Structural consistency checks

If tests fail, the output may not meet expectations. Check error messages to adjust or report an issue.


License

MIT © 1yhy

Acknowledgments


Made with ❤️ for the AI coding community

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.