figma-free-mcp
# π¨ 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.
[](https://www.npmjs.com/package/figma-free-mcp)
[](https://smithery.ai/server/haju-xp/figma-free-mcp)
[](./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
Scored across 100 tools
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.
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.
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.
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.