Skip to main content
Glama
haju-xp

figma-free-mcp

by haju-xp
README.md
# 🎨 Figma MCP for Free Plan
https://smithery.ai/servers/haju-xp/figma-free-mcp

> Connect Claude to Figma with zero friction.
> No paid plan. No channel ID copy-paste. Just works.

[![npm](https://img.shields.io/npm/v/figma-free-mcp)](https://www.npmjs.com/package/figma-free-mcp)
[![smithery](https://img.shields.io/badge/smithery-figma--free--mcp-orange)](https://smithery.ai/server/haju-xp/figma-free-mcp)
[![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)

---

## ✨ Why this exists

| | Figma Official MCP | ClaudeTalkToFigma | **figma-free-mcp** |
|---|---|---|---|
| Free plan | ❌ Paid only | βœ… | βœ… |
| Auto-connect | βœ… | ❌ Manual channel ID | βœ… **Auto-detect** |
| Tools | Many | 70+ | **100+** |
| One-line install | ❌ | ❌ | βœ… |

---

## πŸš€ Quick Start (4 steps)

### Step 1 β€” Install MCP + download plugin

```bash
npx figma-free-mcp@latest setup
```

This will:
- βœ… Register MCP in **Claude Desktop** automatically
- βœ… Download the Figma plugin to `~/.figma-free-mcp/plugin/`
- βœ… Show you the exact manifest path

### Step 2 β€” Install the Figma plugin (one-time)

1. Open **Figma Desktop**
2. Menu β†’ **Plugins** β†’ **Development** β†’ **Import plugin from manifest...**
3. Select the path shown in Step 1:

       C:\Users\[YourName]\.figma-free-mcp\plugin\manifest.json

This will:
- βœ… Register the Figma plugin in your **Figma Desktop**

### Step 3 β€” Start the relay server

```bash
figma-free-mcp socket
```

This will:
- βœ… Start the **WebSocket** relay server between **Claude** and **Figma**
- βœ… Keep the connection alive while you work

> ⚠️ Must run this BEFORE opening the **Figma plugin**. Keep this terminal open while using **Claude** with **Figma**.

### Step 4 β€” Open the Figma plugin

1. Open your **Figma** file
2. Menu β†’ **Plugins** β†’ **Figma Free MCP**

This will:
- βœ… Auto-connect to the relay server
- βœ… No channel ID needed

---

## πŸ’¬ Usage

Once everything is running, just talk to Claude naturally:

```
"Figma에 λ²„νŠΌ μ»΄ν¬λ„ŒνŠΈ λ§Œλ“€μ–΄μ€˜"
"쀑볡 νŽ˜μ΄μ§€ μ°Ύμ•„μ„œ μ •λ¦¬ν•΄μ€˜"
"globals.css 색상 토큰을 Figma λ³€μˆ˜λ‘œ μ‹±ν¬ν•΄μ€˜"
"이 React μ»΄ν¬λ„ŒνŠΈλ₯Ό Figma ν”„λ ˆμž„μœΌλ‘œ λ³€ν™˜ν•΄μ€˜"
```

Claude automatically detects your open Figma file β€” **no channel ID needed!**

---

## πŸ—‚οΈ Working with Multiple Files (Concurrent Editing)

Edit several Figma files in one session β€” still **no channel IDs**, just file names.

**Setup:** open each file and run the plugin in it (one plugin instance per file β€” a Figma limitation: a plugin can only touch the file it runs in).

```
"μ–΄λ–€ Figma νŒŒμΌλ“€μ΄ μ—΄λ € μžˆμ–΄?"          β†’ list_active_channels (shows file & page names)
"λ―Έλ“€λ§ˆμΌ μ£Όλ¬Έ νŒŒμΌμ— λ²„νŠΌ λ§Œλ“€μ–΄μ€˜"        β†’ connect_to_file then edit, or run_on_file
"λ―Έλ“€λ§ˆμΌμ—” 헀더, 정산관리엔 합계 ν…μŠ€νŠΈ λ„£μ–΄μ€˜"  β†’ runs on both files concurrently
```

| Tool | When to use |
|------|-------------|
| `connect_to_file("name")` | Focus one file β€” following commands all go there |
| `run_on_file("name", cmd, params)` | Send one command to a specific file **without** switching β€” repeat across files to edit them concurrently |

> ⚠️ Each file you want to edit must have its own running plugin instance. A file that's only open in the background (no plugin) cannot be edited.

---

## πŸ› οΈ All Tools (100+)

### πŸ”Œ Auto-Connect & Multi-File
| Tool | Description |
|------|-------------|
| `auto_connect` | Auto-detect active Figma sessions and connect |
| `list_active_channels` | List open Figma plugin sessions **with their file & page names** |
| `connect_to_file` | Connect by **file name** instead of channel ID (switches the active file) |
| `run_on_file` | Run one command on a specific file **without switching** β€” enables concurrent multi-file editing |

### πŸ“„ Document & Pages
`get_document_info`, `get_pages`, `get_selection`, `get_node_info`, `get_nodes_info`, `scan_text_nodes`, `get_styles`, `get_local_components`, `get_remote_components`, `get_variables` and more

### πŸ–ΌοΈ Creation
`create_frame`, `create_rectangle`, `create_ellipse`, `create_text`, `create_page`, `create_component_from_node`, `create_component_instance`, `create_component_set` and more

### ✏️ Modification
`set_fill_color`, `set_stroke_color`, `set_text_content`, `set_font_size`, `set_corner_radius`, `set_auto_layout`, `move_node`, `resize_node`, `delete_node`, `clone_node` and more

### 🎨 Design System Sync
| Tool | Description |
|------|-------------|
| `sync_css_to_figma` | CSS variables β†’ Figma variable collections |
| `sync_figma_to_css` | Figma variables β†’ CSS custom properties |
| `compare_design_tokens` | Diff report between CSS and Figma |
| `apply_design_system` | Apply design policy doc to Figma |
| `audit_design_consistency` | Find policy violations in Figma file |

### πŸ“‹ Page Manager
| Tool | Description |
|------|-------------|
| `list_all_pages_detailed` | All pages + frame count + duplicate detection |
| `deduplicate_pages` | Auto-merge/remove duplicate pages |
| `organize_pages` | Sort pages by number or alphabetically |
| `cleanup_empty_pages` | Remove empty pages |

### ⚑ Code to Figma
| Tool | Description |
|------|-------------|
| `react_to_figma` | React/TSX component β†’ Figma frame |
| `css_class_to_figma_style` | CSS classes β†’ Figma local styles |
| `generate_component_variants` | Generate hover/active/disabled variants |

---

## πŸ—οΈ Architecture

```
Claude Desktop
    β”‚
    β”‚ stdio (MCP)
    β–Ό
figma-free-mcp server (100+ tools)
    β”‚
    β”‚ WebSocket (port 3055)
    β–Ό
Figma Plugin (auto-connect)
    β”‚
    β”‚ Figma API
    β–Ό
Your Figma File ✨
```

---

## βš™οΈ Commands Reference

```bash
# Install & register MCP
npx figma-free-mcp@latest setup

# Start WebSocket relay server
figma-free-mcp socket

# Uninstall
npx figma-free-mcp@latest uninstall
```

---

## πŸ”„ Upgrading from v1.0.7 or earlier

─────────────────────────────

If you see a recurring **"MCP figma-free-mcp-socket: Server disconnected"** error in Claude Desktop, run this once:

```bash
npx figma-free-mcp@latest setup
```

Then restart Claude Desktop. The error will be gone.

─────────────────────────────

---

## ❓ FAQ

**Q. Do I need a paid Figma plan?**
A. No. Works with free Figma accounts.

**Q. Do I need Claude Pro?**
A. Any Claude Desktop plan works.

**Q. The plugin shows "Disconnected"**
A. Make sure the relay server is running: `figma-free-mcp socket`

**Q. Multiple Figma files are open**
A. `list_active_channels` shows each session with its file & page name. Use `connect_to_file("name")` to focus one, or `run_on_file("name", ...)` to edit several files concurrently β€” no channel IDs needed. Each file must have its own running plugin instance.

**Q. Port 3055 is already in use**
A. Kill the existing process: `netstat -ano | findstr :3055` then `taskkill /PID [number] /F`

---

## ⚠️ License & Usage

MIT License β€” free to use and modify.

βœ… Personal & commercial use allowed
βœ… Modification allowed
❌ Claiming as your own work prohibited
❌ Removing author credit prohibited

Β© 2026 [haju-xp](https://github.com/haju-xp)

---

## πŸ™ Credits

Built on top of [claude-talk-to-figma-mcp](https://github.com/arinspunk/claude-talk-to-figma-mcp) by arinspunk (MIT License).

TDQS

B3.1/5.0

Scored across 100 tools

Disambiguation3/5

Many tools target the same resource with fine-grained operations (e.g., multiple fill-setting tools, many text property setters, and get_node_info vs get_nodes_info). While descriptions clarify distinctions, the sheer number of tools increases risk of misselection, especially between set_image and set_image_fill, or among text manipulation tools.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., set_fill_color, create_rectangle, delete_node). A few outliers like boolean_operation and css_class_to_figma_style break the pattern, but these are rare. Overall naming is predictable and clear.

Tool Count2/5

100 tools is very heavy for an MCP server. While the scope (Figma design, FigJam, variables, CSS) is broad, many tools could be combined (e.g., all text property setters could be a single set_text_properties). This count overwhelms the agent and exceeds typical expectations for a coherent tool set.

Completeness5/5

The tool set covers the full lifecycle of Figma objects: create, read, update, delete for frames, pages, components, instances, styles, variables, and more. Also includes design system audit, CSS sync, and FigJam-specific tools. No obvious gaps for common design tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues