figma-mcp-express 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +324 -0
- package/bin/run.js +30 -0
- package/package.json +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# figma-mcp-express
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://go.dev)
|
|
7
|
+
[](https://www.npmjs.com/package/figma-mcp-express)
|
|
8
|
+
[](https://claude.ai/code)
|
|
9
|
+
[](https://github.com/openai/codex)
|
|
10
|
+
|
|
11
|
+
Enhanced fork of [vkhanhqui/figma-mcp-go](https://github.com/vkhanhqui/figma-mcp-go).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
**Fast, quota-free, agent-ready Figma MCP.** Give AI agents direct read/write access to Figma through a local Desktop plugin, with batch execution, multi-file routing, and stable concurrent sessions that are not capped by Figma's official MCP server tool-call limits.
|
|
16
|
+
|
|
17
|
+
> **Claude Code, Codex, and other coding agents** that can use the local filesystem is **recommended.** Unlike cloud-only MCPs, figma-mcp-express uses the filesystem to optimize the performance and stability.
|
|
18
|
+
|
|
19
|
+
If you are building design migration, audit, or handoff agents, give it a try.
|
|
20
|
+
|
|
21
|
+
| Promise | What it means in practice |
|
|
22
|
+
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
+
| **Fast** | Build with fewer LLM ↔ plugin round-trips by batching dependent operations into one call. |
|
|
24
|
+
| **Quota-free** | Plugin-side work is not capped by Figma's official MCP server limits, such as 6 calls/month for View/Collab seats or 200-600 calls/day for Dev/Full seats. |
|
|
25
|
+
| **Agent-ready** | Multiple agents can share a session safely through channel routing, reconnects, read dedup, and a hardened request queue. |
|
|
26
|
+
|
|
27
|
+
### Why this fork exists
|
|
28
|
+
|
|
29
|
+
| Compared with | What blocks real automation | What figma-mcp-express adds |
|
|
30
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| Official Figma MCP | Seat-based MCP server limits: View/Collab seats get up to 6 calls/month, while Dev/Full seats get daily and per-minute caps. | Local plugin-side read/write access for open files without those official MCP tool-call quotas. |
|
|
32
|
+
| Plain figma-mcp-go | Single-connection assumptions, no batching, no parallel agents, weaker library automation, and reconnect flapping under multi-file or long-running sessions. | Multi-file channels, batch ops, library tooling, response spill-to-disk, reconnect safety, and concurrent agent handling. |
|
|
33
|
+
| Manual Figma cleanup | Repetitive token binding, component replacement, audits, and design-to-code extraction. | Agent workflows that can scan, modify, verify, and report across large files. |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Who this is for
|
|
38
|
+
|
|
39
|
+
- **Coding agents (Claude Code, Codex)** — the primary target. Skills ship with the server and load from the local filesystem, so the agent has structured guidance without burning context on docs. Spill-to-disk keeps large Figma reads out of the context window entirely.
|
|
40
|
+
- Design systems teams migrating products to a new component library or token system
|
|
41
|
+
- Product designers cleaning up large production files without doing every replacement by hand
|
|
42
|
+
- Frontend engineers who need better design-to-code context than screenshots and comments
|
|
43
|
+
- Teams experimenting with multi-agent workflows for audits, migrations, and handoff generation
|
|
44
|
+
|
|
45
|
+
### Before / After
|
|
46
|
+
|
|
47
|
+
| Situation | Without figma-mcp-express | With figma-mcp-express |
|
|
48
|
+
| ---------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
49
|
+
| Official Figma MCP on a restricted seat | You hit seat-based call caps quickly and have to ration automation. | Normal plugin-side work is not capped by the official MCP server limits. |
|
|
50
|
+
| Moving a product to a new design library | Designers swap components and fix spacing one screen at a time. | An agent can inspect the old file, map the new library, and migrate frames in bulk. |
|
|
51
|
+
| Large file audit | The model gets flooded with raw node data or times out on huge reads. | Large reads spill to disk and the agent can inspect only the relevant slice. |
|
|
52
|
+
| Parallel work | Multiple agents easily collide or queue uselessly on the same file. | The bridge isolates channels, coordinates queueing, and supports safer multi-agent sessions. |
|
|
53
|
+
|
|
54
|
+
### Example prompts
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
Migrate these 120 product frames to the new library. Keep the new library's UX patterns, spacing rules, and component variants consistent.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
Scan this file for detached buttons, hardcoded spacing, and off-system color usage. Group the findings by severity and suggest the cleanest replacement path.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
Turn this React settings page into a Figma review artifact using the correct library components, token bindings, and dark-mode variables.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
Read this design system file and generate a DESIGN.md with token scale, text styles, component inventory, and obvious consistency gaps.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
Open the product file and the source library at the same time. Compare their components, then replace outdated instances page by page without touching unaffected areas.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Use cases
|
|
79
|
+
|
|
80
|
+
**For designers**
|
|
81
|
+
|
|
82
|
+
- Automate dull work — find detached components, rebind hardcoded values to tokens, fix deviations from the design system at scale
|
|
83
|
+
- Library swap — migrate a file from one design system to another: remap component keys, rebind tokens, update variants in bulk
|
|
84
|
+
- Frame and layout setup — scaffold auto layout, bind spacing variables, pin color modes — Claude handles the structural work while you focus on designing
|
|
85
|
+
- Design audit — scan for raw values, off-system components, token gaps, and repeated visuals that could become reusable local components
|
|
86
|
+
|
|
87
|
+
**For developers**
|
|
88
|
+
|
|
89
|
+
- Prompt → Figma — generate a Figma counterpart for an existing component or page for design review, using the correct library variants
|
|
90
|
+
- Code handoff — extract token names, auto layout spec, and component references per frame, ready to implement without guessing
|
|
91
|
+
- Learn a file — generate a DESIGN.md (token scale, text styles, color modes, component inventory) from any Figma file
|
|
92
|
+
|
|
93
|
+
**For creators**
|
|
94
|
+
|
|
95
|
+
- Prompt → Figma — describe a screen and have Claude build it end-to-end with real library components and bound tokens
|
|
96
|
+
- Stitch → Figma — take a [Stitch](https://stitch.withgoogle.com) wireframe draft and re-render it in Figma with the correct components, spacing tokens, and variable modes
|
|
97
|
+
- Pattern report — scan a file for what's there, what's reusable, and what's inconsistent before you start building
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Capabilities
|
|
102
|
+
|
|
103
|
+
| Track | Capability | Why it matters |
|
|
104
|
+
| --------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
|
|
105
|
+
| Speed | Fewer back-and-forth steps | The agent can do several related Figma actions in one go, so building or editing a screen feels much faster. |
|
|
106
|
+
| Speed | Large reads stay manageable | Big files do not dump huge walls of data into the model at once, so the agent can stay focused on the part that matters. |
|
|
107
|
+
| Free | No official MCP quota limits | You are not blocked by the official Figma MCP server's monthly or daily call caps for normal plugin-side work. |
|
|
108
|
+
| Access | Direct Figma editing | The agent works on the open Figma file itself, not a disconnected copy or a limited export. |
|
|
109
|
+
| Access | Uses your real design system | It can work with your actual components, variables, and styles instead of rebuilding everything from raw shapes. |
|
|
110
|
+
| Access | Can inspect shared libraries | It can still look up published library assets when the plugin cannot run inside that file. |
|
|
111
|
+
| Stability | Multiple files stay separate | Working on one file does not knock another file offline or mix their state together. |
|
|
112
|
+
| Stability | Safe under parallel agent work | Multiple agents can share the same session without stepping on each other as easily. |
|
|
113
|
+
| Stability | Better recovery from drops | If the connection breaks or the MCP client restarts, the system is designed to recover without forcing a full restart. |
|
|
114
|
+
| Scale | Handles large production files | Big design files stay usable instead of freezing the plugin during long reads or scans. |
|
|
115
|
+
| Handoff | Better design-to-code context | Developers get cleaner output about tokens, layout rules, and component references when turning designs into code. |
|
|
116
|
+
|
|
117
|
+
### One short demo story
|
|
118
|
+
|
|
119
|
+
A single automated run migrated **100+ production design frames** to a new library while following that library's UX patterns, components, and guidelines. Instead of swapping visuals one by one, the agent could inspect the old file, map the new system, replace structures in bulk, and keep the migration consistent across the whole set.
|
|
120
|
+
|
|
121
|
+
### Architecture at a glance
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
typed MCP tools
|
|
125
|
+
AI client ─────────────────────────▶ Go MCP server
|
|
126
|
+
Claude / Codex bridge + queue + gate
|
|
127
|
+
│
|
|
128
|
+
│ JSON over WebSocket
|
|
129
|
+
▼
|
|
130
|
+
Figma Desktop plugin
|
|
131
|
+
live file read/write
|
|
132
|
+
|
|
133
|
+
large payloads ─▶ .figma-mcp-cache/ library catalog ─▶ Figma REST only when needed
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Limitations
|
|
139
|
+
|
|
140
|
+
- RAM usage can be high on very large files, especially when reads spill large payloads to disk and multiple agents are active at once.
|
|
141
|
+
- Some runs may still feel slow because the Figma plugin itself is single-threaded. This fork reduces the bottleneck, but it does not remove the underlying Figma execution model.
|
|
142
|
+
- Most live workflows require the target file to be open in Figma Desktop with the plugin running. This includes reading nodes, editing frames, applying styles or variables, importing components into the file, and multi-file channel-based work.
|
|
143
|
+
- The plugin cannot operate on unopened files.
|
|
144
|
+
- Catalog-only workflows are the main exception, but they still need a `FIGMA_TOKEN` because published library discovery uses the REST path when the plugin cannot run in that file.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Installation
|
|
149
|
+
|
|
150
|
+
Two paths depending on what you need.
|
|
151
|
+
|
|
152
|
+
### Option A — Plugin install (recommended)
|
|
153
|
+
|
|
154
|
+
Includes the MCP server + three skills (`/figma-mcp-express`, `/figma-design-patterns`, `/figma-design-md`) + a PreToolUse hook. No clone or build step required.
|
|
155
|
+
|
|
156
|
+
**Claude Code:**
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
claude plugin marketplace add sunhome243/figma-mcp-express
|
|
160
|
+
claude plugin install figma-mcp-express@figma-mcp-express
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Codex:**
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
codex plugin marketplace add sunhome243/figma-mcp-express
|
|
167
|
+
codex plugin install figma-mcp-express@figma-mcp-express
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Both commands pull the plugin manifest directly from GitHub. For project-scoped install (Claude Code only):
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
claude plugin install figma-mcp-express@figma-mcp-express --scope project
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Option B — Build from source
|
|
177
|
+
|
|
178
|
+
For integrating into other MCP clients, or if you want to modify the server.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
git clone https://github.com/sunhome243/figma-mcp-express.git
|
|
182
|
+
cd figma-mcp-express
|
|
183
|
+
make build # produces bin/figma-mcp-express + plugin/dist/
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Add to your `.mcp.json` (or `claude_desktop_config.json` for Claude Desktop):
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"mcpServers": {
|
|
191
|
+
"figma-mcp-express": {
|
|
192
|
+
"command": "/absolute/path/to/bin/figma-mcp-express",
|
|
193
|
+
"args": ["--port", "1994"]
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
> The `command` path must match the Makefile output (`bin/figma-mcp-express`). Run `figma-mcp-express --version` to confirm the server reloaded your fresh build.
|
|
200
|
+
|
|
201
|
+
Restart Claude Code / Codex. Tools load on demand.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Figma Desktop plugin setup
|
|
206
|
+
|
|
207
|
+
The plugin runs inside **Figma Desktop** (not the browser). It connects to the local MCP server over WebSocket and gives the AI agent direct access to the open file.
|
|
208
|
+
|
|
209
|
+
### Option A — Download from Releases (no clone required)
|
|
210
|
+
|
|
211
|
+
1. Go to the [Releases page](https://github.com/sunhome243/figma-mcp-express/releases/latest) and download **plugin.zip**
|
|
212
|
+
2. Unzip it anywhere — e.g. `~/figma-mcp-express-plugin/`
|
|
213
|
+
3. In Figma Desktop: **Plugins → Development → Import plugin from manifest...**
|
|
214
|
+
4. Navigate to the unzipped folder and select `manifest.json`
|
|
215
|
+
|
|
216
|
+
### Option B — From a cloned repo (build from source)
|
|
217
|
+
|
|
218
|
+
After running `make build` (see [DEV-SETUP.md](DEV-SETUP.md)):
|
|
219
|
+
|
|
220
|
+
1. In Figma Desktop: **Plugins → Development → Import plugin from manifest...**
|
|
221
|
+
2. Navigate to `plugin/` inside the cloned repo and select `manifest.json`
|
|
222
|
+
|
|
223
|
+
> **Where is "Import plugin from manifest..."?**
|
|
224
|
+
> Open any file in Figma Desktop → top menu bar → **Plugins** → hover **Development** → click **Import plugin from manifest...** in the submenu. If you don't see the Development submenu, make sure you are on Figma Desktop (not the web app).
|
|
225
|
+
|
|
226
|
+
### Running the plugin
|
|
227
|
+
|
|
228
|
+
1. Open a Figma file
|
|
229
|
+
2. **Plugins → Development → Figma MCP Express**
|
|
230
|
+
3. The plugin panel shows:
|
|
231
|
+
- **Status** — `Connected` once the MCP server is running, `Waiting for server` otherwise
|
|
232
|
+
- **WebSocket URL** — the address the plugin connected to (default `ws://127.0.0.1:1994`)
|
|
233
|
+
- **Channel ID** — a unique ID for this file's session (pass this as `channel:` in multi-file workflows)
|
|
234
|
+
4. Minimize the panel with the **−** button — it collapses to a small pill and stays out of the way
|
|
235
|
+
|
|
236
|
+
**Multiple files:** open each file and run the plugin in each — every file gets its own channel ID and can be targeted independently.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Environment variables
|
|
241
|
+
|
|
242
|
+
| Variable | Default | Description |
|
|
243
|
+
| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
244
|
+
| `FIGMA_TOKEN` | — | Figma Personal Access Token. Required only for `fetch_library_catalog`. Auto-loaded from `.env`. |
|
|
245
|
+
| `FIGMA_MCP_SPILL_BYTES` | `25000` | Response size threshold. Larger responses spill to `.figma-mcp-cache/`. |
|
|
246
|
+
| `FIGMA_MCP_TIMEOUT` | `120` | Inactivity ceiling in seconds for lightweight ops (writes, metadata reads, styles). Resets on each progress heartbeat. |
|
|
247
|
+
| `FIGMA_MCP_READ_TIMEOUT` | `600` | Inactivity ceiling in seconds for heavy reads (`get_node`, `get_nodes_info`, `get_design_context`, `get_document`, scan/search tools) and `batch`. Resets on each progress heartbeat. A firing timer means retry narrower, not raise the ceiling. |
|
|
248
|
+
|
|
249
|
+
### FIGMA_TOKEN
|
|
250
|
+
|
|
251
|
+
Most tools work without a token — the plugin talks directly to Figma Desktop. You only need `FIGMA_TOKEN` for `fetch_library_catalog`, which hits the REST API to enumerate published components from a read-only shared library.
|
|
252
|
+
|
|
253
|
+
**Generate a token:** Figma → Account Settings → Personal access tokens → Generate new token. Read-only scope (`File content: Read`) is sufficient.
|
|
254
|
+
|
|
255
|
+
**Setting it — depends on your install path:**
|
|
256
|
+
|
|
257
|
+
**Option A (plugin):**
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
echo 'export FIGMA_TOKEN=your_token_here' >> ~/.${SHELL##*/}rc && source ~/.${SHELL##*/}rc
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Option B (build from source):** Add a `.env` file in the project root (already gitignored).
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
FIGMA_TOKEN=your_token_here
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
The binary loads `.env` from its working directory at startup. Shell env always takes precedence over `.env`.
|
|
270
|
+
|
|
271
|
+
> Treat it like a password — it grants read access to all Figma files visible to your account. Never commit it.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## See also
|
|
276
|
+
|
|
277
|
+
- [TOOLS.md](TOOLS.md) — full tool catalog with parameter tables
|
|
278
|
+
- [ARCHITECTURE.md](ARCHITECTURE.md) — batch ref resolution, response gating, singleflight, multi-channel routing
|
|
279
|
+
- [DEV-SETUP.md](DEV-SETUP.md) — build instructions, plugin rebuild, test commands
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Credits
|
|
284
|
+
|
|
285
|
+
Built on [vkhanhqui/figma-mcp-go](https://github.com/vkhanhqui/figma-mcp-go) (MIT). The original established the core insight: skip the REST API, talk directly to Figma Desktop over WebSocket. figma-mcp-express adds multi-channel routing, batch ops, response spill-to-disk, library automation, codegen context, REST catalog, cooperative yield, and depth-limited traversal.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Known limitations
|
|
290
|
+
|
|
291
|
+
### Community UI kits are not importable by key unless published as a library
|
|
292
|
+
|
|
293
|
+
If a community kit has only been published to Community, its components are still **unpublished local components**. This is a Figma platform constraint, not a server bug.
|
|
294
|
+
|
|
295
|
+
Figma has two _unrelated_ meanings of "published" — community kits satisfy only the first:
|
|
296
|
+
|
|
297
|
+
| "Published" | Means | Community kits |
|
|
298
|
+
| -------------------------- | ------------------------------------------------------------- | -------------- |
|
|
299
|
+
| Published **to Community** | the _file_ is shared so anyone can view / duplicate it | ✅ yes |
|
|
300
|
+
| Published **as a library** | the _components_ are importable via `import_component_by_key` | ❌ no |
|
|
301
|
+
|
|
302
|
+
So even the kit's _own_ file cannot import its components by key, and the Plugin API has **no cross-file copy** — this server bridges several open files and moves _data_ between them, but it cannot fabricate a cross-document component _link_. (REST `components: 0` / `404` is **not** the arbiter, either — a kit published as a library after the fact imports fine even while REST still 404s. The live `import_component_by_key` probe decides.)
|
|
303
|
+
|
|
304
|
+
In that state:
|
|
305
|
+
|
|
306
|
+
- `import_component_by_key` fails with `Cannot import component ... since it is unpublished`
|
|
307
|
+
- `fetch_library_catalog` may return `components: 0`
|
|
308
|
+
- cross-file linked instances are not possible; only detached copies
|
|
309
|
+
|
|
310
|
+
> **Workaround**
|
|
311
|
+
>
|
|
312
|
+
> **Option A — publish the duplicated kit as a library**
|
|
313
|
+
>
|
|
314
|
+
> 1. Duplicate the community kit into your drafts or team workspace.
|
|
315
|
+
> 2. Open that duplicate in Figma and publish it from the **Assets** panel.
|
|
316
|
+
> 3. Re-run `import_component_by_key` and then `create_instance` in the target file.
|
|
317
|
+
> 4. This gives you real linked instances with normal variant behavior.
|
|
318
|
+
>
|
|
319
|
+
> **Option B — no publish**
|
|
320
|
+
>
|
|
321
|
+
> 1. Open both the kit file and the target file.
|
|
322
|
+
> 2. Copy the needed components from the kit and paste them into the target file once.
|
|
323
|
+
> 3. Use those pasted local components for future instances in the target file.
|
|
324
|
+
> 4. This works, but the instances are detached local copies, not links back to the kit.
|
package/bin/run.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const { spawnSync } = require('node:child_process');
|
|
5
|
+
const { existsSync } = require('node:fs');
|
|
6
|
+
const path = require('node:path');
|
|
7
|
+
|
|
8
|
+
const PLATFORM_MAP = { darwin: 'darwin', linux: 'linux', win32: 'windows' };
|
|
9
|
+
const ARCH_MAP = { x64: 'amd64', arm64: 'arm64' };
|
|
10
|
+
|
|
11
|
+
const goos = PLATFORM_MAP[process.platform];
|
|
12
|
+
const goarch = ARCH_MAP[process.arch];
|
|
13
|
+
|
|
14
|
+
if (!goos || !goarch) {
|
|
15
|
+
process.stderr.write(`[figma-mcp-express] Unsupported platform: ${process.platform}/${process.arch}\n`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const binaryName = process.platform === 'win32' ? 'figma-mcp-express.exe' : 'figma-mcp-express';
|
|
20
|
+
const binaryPath = path.join(__dirname, `${goos}-${goarch}`, binaryName);
|
|
21
|
+
|
|
22
|
+
if (!existsSync(binaryPath)) {
|
|
23
|
+
process.stderr.write(
|
|
24
|
+
'[figma-mcp-express] Binary not found. Try reinstalling: npm install figma-mcp-express\n'
|
|
25
|
+
);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const result = spawnSync(binaryPath, process.argv.slice(2), { stdio: 'inherit' });
|
|
30
|
+
process.exit(result.status ?? 1);
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "figma-mcp-express",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Fast, quota-free, agent-ready Figma MCP server — local plugin bridge, no seat-based limits. 70 tools: multi-file routing, batch ops, library automation.",
|
|
5
|
+
"mcpName": "io.github.sunhome243/figma-mcp-express",
|
|
6
|
+
"bin": {
|
|
7
|
+
"figma-mcp-express": "bin/run.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin/run.js",
|
|
11
|
+
"bin/darwin-amd64/",
|
|
12
|
+
"bin/darwin-arm64/",
|
|
13
|
+
"bin/linux-amd64/",
|
|
14
|
+
"bin/linux-arm64/",
|
|
15
|
+
"bin/windows-amd64/",
|
|
16
|
+
"bin/windows-arm64/"
|
|
17
|
+
],
|
|
18
|
+
"keywords": [
|
|
19
|
+
"figma",
|
|
20
|
+
"mcp",
|
|
21
|
+
"model-context-protocol",
|
|
22
|
+
"ai",
|
|
23
|
+
"design"
|
|
24
|
+
],
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/sunhome243/figma-mcp-express.git"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/sunhome243/figma-mcp-express#readme",
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/sunhome243/figma-mcp-express/issues"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18.0.0"
|
|
36
|
+
}
|
|
37
|
+
}
|