Claude
Skills
Sign in
Back

figma-context-mcp

Included with Lifetime
$97 forever

Expert guide for using the Figma Context MCP (Framelink) efficiently while avoiding 429 rate-limit errors. Activate when: (1) using Framelink Figma MCP tools (get_figma_data, download_figma_images), (2) fetching Figma designs for code generation, (3) user hits 429 rate limits from Figma API, (4) extracting design tokens or component data from Figma, (5) downloading Figma assets/images, (6) any design-to-code workflow involving Figma URLs. Covers metadata-first fetching, depth-limited node trees, batch image downloads, rate-limit diagnostics, and plan-tier awareness.

Design

What this skill does


# Figma Context MCP

Expert guide for the [Figma Context MCP](https://github.com/GLips/Figma-Context-MCP) (also known as Framelink). Teaches efficient API usage patterns that prevent 429 rate-limit lockouts.

## Tools

| Tool | Purpose | API Tier |
|------|---------|----------|
| `get_figma_data` | Fetch file/node structure, layout, components | Tier 1 (most restricted) |
| `download_figma_images` | Export PNG/SVG renders of specific nodes | Tier 2-3 |

## Critical: Rate Limits

Figma enforces per-plan rate limits. Limits apply based on the **file owner's plan**, not yours:

| Tier | Starter | Pro | Org |
|------|---------|-----|-----|
| Tier 1 (files) | 10/min | 15/min | 20/min |
| Tier 2 (images) | 25/min | 50/min | 100/min |
| Tier 3 | 50/min | 100/min | 150/min |

View/Collab seats get only **6 Tier-1 calls/month**. If accessing files owned by someone on a Starter/free plan, their limits apply to you.

429 lockouts can last **4-5 days**. Prevention is essential.

## Workflow: Metadata-First Pipeline

**Never fetch everything upfront.** Adopt this pipeline to keep most jobs under 2-3 API calls and <500 KB:

### 1. Start with a targeted node, not the whole file

When a user provides a Figma URL like `figma.com/design/FILEKEY/Name?node-id=123-456`, always extract and pass the `nodeId`. Never fetch the entire file when a specific node is available.

```
get_figma_data(fileKey="ABC123", nodeId="123-456", depth=2)
```

### 2. Use minimal depth

Always set `depth` to limit tree traversal:
- **depth=1**: Top-level frame only (layout structure, component names)
- **depth=2**: Frame + direct children (usually sufficient for code generation)
- **depth=3**: Maximum recommended — only when nested auto-layouts require it

**Default if omitted: the API returns the ENTIRE subtree** — often megabytes for complex frames with 50-200+ children. This is the #1 cause of 429 errors.

### 3. Analyze locally before fetching more

After receiving the initial response:
- Identify which child nodes actually need detail (skip hidden, decorative, or library-referenced nodes)
- Extract design tokens (colors, spacing, typography) directly from the response — no extra calls needed
- Build your component structure from what you already have

### 4. Fetch deeper nodes only if necessary

If a specific child node needs more detail, fetch just that node:

```
get_figma_data(fileKey="ABC123", nodeId="child-node-id", depth=1)
```

### 5. Download images last, in small batches

Only request images for the **final deduplicated set** of visual assets you actually need:
- Deduplicate by `imageRef` — multiple nodes can reference the same fill image
- Batch into groups of **5-10 nodes** per call
- Use `pngScale=1` unless the user specifically needs @2x/@3x assets

```
download_figma_images(
  fileKey="ABC123",
  nodes=[{nodeId: "1:2", fileName: "hero", ...}],  # max 5-10 per call
  localPath="./assets",
  pngScale=1
)
```

## When You Hit a 429

See [references/rate-limit-recovery.md](references/rate-limit-recovery.md) for diagnostics and recovery steps.

Quick checklist:
1. **Stop all Figma API calls immediately** — additional calls extend the lockout
2. Check if the file is owned by a Starter/free-plan user (limits are per-owner)
3. If the user has a Pro/Org plan, suggest duplicating the file into their own workspace
4. Wait for `Retry-After` header duration before retrying
5. When retrying, use the minimal-depth pipeline above

## Common Patterns

### Design-to-code (single component)
1. `get_figma_data` with specific `nodeId` + `depth=2` (1 call)
2. Generate code from response — no image calls unless the component contains raster assets
3. If images needed: `download_figma_images` for just the raster fills (1 call)
4. **Total: 1-2 API calls**

### Design-to-code (full page)
1. `get_figma_data` with page `nodeId` + `depth=1` to get frame list (1 call)
2. Identify the 2-3 key frames that matter
3. `get_figma_data` for each key frame with `depth=2` (2-3 calls)
4. Extract tokens locally, download only unique raster assets (1 call)
5. **Total: 4-5 API calls**

### Extract design tokens only
1. `get_figma_data` with `nodeId` + `depth=2` (1 call)
2. Parse colors, typography, spacing from the response — no image calls needed
3. **Total: 1 API call**

## Anti-Patterns

| Pattern | Problem | Fix |
|---------|---------|-----|
| Omitting `depth` | Returns entire subtree (MB of data) | Always set `depth=2` or less |
| Omitting `nodeId` | Fetches entire file | Always extract `nodeId` from URL |
| Downloading all images upfront | Bursts of image requests hit Tier 2 limits | Download only final deduplicated set |
| Retrying on 429 | Extends lockout duration | Stop, wait for `Retry-After`, then resume with minimal calls |
| Fetching library components | Remote library nodes trigger extra API calls | Use local component data from initial response |
Files: 2
Size: 8.5 KB
Complexity: 26/100
Category: Design

Related in Design