Public log

figma-console-mcp

The most comprehensive MCP server for Figma — design tokens, variables, components, write tools, version history diff, accessibility audits, FigJam, Slides, and more. Local (WebSocket Desktop Bridge plugin) and Cloudflare Workers (paired + remote) modes.

npm · fingerprint 0a2fabde700812d03f28e181 · repository · RSS

121tools
2recorded versions
45dtracked
unchanged 8d

What changed

Changed between 2 September 2026 and 5 October 2026 (first seen 2026-10-05 14:49 UTC)

1 description rewritten, 2 schema or annotation changes with the description left byte-identical.

--- pinned/figma_check_design_parity
+++ observed/figma_check_design_parity
  {
    "description": "Compare a Figma component's design specs against code-side data to find discrepancies. Returns a parity score, categorized discrepancies, and actionable fix items for both design-side (Figma tool calls) and code-side (file edits). Read the component source code first, then pass the data in codeSpec.",
    "execution": {
-                 "type": "number"
+                 "type": [
+                   "number",
+                   "string"
+                 ]
                },
                "maxWidth": {
-                 "type": "number"
+                 "type": [
+                   "number",
+                   "string"
+                 ]
                },
                "minHeight": {
-                 "type": "number"
+                 "type": [
+                   "number",
+                   "string"
+                 ]
                },
                "minWidth": {
-                 "type": "number"
+                 "description": "px number or CSS length like '320px'",
+                 "type": [
+                   "number",
+                   "string"
+                 ]
                },
                "paddingBottom": {
                  "type": "number"
--- pinned/figma_export_tokens
+++ observed/figma_export_tokens
  {
-   "description": "Export Figma variables to design token files in your codebase. Bidirectional with figma_import_tokens — together they replace Style Dictionary and Tokens Studio's export pipeline for the popular styling methods.\n\nFULLY-IMPLEMENTED OUTPUT FORMATS:\n  • dtcg — W3C DTCG JSON. Canonical pivot format. Round-trip safe via `$extensions[\"figma-console-mcp\"]`.\n  • css-vars — CSS custom properties with mode-aware selectors (`:root`, `.dark`, `[data-theme=...]`).\n  • tailwind-v4 — Tailwind v4 `@theme inline` block. Token-to-namespace mapping (color/*, spacing/*, radius/*, etc.) generates Tailwind utility classes.\n  • tailwind-v3 — `tailwind.config.js` theme.extend object grouped under Tailwind's theme keys (colors, spacing, fontFamily, etc.).\n  • scss — `$var: value;` declarations. Multi-mode emits a primary variable + a mode-keyed SCSS map for runtime access.\n  • ts-module — `export const tokens = { ... } as const` with derived `Tokens` type. Multi-mode tokens emit as `{ Light: ..., Dark: ... }` objects.\n  • json-flat — flat key-value JSON (`{\"ds-color-primary\": \"#4085F2\"}`) for custom build scripts.\n  • json-nested — nested object JSON mirroring the token path tree.\n  • style-dictionary-v3 — SD v3 source format with bare `value`/`type` keys (back-compat for existing SD users).\n  • tokens-studio — Tokens Studio multi-file layout (`$themes.json` + `$metadata.json` + per-set files). Preserves Figma collection/mode bindings for round-trip with the TS plugin.\n\nZERO-ARG USAGE: With a tokens.config.json at your project root, just call the tool with no args — it picks up source dir, output formats, modes, prefix, etc. from config. See the response's `suggestedScaffold` payload when no config is detected — present it to the user, write the scaffold via your file tools, then call again.\n\nMERGE STRATEGY: Default `strategy: \"merge\"` only writes tokens that actually changed in Figma since the last sync. Use `dry-run` to preview what would change. Use `replace` to wipe and rewrite (rare; for resetting drift).\n\nDTCG DIALECT (`dtcgDialect`, applies to dtcg/json-flat/json-nested outputs): legacy (default): hex-string colors, maximum compatibility (Style Dictionary v4, Tokens Studio). 2025: DTCG 2025.10 object colors/dimensions (Style Dictionary v5+). figma_import_tokens accepts BOTH dialects regardless of this setting.\n\nROUND-TRIP SAFETY: Figma variable IDs are preserved in DTCG `$extensions[\"figma-console-mcp\"]` so renames on either side don't create duplicates. The same metadata enables non-destructive incremental sync via figma_import_tokens. Variable scopes (when non-default) and per-platform codeSyntax (when set) are stashed there too and round-trip through import.",
+   "description": "Export Figma variables to design token files in your codebase. Bidirectional with figma_import_tokens — together they replace Style Dictionary and Tokens Studio's export pipeline for the popular styling methods.\n\nFULLY-IMPLEMENTED OUTPUT FORMATS:\n  • dtcg — W3C DTCG JSON. Canonical pivot format. Round-trip safe via `$extensions[\"figma-console-mcp\"]`.\n  • css-vars — CSS custom properties with mode-aware selectors (`:root`, `.dark`, `[data-theme=...]`).\n  • tailwind-v4 — Tailwind v4 `@theme inline` block. Token-to-namespace mapping (color/*, spacing/*, radius/*, etc.) generates Tailwind utility classes.\n  • tailwind-v3 — `tailwind.config.js` theme.extend object grouped under Tailwind's theme keys (colors, spacing, fontFamily, etc.).\n  • scss — `$var: value;` declarations. Multi-mode emits a primary variable + a mode-keyed SCSS map for runtime access.\n  • ts-module — `export const tokens = { ... } as const` with derived `Tokens` type. Multi-mode tokens emit as `{ Light: ..., Dark: ... }` objects.\n  • json-flat — flat key-value JSON (`{\"ds-color-primary\": \"#4085F2\"}`) for custom build scripts.\n  • json-nested — nested object JSON mirroring the token path tree.\n  • style-dictionary-v3 — SD v3 source format with bare `value`/`type` keys (back-compat for existing SD users).\n  • tokens-studio — Tokens Studio multi-file layout (`$themes.json` + `$metadata.json` + per-set files). Preserves Figma collection/mode bindings for round-trip with the TS plugin.\n\nZERO-ARG USAGE: With a tokens.config.json at your project root, just call the tool with no args — it picks up source dir, output formats, modes, prefix, etc. from config. See the response's `suggestedScaffold` payload when no config is detected — present it to the user, write the scaffold via your file tools, then call again.\n\nWRITE SAFETY: Export REPLACES the contents of each target file with the current Figma state — it does not merge into it. Under the default `strategy: \"merge\"` the tool refuses to write (and changes nothing) when overwriting an existing DTCG file would delete tokens it does not manage: tokens added by hand, or tokens from collections outside this export. It also refuses when a requested collectionId is not in the file it read, or when the export is empty — both usually mean a different file is active in Figma than you intended. Variables deleted in Figma are removed from the file as normal. Use `dry-run` to preview, `replace` to overwrite unconditionally. Generated files record the Figma file they came from (a `Source: Figma file <key>` header line; `figmaFileKey` in DTCG), and the default strategy also refuses to overwrite a file that was generated from a DIFFERENT Figma file. Plain-JSON formats (json-flat, json-nested, style-dictionary-v3, tokens-studio) cannot carry that record — pin `figmaFile` in tokens.config.json for a hard guarantee. Every response includes `source` (the Figma file name/key the data was read from) — check it.\n\nDTCG DIALECT (`dtcgDialect`, applies to dtcg/json-flat/json-nested outputs): legacy (default): hex-string colors, maximum compatibility (Style Dictionary v4, Tokens Studio). 2025: DTCG 2025.10 object colors/dimensions (Style Dictionary v5+). figma_import_tokens accepts BOTH dialects regardless of this setting.\n\nROUND-TRIP SAFETY: Figma variable IDs are preserved in DTCG `$extensions[\"figma-console-mcp\"]` so renames on either side don't create duplicates. The same metadata enables non-destructive incremental sync via figma_import_tokens. Variable scopes (when non-default) and per-platform codeSyntax (when set) are stashed there too and round-trip through import.",
    "execution": {
      "taskSupport": "forbidden"
    },
-         "description": "Filesystem path to write the output file(s) to. Relative paths resolve against the project root (the directory containing tokens.config.json) or cwd if no config. When omitted, the output is returned inline in the response (suitable for the AI to inspect or write via its own file tools).",
+         "description": "Where to write the output. Treated as a DIRECTORY by default — each generated file (e.g. tokens.tokens.json, tokens.css) is written inside it and the directory is created if missing. Treated as a FILE when it is an existing file or ends in a token-file extension (.json, .css, .scss, .less, .ts, .js): the export must then produce exactly ONE file (one format, no splitByMode/splitByCollection — combine with collectionIds to re-export a single collection into e.g. typography.tokens.json), which is written at exactly that path, overwriting it. A file path combined with a multi-file export is rejected with an explanatory error before anything is written. End the path with '/' to force directory handling. Relative paths resolve against the project root (the directory containing tokens.config.json) or cwd if no config. When omitted, the output is returned inline in the response (suitable for the AI to inspect or write via its own file tools).",
          "type": "string"
        },
        "prefix": {
-         "description": "How to handle existing output files. 'merge' (default) diffs against current contents and writes only changed tokens, preserving code-only additions. 'replace' wipes and rewrites. 'dry-run' computes the diff and reports what would change without writing.",
+         "description": "How to handle existing output files. Export always replaces a target file's contents with the current Figma state — it does not merge token-by-token. 'merge' (default) is the SAFE mode: it refuses to write, leaving the file untouched, if overwriting an existing DTCG file would delete tokens the export does not manage (hand-added tokens, or tokens from collections not included in this export). 'replace' overwrites unconditionally. 'dry-run' reports what would be written without writing.",
          "enum": [
            "merge",
            "replace",
--- pinned/figma_generate_component_doc
+++ observed/figma_generate_component_doc
  {
    "description": "Generate AI-complete component documentation from a Figma component. Produces structured markdown with anatomy, per-variant color tokens, typography, content guidelines (parsed from Figma description), design annotations (animation timings, interaction specs, accessibility notes from Dev Mode), icon mapping, spacing tokens, and design-code parity analysis. Merges Figma design data with optional code-side info (CVA definitions, sub-component APIs, source files). Output works with any docs platform. For richest output, read the component source code first and pass codeInfo. Pass history: { figma: true, git: true } to add an ongoing '## History' section: per-version design changes pulled from Figma version history and scoped to this component, plus recent git commits touching its source files.",
    "execution": {
+           "storybookUrl": {
+             "description": "URL of a running Storybook (or the component's story) to link from the doc. Without it, a stories file in sourceFiles is linked as \"Stories source\", not \"Storybook\".",
+             "type": "string"
+           },
            "subComponents": {
              "description": "Sub-components that compose this component (e.g., AlertTitle, AlertDescription)",
              "items": {

Current tools

Show all 121 tool fingerprints
figjam_auto_arrange
5f3728a1c9e4cb57
figjam_create_code_block
062ca60f60f6b9f6
figjam_create_connector
cc456217c0af9d7a
figjam_create_section
6060da34b36cd57d
figjam_create_shape_with_text
196320d85678942f
figjam_create_stickies
8fd554b16ab20348
figjam_create_sticky
873e770f77e03647
figjam_create_table
e673adf6b76cb309
figjam_get_board_contents
4aac717fd565d9dc
figjam_get_connections
3f4c07f27331ff75
figma_add_component_property
b8ac946a6e730a54
figma_add_mode
61ce5cb4921c004b
figma_add_shape_to_slide
04823900c23178c0
figma_add_slot_property
1954af40a2abe946
figma_add_text_to_slide
15299e41dd02255a
figma_analyze_component_set
06b3b44e7de4107f
figma_append_to_slot
02fd3ca1e47452d2
figma_arrange_component_set
433161d687a6dd68
figma_audit_component_accessibility
d63130ef13afc27d
figma_audit_design_system_report
1c37270b16b07391
figma_batch_create_variables
bda345d3c489a1e0
figma_batch_update_variables
4ffb62bef294e807
figma_blame_node
6dae80f1b4ecc4e7
figma_capture_screenshot
7aa694b3ee8a7dba
figma_check_design_parity
3f78ee19afa593c7
figma_clear_console
970348c6e34718da
figma_clone_node
48f0ce5b3c605716
figma_create_child
d1bc0c53474a18a7
figma_create_component_set
0178a1ad45e84cc2
figma_create_slide
c90a0ea72ff6748e
figma_create_slot
61bea60a042b52b5
figma_create_variable
1d05c0a113935511
figma_create_variable_collection
cb2db46ef5e73ca7
figma_delete_comment
a8d18056cfa0f62b
figma_delete_component_property
0457269e03fbfa54
figma_delete_node
339ab698a2410c1b
figma_delete_slide
76f14ab6f918fa7e
figma_delete_variable
27bbbdd99dbe7d08
figma_delete_variable_collection
28d348fcbb094fed
figma_diagnose
dd1d8377ca7bbf1c
figma_diff_versions
4c117001a5714b59
figma_ds_analyze
1ad93f3584dc069b
figma_ds_extract_component
d29e62898b54a69d
figma_ds_extract_tokens
d3ecc753e852000b
figma_ds_scaffold
cbbd4fcc46bdd5ac
figma_ds_setup_storybook
36f14f38317cbf4c
figma_ds_status
d959abd57e455501
figma_ds_verify
dec3db7332005d1f
figma_duplicate_slide
41e61a1e8d1cea5b
figma_edit_component_property
2a1a2f6c7016b903
figma_execute
dce118bd79e88c5b
figma_execute_across_files
a83cbad0057983de
figma_export_tokens
18d5980df25d8790
figma_focus_slide
301f536e99fd4b70
figma_generate_changelog
cf7a9356dac40eae
figma_generate_component_doc
b8659c5e01f01458
figma_get_annotation_categories
2518647c3d7cdc17
figma_get_annotations
079aa82aadc00653
figma_get_changes_since_version
478328523636d661
figma_get_comments
90c904d003905f09
figma_get_component
4eb4d3d2caf3339c
figma_get_component_details
c52909d8bb085f0c
figma_get_component_for_development
d3deb7753a4831d0
figma_get_component_for_development_deep
6e9198420ec3fb33
figma_get_component_image
6e56a0eb9696027d
figma_get_console_logs
805ca1991d365903
figma_get_design_changes
8fd8186252a710ae
figma_get_design_system_kit
61016fb65c432a61
figma_get_design_system_summary
02785e022dab32dc
figma_get_file_at_version
2d3983a5acc0e74f
figma_get_file_data
a02fbfb218eb901a
figma_get_file_for_plugin
0bf90a16b747a70c
figma_get_file_versions
f1d3f558718f30cd
figma_get_focused_slide
d87dbf2126a101a1
figma_get_library_component_by_key
1dbe7f5ce6b414a9
figma_get_library_components
2fa0baa5bb196c3d
figma_get_library_variables
dbd815538c494f14
figma_get_selection
ab822f49e4bfe621
figma_get_slide_content
28921016e72d7635
figma_get_slide_grid
925fb0f09ca585f4
figma_get_slide_transition
374fff3cbec73f68
figma_get_slots
830e5dd6b2d293dd
figma_get_status
6f78a67e6d38ac62
figma_get_styles
93cc8a30ebebb7e3
figma_get_text_styles
a4dda3f03933a6f9
figma_get_token_values
1ed70dfe76866e3f
figma_get_variables
336aada666e51278
figma_import_library_variable
752a85eb8d16231c
figma_import_tokens
e031e110b2ac6103
figma_instantiate_component
0caa97585834af38
figma_lint_design
dc8a6162d8221f9a
figma_list_open_files
1b7f43e5f61fe5e3
figma_list_slides
d06f2404f4966934
figma_move_node
912961bcee9c5ac5
figma_navigate
719072c6729158ef
figma_post_comment
e005804cbf0ad5ec
figma_reconnect
17d8992a36fa1565
figma_reload_plugin
0df668015f194155
figma_rename_mode
6deb12fb443eeea5
figma_rename_node
cf8f57cc0c901a48
figma_rename_variable
17b2674a25e20e14
figma_reorder_slides
21ca26f2c814e933
figma_reset_slot
0e836e70cf33aa3f
figma_resize_node
d12914703976b6e9
figma_scan_code_accessibility
286c8ce3f9037b7d
figma_search_components
64cd495d11ecd367
figma_set_annotations
97a8fca22d423f08
figma_set_description
45fd1a636a3d685e
figma_set_fills
ed6cf2d2f09e4218
figma_set_image_fill
c03cef092386116b
figma_set_instance_properties
e637206760ff87ad
figma_set_slide_background
dbde6248bfabe908
figma_set_slide_transition
ab1ac3c956f75f10
figma_set_slides_view_mode
3f4c42d7d37edbe0
figma_set_strokes
9e06704bd03b534c
figma_set_text
dd825bb44b2a0403
figma_setup_design_tokens
c2b0924bd1918388
figma_skip_slide
818b6ab5f8c7e8ca
figma_take_screenshot
2d22f45fe1f36aef
figma_update_variable
76d496f2906c8c82
figma_watch_console
d9f8bf1d80913918

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your figma-console-mcp command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for figma-console-mcp

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/887a16d7eda469c9.svg)](https://mcp-pin.gautamkhosla.com/servers/887a16d7eda469c9.html)