figma-console-mcp 1.40.6 → 1.40.8
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 +65 -31
- package/dist/core/design-code-tools.d.ts +4 -1
- package/dist/core/design-code-tools.d.ts.map +1 -1
- package/dist/core/design-code-tools.js +177 -54
- package/dist/core/design-code-tools.js.map +1 -1
- package/dist/core/design-system-tools.d.ts +9 -0
- package/dist/core/design-system-tools.d.ts.map +1 -1
- package/dist/core/design-system-tools.js +17 -0
- package/dist/core/design-system-tools.js.map +1 -1
- package/dist/core/diagnose-tool.d.ts.map +1 -1
- package/dist/core/diagnose-tool.js +15 -3
- package/dist/core/diagnose-tool.js.map +1 -1
- package/dist/core/figma-api.d.ts +1 -1
- package/dist/core/figma-api.d.ts.map +1 -1
- package/dist/core/figma-api.js +2 -1
- package/dist/core/figma-api.js.map +1 -1
- package/dist/core/figma-reconstruction-spec.d.ts +15 -2
- package/dist/core/figma-reconstruction-spec.d.ts.map +1 -1
- package/dist/core/figma-reconstruction-spec.js +75 -20
- package/dist/core/figma-reconstruction-spec.js.map +1 -1
- package/dist/core/figma-tools.d.ts.map +1 -1
- package/dist/core/figma-tools.js +63 -57
- package/dist/core/figma-tools.js.map +1 -1
- package/dist/core/tokens-tools.js +1 -1
- package/dist/core/types/design-code.d.ts +4 -4
- package/dist/core/types/design-code.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
[](https://docs.figma-console-mcp.southleft.com)
|
|
7
7
|
[](https://github.com/sponsors/southleft)
|
|
8
8
|
|
|
9
|
-
> **Your design system as an API.** Model Context Protocol server
|
|
9
|
+
> **Your design system as an API.** A design-system-focused Model Context Protocol server for Figma. It works in both directions (Figma ⇄ code), **writes to Figma**, and runs **deterministic checks** for design-code parity, accessibility, and design-system health. It hands the AI exact tokens, variants, bindings, and states as structured data rather than prescribing a framework or house style, so generated code follows your team's own stack and conventions.
|
|
10
10
|
|
|
11
|
-
> **🆕
|
|
11
|
+
> **🆕 Accuracy & safety fixes (latest v1.40.8):** Eight patches since v1.40.0's Design System Extraction, driven by community reports. Generated component docs now describe every variant accurately — backgrounds, hidden layers and the properties that show them, per-corner radius and border tokens, typography and layer structure across variants, and source links pinned to a commit. `figma_export_tokens` can no longer overwrite a token file from the wrong Figma file, overrides in extended variable collections are visible, min/max sizing survives every JSON extraction path, and the published package passes `npm audit` cleanly. Server-only — no plugin re-import needed. [See what's new →](CHANGELOG.md#1408---2026-09-30)
|
|
12
12
|
|
|
13
13
|
## What is this?
|
|
14
14
|
|
|
@@ -25,6 +25,7 @@ Figma Console MCP connects AI assistants (like Claude) to Figma, enabling:
|
|
|
25
25
|
- **📌 FigJam boards** - Create stickies, flowcharts, tables, and code blocks on collaborative boards
|
|
26
26
|
- **🎞️ Slides presentations** - Build and manage Figma Slides decks programmatically
|
|
27
27
|
- **♿ Accessibility scanning** - 14 WCAG design checks with conformance level tagging, component scorecards, axe-core code scanning, design-to-code parity
|
|
28
|
+
- **🔍 Design-code parity & component docs** - Deterministic comparison of a Figma component with its code (visual, spacing, typography, tokens, component API, accessibility), and generated component documentation with per-variant tokens and an optional design + git changelog
|
|
28
29
|
- **📋 Design-system health audits** - Lighthouse-style scored audit across naming, tokens, component metadata, accessibility, consistency, and coverage — available as a plain tool for any MCP client (with per-finding auto-fix guidance) and as a visual dashboard app
|
|
29
30
|
- **🛡 Cross-MCP identity** - Every tool response carries `_mcp: "figma-console-mcp"` and errors are prefixed `[figma-console-mcp]` so attribution stays unambiguous in agents running multiple Figma MCPs
|
|
30
31
|
- **☁️ Cloud Write Relay** - Web AI clients (Claude.ai, v0, Replit) can design in Figma via cloud pairing
|
|
@@ -55,11 +56,12 @@ Figma Console MCP connects AI assistants (like Claude) to Figma, enabling:
|
|
|
55
56
|
| **Manage design tokens/variables** | ✅ | ✅ | ❌ |
|
|
56
57
|
| **FigJam boards (stickies, flowcharts)** | ✅ | ✅ | ❌ |
|
|
57
58
|
| Real-time monitoring (console, selection) | ✅ | ❌ | ❌ |
|
|
59
|
+
| Codebase → design system extraction (`figma_ds_*`) | ✅ | ❌ | ❌ |
|
|
58
60
|
| Desktop Bridge plugin | ✅ | ✅ | ❌ |
|
|
59
61
|
| Requires Node.js | Yes | **No** | No |
|
|
60
|
-
| **Total tools available** | **
|
|
62
|
+
| **Total tools available** | **121** | **96** after pairing | Read-only subset |
|
|
61
63
|
|
|
62
|
-
> **Bottom line:** Remote SSE is **read-only**
|
|
64
|
+
> **Bottom line:** Remote SSE is **read-only** until you pair the plugin. **Cloud Mode** unlocks write access (96 tools) from web AI clients without Node.js. NPX/Local Git gives the full 121 tools with real-time monitoring.
|
|
63
65
|
|
|
64
66
|
---
|
|
65
67
|
|
|
@@ -136,7 +138,7 @@ If you're not sure where to put the JSON configuration above, here's where each
|
|
|
136
138
|
|
|
137
139
|
> **Heads-up on plugin updates.** Figma caches plugin files (`code.js` and `ui.html`) at the application level. The MCP server refreshes the files at `~/.figma-console-mcp/plugin/` on every startup, but Figma keeps using its cached copy until you re-import the manifest.
|
|
138
140
|
>
|
|
139
|
-
> **Re-importing is _required_ only when a release notes entry says so** — typically when the plugin adds a new method the server needs (e.g. v1.22.4, v1.10.0). For most upgrades the new server stays wire-compatible with the previous plugin, and re-importing is **optional**: you'll still get every functional change, just not the cosmetic plugin-side touches (status-pill copy, `pluginVersion` reporting).
|
|
141
|
+
> **Re-importing is _required_ only when a release notes entry says so** — typically when the plugin adds a new method the server needs (e.g. v1.22.4, v1.10.0). The plugin files last changed in v1.39.0; if your imported plugin predates that, re-import once. The plugin shows an update banner when the server bundles a newer plugin than the one running. For most upgrades the new server stays wire-compatible with the previous plugin, and re-importing is **optional**: you'll still get every functional change, just not the cosmetic plugin-side touches (status-pill copy, `pluginVersion` reporting).
|
|
140
142
|
>
|
|
141
143
|
> When you do re-import: Plugins → Manage plugins → re-import `~/.figma-console-mcp/plugin/manifest.json`. The stable path never changes, so it's a one-click step.
|
|
142
144
|
|
|
@@ -205,7 +207,7 @@ Then follow [NPX Steps 3-5](#step-3-connect-to-figma-desktop) above.
|
|
|
205
207
|
|
|
206
208
|
**Best for:** Quickly evaluating the tool or read-only design data extraction.
|
|
207
209
|
|
|
208
|
-
**What you get:**
|
|
210
|
+
**What you get:** the read-only tools — view file data, components, styles, comments and version history, take screenshots, read logs, check design-code parity. **Cannot create or modify designs.**
|
|
209
211
|
|
|
210
212
|
#### Claude Desktop (UI Method)
|
|
211
213
|
|
|
@@ -253,7 +255,7 @@ Ready for design creation? Follow the [NPX Setup](#-npx-setup-recommended) guide
|
|
|
253
255
|
|
|
254
256
|
**Best for:** Using Claude.ai, v0, Replit, or Lovable to create and modify Figma designs — no Node.js required.
|
|
255
257
|
|
|
256
|
-
**What you get:**
|
|
258
|
+
**What you get:** 96 tools including full write access — design creation, variable management, component instantiation, and all REST API tools. Only real-time monitoring (console logs, selection tracking, document changes) requires Local Mode.
|
|
257
259
|
|
|
258
260
|
#### Prerequisites
|
|
259
261
|
|
|
@@ -310,7 +312,7 @@ AI Client → Cloud MCP Server → Durable Object Relay → Desktop Bridge Plugi
|
|
|
310
312
|
| Feature | NPX (Recommended) | Cloud Mode | Local Git | Remote SSE |
|
|
311
313
|
|---------|-------------------|------------|-----------|------------|
|
|
312
314
|
| **Setup time** | ~10 minutes | ~5 minutes | ~15 minutes | ~2 minutes |
|
|
313
|
-
| **Total tools** | **
|
|
315
|
+
| **Total tools** | **121** | **96** after pairing | **121** (Local Git) | Read-only subset |
|
|
314
316
|
| **Design creation** | ✅ | ✅ | ✅ | ❌ |
|
|
315
317
|
| **Variable management** | ✅ | ✅ | ✅ | ❌ |
|
|
316
318
|
| **Component instantiation** | ✅ | ✅ | ✅ | ❌ |
|
|
@@ -383,6 +385,7 @@ When you first use design system tools:
|
|
|
383
385
|
- `figma_diagnose` - Designer-readable health check + setup guidance
|
|
384
386
|
- `figma_reconnect` - Force reconnect to the Desktop Bridge plugin
|
|
385
387
|
- `figma_navigate` - Switch the active file target among connected plugins (Local), or navigate the cloud headless browser (Remote/Cloud)
|
|
388
|
+
- `figma_list_open_files` - List files connected through the Desktop Bridge and which one is active (Local Mode)
|
|
386
389
|
|
|
387
390
|
### Console Debugging
|
|
388
391
|
- `figma_get_console_logs` - Retrieve console logs
|
|
@@ -392,6 +395,11 @@ When you first use design system tools:
|
|
|
392
395
|
|
|
393
396
|
### Visual Debugging
|
|
394
397
|
- `figma_take_screenshot` - Capture UI screenshots
|
|
398
|
+
- `figma_capture_screenshot` - Render a node from the plugin runtime, reflecting changes that haven't reached the REST API yet
|
|
399
|
+
|
|
400
|
+
### 👁️ Real-Time Awareness (Local Mode only)
|
|
401
|
+
- `figma_get_selection` - The nodes currently selected in Figma
|
|
402
|
+
- `figma_get_design_changes` - Buffered document-change events, for polling what changed
|
|
395
403
|
|
|
396
404
|
### Design System Extraction
|
|
397
405
|
- `figma_get_design_system_kit` - **Full design system in one call** — tokens, components, styles, visual specs
|
|
@@ -402,6 +410,7 @@ When you first use design system tools:
|
|
|
402
410
|
- `figma_get_styles` - Color, text, effect styles
|
|
403
411
|
- `figma_get_file_data` - Full file structure
|
|
404
412
|
- `figma_get_file_for_plugin` - Optimized file data
|
|
413
|
+
- `figma_get_design_system_summary` / `figma_get_token_values` - Compact design-system overview and variable values by mode (Local Mode only)
|
|
405
414
|
- `figma_audit_design_system_report` - **Scored health audit for any MCP client** — six-category report (naming, tokens, metadata, accessibility, consistency, coverage) with per-finding remediation ("can this MCP fix it?"), chunked per-category drill-down, live-first data with disclosed source, 5-minute cache
|
|
406
415
|
|
|
407
416
|
### 📚 Shared Library Inspection
|
|
@@ -447,7 +456,30 @@ When you first use design system tools:
|
|
|
447
456
|
|
|
448
457
|
### 🔍 Design-Code Parity (All Modes)
|
|
449
458
|
- `figma_check_design_parity` - Compare Figma component specs against code implementation, producing a scored diff report with actionable fix items
|
|
450
|
-
- `figma_generate_component_doc` - Generate platform-agnostic markdown documentation by merging Figma design data with code-side info
|
|
459
|
+
- `figma_generate_component_doc` - Generate platform-agnostic markdown documentation by merging Figma design data with code-side info; the optional `history` parameter adds a changelog from Figma version history and `git log`
|
|
460
|
+
|
|
461
|
+
### 🔬 Components, Nodes & Deep Analysis (Local Mode + Cloud Mode unless noted)
|
|
462
|
+
- `figma_search_components` / `figma_get_component_details` - Find components (local + library) and get their variants, properties, and keys (Local Mode only)
|
|
463
|
+
- `figma_instantiate_component` / `figma_set_instance_properties` - Place instances and set their TEXT, BOOLEAN, INSTANCE_SWAP, and VARIANT properties
|
|
464
|
+
- `figma_add_component_property` / `figma_edit_component_property` / `figma_delete_component_property` - Manage component properties
|
|
465
|
+
- `figma_create_child`, `figma_move_node`, `figma_resize_node`, `figma_clone_node`, `figma_rename_node`, `figma_delete_node`, `figma_set_text`, `figma_set_fills`, `figma_set_strokes`, `figma_set_image_fill` - Structured node edits, including variable binding on fills and strokes
|
|
466
|
+
- `figma_get_component_for_development_deep` - Full component tree with resolved token names and instance references
|
|
467
|
+
- `figma_analyze_component_set` - A variant set as a state machine, with CSS pseudo-class mappings and per-variant diffs
|
|
468
|
+
|
|
469
|
+
### ♿ Accessibility (Local Mode + Cloud Mode)
|
|
470
|
+
- `figma_lint_design` - WCAG and design-system lint on the canvas, with AA and best-practice level tagging
|
|
471
|
+
- `figma_audit_component_accessibility` - Component scorecard: state coverage, focus indicators, color-blind simulation
|
|
472
|
+
- `figma_scan_code_accessibility` - axe-core scan of HTML
|
|
473
|
+
|
|
474
|
+
### 📝 Annotations & Comments
|
|
475
|
+
- `figma_get_annotations` / `figma_set_annotations` / `figma_get_annotation_categories` - Read and write designer annotations (Local Mode + Cloud Mode)
|
|
476
|
+
- `figma_get_comments` / `figma_post_comment` / `figma_delete_comment` - File comments, optionally pinned to a node
|
|
477
|
+
|
|
478
|
+
### 🕰 Version History
|
|
479
|
+
- `figma_get_file_versions` / `figma_get_file_at_version` - List versions and snapshot a file or node at a past version
|
|
480
|
+
- `figma_diff_versions` / `figma_get_changes_since_version` - Structured diffs, including component property and binding changes
|
|
481
|
+
- `figma_generate_changelog` - Markdown changelog for release notes
|
|
482
|
+
- `figma_blame_node` - Find when, and by whom, a property or variant was introduced
|
|
451
483
|
|
|
452
484
|
### 🔁 Token Sync (Local Mode + Cloud Mode)
|
|
453
485
|
- `figma_export_tokens` - **Export Figma variables to design token files in your codebase.** Canonical DTCG JSON (legacy hex dialect by default, or DTCG 2025.10 object colors/dimensions via `dtcgDialect: "2025"`) plus CSS, Tailwind v4/v3, SCSS, TS, JSON, Style Dictionary, and Tokens Studio formats. Diff-aware merge against existing source files (only writes what changed). `tokens.config.json` autodiscovery means zero-arg calls after first setup. Scopes and codeSyntax metadata round-trip via `$extensions`. Replaces Style Dictionary and Tokens Studio's export pipeline for popular styling methods.
|
|
@@ -485,6 +517,7 @@ Turn a production codebase into a design system: analyze → extract tokens →
|
|
|
485
517
|
- `figjam_create_shape_with_text` - Create flowchart shapes (diamond, ellipse, etc.)
|
|
486
518
|
- `figjam_create_table` - Create tables with cell data
|
|
487
519
|
- `figjam_create_code_block` - Add code snippets with syntax highlighting
|
|
520
|
+
- `figjam_create_section` - Group board content in a section
|
|
488
521
|
- `figjam_auto_arrange` - Arrange nodes in grid, horizontal, or vertical layouts
|
|
489
522
|
- `figjam_get_board_contents` - Read all content from a FigJam board
|
|
490
523
|
- `figjam_get_connections` - Read the connection graph (flowcharts, relationships)
|
|
@@ -508,7 +541,7 @@ Turn a production codebase into a design system: analyze → extract tokens →
|
|
|
508
541
|
- `figma_set_slides_view_mode` - Toggle grid vs. single-slide view
|
|
509
542
|
- `figma_focus_slide` - Navigate to a specific slide
|
|
510
543
|
|
|
511
|
-
**📖 [Detailed Tool Documentation](docs/
|
|
544
|
+
**📖 [Detailed Tool Documentation](docs/tools.md)**
|
|
512
545
|
|
|
513
546
|
---
|
|
514
547
|
|
|
@@ -586,7 +619,7 @@ Take a screenshot of the current Figma canvas
|
|
|
586
619
|
Navigate to this file and capture what's on screen
|
|
587
620
|
```
|
|
588
621
|
|
|
589
|
-
**📖 [More Use Cases & Examples](docs/
|
|
622
|
+
**📖 [More Use Cases & Examples](docs/use-cases.md)**
|
|
590
623
|
|
|
591
624
|
---
|
|
592
625
|
|
|
@@ -811,38 +844,39 @@ The architecture supports adding new apps with minimal boilerplate — each app
|
|
|
811
844
|
|
|
812
845
|
## 🚀 Advanced Topics
|
|
813
846
|
|
|
814
|
-
- **[Setup Guide](docs/
|
|
815
|
-
- **[Self-Hosting](docs/
|
|
816
|
-
- **[Architecture](docs/
|
|
817
|
-
- **[OAuth Setup](docs/
|
|
818
|
-
- **[Troubleshooting](docs/
|
|
847
|
+
- **[Setup Guide](docs/setup.md)** - Complete setup guide for all MCP clients
|
|
848
|
+
- **[Self-Hosting](docs/self-hosting.md)** - Deploy your own instance on Cloudflare
|
|
849
|
+
- **[Architecture](docs/architecture.md)** - How it works under the hood
|
|
850
|
+
- **[OAuth Setup](docs/oauth-setup.md)** - Configure OAuth for self-hosted deployments
|
|
851
|
+
- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions
|
|
819
852
|
|
|
820
853
|
---
|
|
821
854
|
|
|
822
|
-
## 🤝 vs. Figma Official MCP
|
|
855
|
+
## 🤝 vs. Figma's Official MCP Server
|
|
856
|
+
|
|
857
|
+
The two servers are complementary, and both can run in the same MCP client.
|
|
823
858
|
|
|
824
|
-
**Figma
|
|
825
|
-
- ✅ Real-time console logs from Figma plugins
|
|
826
|
-
- ✅ Screenshot capture and visual debugging
|
|
827
|
-
- ✅ Error stack traces and runtime monitoring
|
|
828
|
-
- ✅ Raw design data extraction (JSON)
|
|
829
|
-
- ✅ FigJam board creation and reading (stickies, flowcharts, tables)
|
|
830
|
-
- ✅ Works remotely or locally
|
|
859
|
+
**Figma's official MCP server** is hosted by Figma. It focuses on design-to-code context (`get_design_context`), Code Connect, library search, and creating content in Figma: it writes through `use_figma`, creates files, generates FigJam diagrams, and works with motion and shaders.
|
|
831
860
|
|
|
832
|
-
**Figma
|
|
833
|
-
-
|
|
834
|
-
-
|
|
835
|
-
-
|
|
861
|
+
**Figma Console MCP** focuses on design-system operations:
|
|
862
|
+
- Deterministic checks: design-code parity, accessibility (canvas and code), and design-system health
|
|
863
|
+
- Token export in 10 formats and DTCG import with round-trip variable IDs
|
|
864
|
+
- Variable reads and writes on any Figma plan through the Desktop Bridge plugin
|
|
865
|
+
- Component documentation with design and code history, and version-history diffs
|
|
866
|
+
- Codebase → design system extraction
|
|
867
|
+
- Plugin console capture, selection tracking, and multi-file execution (Local Mode)
|
|
836
868
|
|
|
837
|
-
|
|
869
|
+
**📖 [Full comparison](https://docs.figma-console-mcp.southleft.com/figma-mcp-vs-figma-console-mcp)**
|
|
838
870
|
|
|
839
871
|
---
|
|
840
872
|
|
|
841
873
|
## 🛤️ Roadmap
|
|
842
874
|
|
|
843
|
-
**Current Status:** v1.40.
|
|
875
|
+
**Current Status:** v1.40.8 (Stable) - Production-ready. Latest: min/max width and height survive every way of extracting a component as JSON — the design system kit, the reconstruction format and `figma_get_file_data` now carry them, design-code parity compares them, and the reconstruction format returns real geometry again instead of 50×50 placeholders when the plugin is connected (server-only, no plugin re-import). On top of v1.40.7's clearer Color Tokens table in generated docs — layers revealed by a boolean property are printed once under that property, and stroke/fill rows name the nested instance they belong to (server-only, no plugin re-import). On top of v1.40.6's overrides in extended variable collections are visible (previously reported as nonexistent), and a third round of generated-doc fidelity fixes — radius tokens read per corner, boolean props compared in Design-Code Parity, source links pinned to a commit, hidden layers linked to the property that shows them (server-only, no plugin re-import). On top of v1.40.5's clean dependency audit for the npm package — Worker-only dependencies (`@cloudflare/puppeteer`, which pulled in a high-severity `extract-zip` advisory with no upstream fix, and `agents`) no longer install for npm users, so `npm install figma-console-mcp` audits at 0 vulnerabilities and is 64 MB instead of 173 MB; the server also reports its real version to MCP clients instead of `0.1.0` (server-only, no plugin re-import). On top of v1.40.4's fixes found by live-testing v1.40.3 on hard production components — tools given a `fileUrl` now read variables, descriptions and annotations from THAT file rather than whichever file is active (previously every token name could vanish, or on an id collision come from the wrong file; `figma_get_component` could return a different component), a tool result over 16 MB no longer disconnects the server, anatomy labels sizing by the layout's real axes, and the icon/typography/anatomy output stays readable on large components (server-only, no plugin re-import). On top of v1.40.3's fidelity fixes for generated component docs on harder components — hidden layers are labeled instead of documented as rendered, one-sided borders report the weight that actually renders, typography and layer structure are compared across every variant instead of read from the first, gradients/shadows/opacity are no longer silently dropped, truncated trees say so, and `SLOT` properties are listed (server-only, no plugin re-import). On top of v1.40.2's data-loss fix for `figma_export_tokens` — with a different file active in Figma than intended, an export could replace a real token file with an empty one (or with another file's tokens) and report success; exports now refuse to write when a requested collection is missing, when the export is empty, when the target was generated from a different Figma file, or when overwriting would destroy tokens the export doesn't manage, and `strategy: "merge"` — documented as preserving code-only tokens but never implemented — is now a genuinely safe default (server-only, no plugin re-import). On top of v1.40.1's accuracy fixes for generated component docs across variants — a descendant's fill (typically an icon's) could be documented as a variant's Background, Color Token headings kept only a property literally named `Variant`, spacing was read from the first variant alone, and icons were only detected by layer name — plus `figma_export_tokens` accepting a file path as `outputPath` instead of failing with a raw `EEXIST` or silently creating a directory (server-only, no plugin re-import). On top of v1.40.0's design system extraction from production codebases — seven Local-Mode `figma_ds_*` tools that scan one or more apps (framework/styling/vendor detection, usage-ranked component inventory classified vendored/wrapped/pure-vendor/bespoke, variant inference from real call sites, duplicate detection, and an architecture pass separating UI-kit specializations from the missing generic primitives), mine the de-facto styling into DTCG tokens with per-token provenance (multi-mode CSS custom properties, SCSS, Tailwind config, shadcn HSL triples, utility-class frequency mining valued from the app's own theme), scaffold the design-system package with showcase docs pages, wire a fresh Storybook workshop to the app's real theme layers and fonts, deep-extract components for porting with CSF3 story scaffolds, verify with deterministic fidelity evals, and persist porting progress across sessions — the extracted tokens import straight into Figma variables via `figma_import_tokens`. On top of v1.39.1's fix for a plugin-update banner that could never be cleared — an older server instance nagging a newer plugin to re-import, which only ever installs the same or a newer plugin. On top of v1.39.0's multi-file execution — `figma_execute_across_files` runs one script against several Desktop Bridge-connected files concurrently (four files x 2s of work in ~3s, not ~8s), and `figma_execute` takes an optional `fileKey` to target a single file without moving the active file or releasing target lock; targeting must be explicit (`fileKeys` or `allFiles: true`), so nothing fans out to files you did not name. From community PR #107 by @Wolfr. Ships with a relay fix: `handleResult()` in the plugin's ui.html rebuilt each response field by field and silently dropped `resultAnalysis` and `fileContext`, so the `resultAnalysis.warning` check that `figma_execute`'s own description tells callers to perform has never been possible (re-import `manifest.json` for those two fields; everything else works without it). On top of v1.38.2's connection-stability fix — the server's own orphan reaper was terminating healthy MCP servers because its liveness probe used an IPv4 literal while the server binds the IPv6 loopback, which turned every kill-safety gate into a rubber stamp; this was the cause of recurring "Server disconnected" errors across all MCP clients. Alongside v1.38.1's fix for the shared-library variable tools, which had silently reported zero collections since v1.29.0 and reported failed imports as successes. On top of v1.38.0's ongoing component changelogs in generated docs — `figma_generate_component_doc` takes an opt-in `history` parameter that pulls per-component **design history** from Figma version history (each version diffed and scoped to that component, so renames, added properties, and token bindings show up as rows) alongside **code history** from `git log` on the component's source files, rendered as a `## History` section with design, code, and release-note tables. Prefers labeled versions, falls back to auto-saves when a file has none, and is off by default so existing calls are unchanged (server-only, no plugin re-import). On top of v1.37.x's design-system health audit for every client — `figma_audit_design_system_report` runs the dashboard's deterministic six-category scoring engine and returns the report as data with per-finding remediation, live-first fileKey-verified data (source disclosed), chunked per-category drill-down, and a 5-minute cache (server-only, no plugin re-import). On top of v1.36.0's target lock for multi-file parallel work — — `figma_navigate` takes a `lock: true` flag that pins the active file so an AI agent can work in one file while you work in another without commands routing to the wrong file. On top of v1.35.0's Figma Slots write support — create, inspect, populate, and reset Slots (GA at Config 2026) via 5 new tools (`figma_create_slot`, `figma_get_slots`, `figma_append_to_slot`, `figma_reset_slot`, `figma_add_slot_property`), live-validated against the GA Plugin API and based on community PR #77. On top of v1.34.0's Bidirectional Token Sync v2 + DTCG 2025.10 — `figma_import_tokens` applies the complete diff plan (creates missing collections/variables, applies renames, writes real `VARIABLE_ALIAS` references, and deletes only under explicit `replace`), `figma_export_tokens` speaks the DTCG 2025.10 dialect on request (legacy default byte-identical), variable scopes/codeSyntax round-trip via `$extensions`, `figma_setup_design_tokens` accepts alias values via DTCG brace references, and `figma_create_component_set` builds a full variant set from an axes matrix in one call. On top of the v1.33.x line: version-handshake fix (re-import banner only fires when plugin files actually changed), security dependency sweep, and the v1.33.0 connection UX overhaul (honest status pill derived from live connection state, `/health` auto-discovery with self-healing reconnect) + a 33-fix full-codebase audit (lossless DTCG multi-mode round-trips, cross-collection alias resolution, branch-URL correctness across REST tools, cache-poisoning and CSWSH fixes, bridge-first screenshots). Built on WCAG-accurate accessibility auditing (line height below 1.5× is no longer mis-flagged as a failure; readability hints decoupled from conformance checks and scoped to multi-line text; code-side WCAG 1.4.12 check), a self-healing Desktop Bridge connection (zombie-process reaper + auto-reconnect watchdog — fixes the recurring "not connected until restart" bug), native variable binding on fills/strokes + typography control in the write tools, shared-library inspection (key-based component resolution + library variable read/import without Enterprise plan), 10-format token export pipeline (DTCG, CSS, Tailwind v4, Tailwind v3, SCSS, TS module, JSON flat/nested, Style Dictionary v3, Tokens Studio), bidirectional Figma↔code token sync, version history & time-series awareness, FigJam + Slides support, Cloud Write Relay, Design System Kit, WebSocket-only connectivity, smart multi-file tracking, **121 tools** (Local) / **96 tools** (Cloud) / read-only subset (Remote), Comments API, cross-MCP identity disambiguation, and MCP Apps.
|
|
844
876
|
|
|
845
877
|
**Recent Releases:**
|
|
878
|
+
- [x] **v1.40.8** - Min/max sizing in every JSON extraction path (design system kit, reconstruction format, `figma_get_file_data`, component docs) and in design-code parity; reconstruction reads the full REST tree with real geometry, alignment, hidden layers and absolute positioning; `nodeIds` honored by the file-data tools; Cloud Mode `figma_diagnose` on `/mcp`. Server-only. Reported by Brett Cooper.
|
|
879
|
+
- [x] **v1.40.7** - Color Tokens readability: a layer shown by a boolean property is printed once under that property when identical across variants (kept per variant when it differs); paints on nested instances carry the instance's variant, and same-named fills/strokes are qualified by instance. Server-only. Reported by Robin Di Capua.
|
|
846
880
|
- [x] **v1.40.6** - Extended collections + doc fidelity. `figma_get_variables` reads extended variable collections (overrides live on the collection; they were invisible and reported as nonexistent) — summary, per-collection resolved values marked overridden/inherited, per-variable overrides; the mode filter no longer drops `0`/`false` values; `figma_export_tokens` explains instead of emitting empty sets. `figma_generate_component_doc`: radius and per-side stroke bindings read per corner/side, Design-Code Parity compares booleans and never prints an empty section, source links pinned to a commit (no raw relative paths, no local paths, credentials stripped), hidden layers linked to the boolean that shows them, same-named layers qualified by instance. Server-only. Reported by Brett Cooper and Robin Di Capua.
|
|
847
881
|
- [x] **v1.40.5** - Clean dependency audit. `@cloudflare/puppeteer` (→ `@puppeteer/browsers` → `extract-zip`, high, no upstream fix) and `agents` were regular dependencies but are only used by the Cloudflare Worker; they are now devDependencies and the Worker build is excluded from the npm package, so a fresh install audits at 0 vulnerabilities (was 4 high) and drops from 173 MB to 64 MB. The local server now reports its real version to MCP clients instead of `0.1.0`. A new test guards both directions of the dependency split. Server-only. Reported by Daniel Westerlund.
|
|
848
882
|
- [x] **v1.40.4** - Live-test fixes. Tools given a `fileUrl` (`figma_generate_component_doc`, `figma_get_component`, `figma_get_component_for_development`) read bridge data from the ACTIVE file instead of the named one — token names vanished, and on an id collision another file's names, description, annotations or even component were returned; they now target the named file and fall back to REST. A tool result over 16 MB disconnected the server for the session (the client closes the transport); results are now size-capped centrally with an actionable error. Anatomy sizing labels follow the real layout axes (vertical layouts were mislabeled); icons are grouped, counted and named by the glyph in the slot; typography rows are identified by (element, style); identical sibling layers collapse to `×N`. Found by testing on hard production components. Server-only.
|
|
@@ -913,7 +947,7 @@ npm run dev
|
|
|
913
947
|
npm run build
|
|
914
948
|
```
|
|
915
949
|
|
|
916
|
-
**📖 [Development Guide](docs/
|
|
950
|
+
**📖 [Development Guide](docs/architecture.md)**
|
|
917
951
|
|
|
918
952
|
---
|
|
919
953
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
7
7
|
import type { FigmaAPI } from "./figma-api.js";
|
|
8
8
|
import type { EnrichedComponent } from "./types/enriched.js";
|
|
9
|
-
import type { CodeDocInfo, CompanyDocsContentEntry } from "./types/design-code.js";
|
|
9
|
+
import type { CodeSpec, ParityDiscrepancy, CodeDocInfo, CompanyDocsContentEntry } from "./types/design-code.js";
|
|
10
10
|
import { type SourceRevision } from "./history/git-history.js";
|
|
11
11
|
export { figmaRGBAToHex, normalizeColor, numericClose } from "./diff/property-compare.js";
|
|
12
12
|
/** Calculate parity score from discrepancy counts */
|
|
@@ -149,6 +149,8 @@ export declare function visibilityProperty(node: any): string | null;
|
|
|
149
149
|
* visible one it can hide, "(hidden)" otherwise. Empty for ordinary layers.
|
|
150
150
|
*/
|
|
151
151
|
export declare function visibilityNote(node: any): string;
|
|
152
|
+
/** The component an instance is made from — its component SET's name for a variant */
|
|
153
|
+
export declare function componentNameOf(instance: any, lookup?: ComponentLookup): string;
|
|
152
154
|
/** "Tab Item (Is Selected=True)" — an instance, qualified by its variant */
|
|
153
155
|
export declare function describeInstance(node: any): string;
|
|
154
156
|
/**
|
|
@@ -265,6 +267,7 @@ export declare function resolveVisualNode(node: any): any;
|
|
|
265
267
|
export declare function isVariantName(name: string): boolean;
|
|
266
268
|
/** Sanitize a component name for use as a file path */
|
|
267
269
|
export declare function sanitizeComponentName(name: string): string;
|
|
270
|
+
export declare function compareSpacing(node: any, codeSpec: CodeSpec, discrepancies: ParityDiscrepancy[]): void;
|
|
268
271
|
export declare function generateFrontmatter(componentName: string, description: string, node: any, componentMeta: any, fileUrl: string, codeInfo?: CodeDocInfo, canonicalSource?: "figma" | "code" | "reconciled", level?: string | null,
|
|
269
272
|
/**
|
|
270
273
|
* Newest Figma version that touched this component, when design history was
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-code-tools.d.ts","sourceRoot":"","sources":["../../src/core/design-code-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"design-code-tools.d.ts","sourceRoot":"","sources":["../../src/core/design-code-tools.ts"],"names":[],"mappings":"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"}
|