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.
Drift inferred · capture-to-capture
- HIGH code analysis flagged hidden prompt content in figma-console-mcp
tools
-
figjam_auto_arrange
Arrange nodes in grid, horizontal, or vertical layouts
-
figjam_create_code_block
Add code snippets with syntax highlighting
-
figjam_create_connector
Connect nodes with labeled connector lines
-
figjam_create_shape_with_text
Create flowchart shapes (diamond, ellipse, etc.)
-
figjam_create_stickies
Batch create up to 200 stickies
-
figjam_create_sticky
Create a sticky note with color options
-
figjam_create_table
Create tables with cell data
-
figjam_get_board_contents
Read all content from a FigJam board
-
figjam_get_connections
Read the connection graph (flowcharts, relationships)
-
figma_add_mode
Add modes to collections (e.g., "Dark", "Mobile")
-
figma_arrange_component_set
Organize variants into professional component sets
-
figma_batch_create_variables
Create up to 100 variables in one call (10-50x faster)
-
figma_batch_update_variables
Update up to 100 variable values in one call
-
figma_check_design_parity
Compare Figma component specs against code implementation, producing a scored diff report with actionable fix items
-
figma_clear_console
Clear log buffer
-
figma_create_slide
Create a new blank slide
-
figma_create_variable
Create COLOR, FLOAT, STRING, or BOOLEAN variables
-
figma_create_variable_collection
Create new variable collections with modes
-
figma_delete_slide
Delete a slide from the presentation
-
figma_delete_variable
Delete variables
-
figma_delete_variable_collection
Delete collections and all their variables
-
figma_diagnose
Designer-readable health check + setup guidance
-
figma_duplicate_slide
Clone an existing slide
-
figma_execute
Power tool: Run any Figma Plugin API code to create designs
-
figma_export_tokens
Export Figma variables to design token files in your codebase. Canonical DTCG JSON + CSS custom properties out of the box. Diff-aware merge against existing source files (only writes what changed). to
-
figma_generate_component_doc
Generate platform-agnostic markdown documentation by merging Figma design data with code-side info
-
figma_get_component
Get component data (metadata or reconstruction spec)
-
figma_get_component_for_development
Component + image
-
figma_get_component_image
Just the image
-
figma_get_console_logs
Retrieve console logs
-
figma_get_design_system_kit
Full design system in one call — tokens, components, styles, visual specs
-
figma_get_file_data
Full file structure
-
figma_get_file_for_plugin
Optimized file data
-
figma_get_focused_slide
Get the currently focused slide
-
figma_get_library_component_by_key
Resolve any component key to full properties + variants + visual specs — without needing the source library file's URL. Works for both COMPONENT_SET and standalone COMPONENT keys. Adaptive compression
-
figma_get_library_components
Discover all components in a library file (requires library file URL/key)
-
figma_get_library_variables
List every variable from team libraries the current file has subscribed. Works on every Figma plan — uses the Plugin API path, not the Enterprise-only REST endpoint. Filter by libraryName, collectionN
-
figma_get_slide_content
Get the full content tree of a slide
-
figma_get_slide_grid
Get the 2D grid layout of the presentation
-
figma_get_slide_transition
Read transition settings for a slide
-
figma_get_status
Check WebSocket bridge connection and file context
-
figma_get_styles
Color, text, effect styles
-
figma_get_variables
Extract design tokens/variables
-
figma_import_library_variable
Import a library variable into the current file. Returns a local id ready to pass to figma_set_fills / figma_update_variable / any variable-binding tool.
-
figma_import_tokens
Push code-side token edits back to Figma. Diff against current Figma state, apply only the deltas. Round-trip safe — Figma variable IDs preserved in DTCG $extensions["figma-console-mcp"] so renames on
-
figma_list_slides
List all slides with IDs, positions, and skip status
-
figma_navigate
Switch the active file target among connected plugins (Local), or navigate the cloud headless browser (Remote/Cloud)
-
figma_pair_plugin
Generate a pairing code to connect a Desktop Bridge plugin via the cloud relay
-
figma_reconnect
Force reconnect to the Desktop Bridge plugin
-
figma_reload_plugin
Reload current page
-
figma_rename_mode
Rename existing modes
-
figma_rename_variable
Rename variables while preserving values
-
figma_reorder_slides
Reorder slides via new 2D grid layout
-
figma_set_description
Document components with rich descriptions
-
figma_set_slide_transition
Set transition effects (22 styles, 8 curves)
-
figma_setup_design_tokens
Create complete token system (collection + modes + variables) atomically
-
figma_skip_slide
Toggle whether a slide is skipped in presentation mode
-
figma_take_screenshot
Capture UI screenshots
-
figma_update_variable
Update variable values in specific modes
-
figma_watch_console
Real-time log streaming
analyzed v1.31.0 · analyzer v18 · 10h ago
danger signals1
- dynamic code executioneval()package/figma-desktop-bridge/code.js:326
codePromise = eval(wrappedCode);
filesystem 18
- fs package/dist/apps/design-system-dashboard/server.js :14
import { readFile } from "node:fs/promises"; - fs package/dist/apps/token-browser/server.js :14
import { readFile } from "node:fs/promises"; - fs package/dist/cloudflare/apps/design-system-dashboard/server.js :14
import { readFile } from "node:fs/promises"; - fs package/dist/cloudflare/apps/hello-world/server.js :7
import { readFile } from "node:fs/promises"; - fs package/dist/cloudflare/apps/token-browser/server.js :14
import { readFile } from "node:fs/promises"; - fs package/dist/cloudflare/core/config.js :4
import { readFileSync, existsSync } from 'fs'; - fs package/dist/cloudflare/core/figma-tools.js :6
import * as fs from "fs"; - fs package/dist/cloudflare/core/port-discovery.js :27
import { writeFileSync, readFileSync, unlinkSync, existsSync, readdirSync } from 'fs'; - fs package/dist/cloudflare/core/tokens-tools.js :23
import { writeFileSync, mkdirSync, existsSync, readFileSync, readdirSync, } from "node:fs"; - fs package/dist/cloudflare/core/tokens/config.js :10
import { existsSync, readFileSync } from "node:fs"; - fs package/dist/cloudflare/core/websocket-server.js :18
import { readFileSync } from 'fs'; - fs package/dist/core/config.js :4
import { readFileSync, existsSync } from 'fs'; - fs package/dist/core/figma-tools.js :6
import * as fs from "fs"; - fs package/dist/core/port-discovery.js :27
import { writeFileSync, readFileSync, unlinkSync, existsSync, readdirSync } from 'fs'; - fs package/dist/core/tokens-tools.js :23
import { writeFileSync, mkdirSync, existsSync, readFileSync, readdirSync, } from "node:fs"; - fs package/dist/core/tokens/config.js :10
import { existsSync, readFileSync } from "node:fs"; - fs package/dist/core/websocket-server.js :18
import { readFileSync } from 'fs'; - fs package/dist/local.js :20
import { realpathSync, existsSync, readFileSync, mkdirSync, copyFileSync, writeFileSync } from "fs";
shell / exec 3
- shell package/dist/cloudflare/core/port-discovery.js :298
const { execSync } = require('child_process'); - shell package/dist/core/cdp-pipe-manager.js :15
import { spawn, execSync } from 'child_process'; - shell package/dist/core/port-discovery.js :198
const { execSync } = require('child_process');
network 12
- net package/dist/cloudflare/core/cloud-websocket-connector.js :5
* Durable Object. Each method maps to a command sent via fetch() RPC to - net package/dist/cloudflare/core/cloud-websocket-relay.js :6
* sends commands via fetch() RPC and receives responses. - net package/dist/cloudflare/core/figma-api.js :112
const response = await fetch(url, { - net package/dist/cloudflare/core/figma-mcp-client.js :50
const response = await fetch(`${this.baseUrl}/mcp`, { - net package/dist/cloudflare/core/websocket-server.js :17
import { createServer as createHttpServer } from 'http'; - net package/dist/cloudflare/index.js :48
const response = await fetch("https://api.figma.com/v1/me", { - net package/dist/core/cloud-websocket-connector.js :5
* Durable Object. Each method maps to a command sent via fetch() RPC to - net package/dist/core/cloud-websocket-relay.js :6
* sends commands via fetch() RPC and receives responses. - net package/dist/core/figma-api.js :112
const response = await fetch(url, { - net package/dist/core/figma-mcp-client.js :50
const response = await fetch(`${this.baseUrl}/mcp`, { - net package/dist/core/websocket-server.js :17
import { createServer as createHttpServer } from 'http'; - net package/dist/local.js :508
const imageResponse = await fetch(imageUrl);
secrets 3
- secrets package/dist/cloudflare/core/figma-tools.js :1276
const hasToken = !!process.env.FIGMA_ACCESS_TOKEN; - secrets package/dist/core/figma-tools.js :1276
const hasToken = !!process.env.FIGMA_ACCESS_TOKEN; - secrets package/dist/local.js :194
const accessToken = process.env.FIGMA_ACCESS_TOKEN;
tool registrations 200
- figma_scan_code_accessibility package/dist/cloudflare/core/accessibility-tools.js :246
- figma_get_annotations package/dist/cloudflare/core/annotation-tools.js :85
- figma_set_annotations package/dist/cloudflare/core/annotation-tools.js :131
- figma_get_annotation_categories package/dist/cloudflare/core/annotation-tools.js :194
- figma_get_comments package/dist/cloudflare/core/comment-tools.js :17
- figma_post_comment package/dist/cloudflare/core/comment-tools.js :111
- figma_delete_comment package/dist/cloudflare/core/comment-tools.js :219
- figma_get_component_for_development_deep package/dist/cloudflare/core/deep-component-tools.js :16
- figma_analyze_component_set package/dist/cloudflare/core/deep-component-tools.js :81
- figma_check_design_parity package/dist/cloudflare/core/design-code-tools.js :2278
- figma_generate_component_doc package/dist/cloudflare/core/design-code-tools.js :2466
- figma_get_design_system_kit package/dist/cloudflare/core/design-system-tools.js :425
- figma_diagnose package/dist/cloudflare/core/diagnose-tool.js :69
- figjam_create_sticky package/dist/cloudflare/core/figjam-tools.js :63
- figjam_create_stickies package/dist/cloudflare/core/figjam-tools.js :100
- figjam_create_connector package/dist/cloudflare/core/figjam-tools.js :139
- figjam_create_shape_with_text package/dist/cloudflare/core/figjam-tools.js :194
- figjam_create_section package/dist/cloudflare/core/figjam-tools.js :252
- figjam_create_table package/dist/cloudflare/core/figjam-tools.js :288
- figjam_create_code_block package/dist/cloudflare/core/figjam-tools.js :340
- figjam_auto_arrange package/dist/cloudflare/core/figjam-tools.js :380
- figjam_get_board_contents package/dist/cloudflare/core/figjam-tools.js :478
- figjam_get_connections package/dist/cloudflare/core/figjam-tools.js :521
- figma_get_file_data package/dist/cloudflare/core/figma-tools.js :675
- figma_get_variables package/dist/cloudflare/core/figma-tools.js :869
- figma_get_component package/dist/cloudflare/core/figma-tools.js :1912
- figma_get_styles package/dist/cloudflare/core/figma-tools.js :2149
- figma_get_component_image package/dist/cloudflare/core/figma-tools.js :2290
- figma_get_component_for_development package/dist/cloudflare/core/figma-tools.js :2406
- figma_get_file_for_plugin package/dist/cloudflare/core/figma-tools.js :2847
- figma_capture_screenshot package/dist/cloudflare/core/figma-tools.js :3032
- figma_set_instance_properties package/dist/cloudflare/core/figma-tools.js :3122
- figma_get_library_component_by_key package/dist/cloudflare/core/library-tools.js :52
- figma_get_library_variables package/dist/cloudflare/core/library-tools.js :325
- figma_import_library_variable package/dist/cloudflare/core/library-tools.js :483
- figma_list_slides package/dist/cloudflare/core/slides-tools.js :65
- figma_get_slide_content package/dist/cloudflare/core/slides-tools.js :99
- figma_get_slide_grid package/dist/cloudflare/core/slides-tools.js :130
- figma_get_slide_transition package/dist/cloudflare/core/slides-tools.js :156
- figma_get_text_styles package/dist/cloudflare/core/slides-tools.js :187
- figma_get_focused_slide package/dist/cloudflare/core/slides-tools.js :212
- figma_create_slide package/dist/cloudflare/core/slides-tools.js :241
- figma_delete_slide package/dist/cloudflare/core/slides-tools.js :280
- figma_duplicate_slide package/dist/cloudflare/core/slides-tools.js :311
- figma_reorder_slides package/dist/cloudflare/core/slides-tools.js :342
- figma_set_slide_transition package/dist/cloudflare/core/slides-tools.js :373
- figma_skip_slide package/dist/cloudflare/core/slides-tools.js :424
- figma_add_text_to_slide package/dist/cloudflare/core/slides-tools.js :458
- figma_add_shape_to_slide package/dist/cloudflare/core/slides-tools.js :555
- figma_set_slide_background package/dist/cloudflare/core/slides-tools.js :615
- figma_set_slides_view_mode package/dist/cloudflare/core/slides-tools.js :653
- figma_focus_slide package/dist/cloudflare/core/slides-tools.js :683
- figma_export_tokens package/dist/cloudflare/core/tokens-tools.js :65
- figma_import_tokens package/dist/cloudflare/core/tokens-tools.js :87
- figma_get_file_versions package/dist/cloudflare/core/version-tools.js :109
- figma_get_file_at_version package/dist/cloudflare/core/version-tools.js :271
- figma_diff_versions package/dist/cloudflare/core/version-tools.js :697
- figma_get_changes_since_version package/dist/cloudflare/core/version-tools.js :722
- figma_generate_changelog package/dist/cloudflare/core/version-tools.js :749
- figma_blame_node package/dist/cloudflare/core/version-tools.js :829
- figma_execute package/dist/cloudflare/core/write-tools.js :12
- figma_update_variable package/dist/cloudflare/core/write-tools.js :79
- figma_create_variable package/dist/cloudflare/core/write-tools.js :125
- figma_create_variable_collection package/dist/cloudflare/core/write-tools.js :182
- figma_delete_variable package/dist/cloudflare/core/write-tools.js :233
- figma_delete_variable_collection package/dist/cloudflare/core/write-tools.js :274
- figma_rename_variable package/dist/cloudflare/core/write-tools.js :315
- figma_add_mode package/dist/cloudflare/core/write-tools.js :359
- figma_rename_mode package/dist/cloudflare/core/write-tools.js :403
- figma_batch_create_variables package/dist/cloudflare/core/write-tools.js :456
- figma_batch_update_variables package/dist/cloudflare/core/write-tools.js :572
- figma_setup_design_tokens package/dist/cloudflare/core/write-tools.js :675
- figma_instantiate_component package/dist/cloudflare/core/write-tools.js :816
- figma_set_description package/dist/cloudflare/core/write-tools.js :904
- figma_add_component_property package/dist/cloudflare/core/write-tools.js :950
- figma_edit_component_property package/dist/cloudflare/core/write-tools.js :999
- figma_delete_component_property package/dist/cloudflare/core/write-tools.js :1058
- figma_resize_node package/dist/cloudflare/core/write-tools.js :1102
- figma_move_node package/dist/cloudflare/core/write-tools.js :1147
- figma_set_fills package/dist/cloudflare/core/write-tools.js :1187
- figma_set_image_fill package/dist/cloudflare/core/write-tools.js :1239
- figma_set_strokes package/dist/cloudflare/core/write-tools.js :1282
- figma_clone_node package/dist/cloudflare/core/write-tools.js :1331
- figma_delete_node package/dist/cloudflare/core/write-tools.js :1369
- figma_rename_node package/dist/cloudflare/core/write-tools.js :1407
- figma_set_text package/dist/cloudflare/core/write-tools.js :1446
- figma_create_child package/dist/cloudflare/core/write-tools.js :1487
- figma_arrange_component_set package/dist/cloudflare/core/write-tools.js :1554
- figma_lint_design package/dist/cloudflare/core/write-tools.js :2058
- figma_audit_component_accessibility package/dist/cloudflare/core/write-tools.js :2104
- figma_get_console_logs package/dist/cloudflare/index.js :321
- figma_take_screenshot package/dist/cloudflare/index.js :384
- figma_watch_console package/dist/cloudflare/index.js :473
- figma_reload_plugin package/dist/cloudflare/index.js :527
- figma_clear_console package/dist/cloudflare/index.js :579
- figma_navigate package/dist/cloudflare/index.js :617
- figma_get_status package/dist/cloudflare/index.js :694
- figma_pair_plugin package/dist/cloudflare/index.js :735
- figma_pair_plugin package/dist/cloudflare/index.js :1093
- figma_scan_code_accessibility package/dist/core/accessibility-tools.js :246
- figma_get_annotations package/dist/core/annotation-tools.js :85
- figma_set_annotations package/dist/core/annotation-tools.js :131
- figma_get_annotation_categories package/dist/core/annotation-tools.js :194
- figma_get_comments package/dist/core/comment-tools.js :17
- figma_post_comment package/dist/core/comment-tools.js :111
- figma_delete_comment package/dist/core/comment-tools.js :219
- figma_get_component_for_development_deep package/dist/core/deep-component-tools.js :16
- figma_analyze_component_set package/dist/core/deep-component-tools.js :81
- figma_check_design_parity package/dist/core/design-code-tools.js :2278
- figma_generate_component_doc package/dist/core/design-code-tools.js :2466
- figma_get_design_system_kit package/dist/core/design-system-tools.js :425
- figma_diagnose package/dist/core/diagnose-tool.js :69
- figjam_create_sticky package/dist/core/figjam-tools.js :63
- figjam_create_stickies package/dist/core/figjam-tools.js :100
- figjam_create_connector package/dist/core/figjam-tools.js :139
- figjam_create_shape_with_text package/dist/core/figjam-tools.js :194
- figjam_create_section package/dist/core/figjam-tools.js :252
- figjam_create_table package/dist/core/figjam-tools.js :288
- figjam_create_code_block package/dist/core/figjam-tools.js :340
- figjam_auto_arrange package/dist/core/figjam-tools.js :380
- figjam_get_board_contents package/dist/core/figjam-tools.js :478
- figjam_get_connections package/dist/core/figjam-tools.js :521
- figma_get_file_data package/dist/core/figma-tools.js :675
- figma_get_variables package/dist/core/figma-tools.js :869
- figma_get_component package/dist/core/figma-tools.js :1912
- figma_get_styles package/dist/core/figma-tools.js :2149
- figma_get_component_image package/dist/core/figma-tools.js :2290
- figma_get_component_for_development package/dist/core/figma-tools.js :2406
- figma_get_file_for_plugin package/dist/core/figma-tools.js :2847
- figma_capture_screenshot package/dist/core/figma-tools.js :3032
- figma_set_instance_properties package/dist/core/figma-tools.js :3122
- figma_get_library_component_by_key package/dist/core/library-tools.js :52
- figma_get_library_variables package/dist/core/library-tools.js :325
- figma_import_library_variable package/dist/core/library-tools.js :483
- figma_list_slides package/dist/core/slides-tools.js :65
- figma_get_slide_content package/dist/core/slides-tools.js :99
- figma_get_slide_grid package/dist/core/slides-tools.js :130
- figma_get_slide_transition package/dist/core/slides-tools.js :156
- figma_get_text_styles package/dist/core/slides-tools.js :187
- figma_get_focused_slide package/dist/core/slides-tools.js :212
- figma_create_slide package/dist/core/slides-tools.js :241
- figma_delete_slide package/dist/core/slides-tools.js :280
- figma_duplicate_slide package/dist/core/slides-tools.js :311
- figma_reorder_slides package/dist/core/slides-tools.js :342
- figma_set_slide_transition package/dist/core/slides-tools.js :373
- figma_skip_slide package/dist/core/slides-tools.js :424
- figma_add_text_to_slide package/dist/core/slides-tools.js :458
- figma_add_shape_to_slide package/dist/core/slides-tools.js :555
- figma_set_slide_background package/dist/core/slides-tools.js :615
- figma_set_slides_view_mode package/dist/core/slides-tools.js :653
- figma_focus_slide package/dist/core/slides-tools.js :683
- figma_export_tokens package/dist/core/tokens-tools.js :65
- figma_import_tokens package/dist/core/tokens-tools.js :87
- figma_get_file_versions package/dist/core/version-tools.js :109
- figma_get_file_at_version package/dist/core/version-tools.js :271
- figma_diff_versions package/dist/core/version-tools.js :697
- figma_get_changes_since_version package/dist/core/version-tools.js :722
- figma_generate_changelog package/dist/core/version-tools.js :749
- figma_blame_node package/dist/core/version-tools.js :829
- figma_execute package/dist/core/write-tools.js :12
- figma_update_variable package/dist/core/write-tools.js :79
- figma_create_variable package/dist/core/write-tools.js :125
- figma_create_variable_collection package/dist/core/write-tools.js :182
- figma_delete_variable package/dist/core/write-tools.js :233
- figma_delete_variable_collection package/dist/core/write-tools.js :274
- figma_rename_variable package/dist/core/write-tools.js :315
- figma_add_mode package/dist/core/write-tools.js :359
- figma_rename_mode package/dist/core/write-tools.js :403
- figma_batch_create_variables package/dist/core/write-tools.js :456
- figma_batch_update_variables package/dist/core/write-tools.js :572
- figma_setup_design_tokens package/dist/core/write-tools.js :675
- figma_instantiate_component package/dist/core/write-tools.js :816
- figma_set_description package/dist/core/write-tools.js :909
- figma_add_component_property package/dist/core/write-tools.js :955
- figma_edit_component_property package/dist/core/write-tools.js :1004
- figma_delete_component_property package/dist/core/write-tools.js :1063
- figma_resize_node package/dist/core/write-tools.js :1107
- figma_move_node package/dist/core/write-tools.js :1152
- figma_set_fills package/dist/core/write-tools.js :1192
- figma_set_image_fill package/dist/core/write-tools.js :1249
- figma_set_strokes package/dist/core/write-tools.js :1292
- figma_clone_node package/dist/core/write-tools.js :1348
- figma_delete_node package/dist/core/write-tools.js :1386
- figma_rename_node package/dist/core/write-tools.js :1424
- figma_set_text package/dist/core/write-tools.js :1463
- figma_create_child package/dist/core/write-tools.js :1514
- figma_arrange_component_set package/dist/core/write-tools.js :1581
- figma_lint_design package/dist/core/write-tools.js :2085
- figma_audit_component_accessibility package/dist/core/write-tools.js :2131
- figma_get_console_logs package/dist/local.js :362
- figma_take_screenshot package/dist/local.js :453
- figma_watch_console package/dist/local.js :563
- figma_reload_plugin package/dist/local.js :613
- figma_clear_console package/dist/local.js :681
- figma_navigate package/dist/local.js :733
- figma_get_status package/dist/local.js :856
- figma_reconnect package/dist/local.js :1074
- figma_get_selection package/dist/local.js :1143
- figma_get_design_changes package/dist/local.js :1236
- figma_list_open_files package/dist/local.js :1313
declared dependencies 26
- @cloudflare/puppeteer@^1.0.4
- @modelcontextprotocol/ext-apps@^1.0.1
- @modelcontextprotocol/sdk@^1.26.0
- agents@^0.7.1
- axe-core@^4.11.2
- jsdom@^29.0.1
- pino@^9.5.0
- pino-pretty@^13.0.0
- uuid@^11.0.3
- ws@^8.19.0
- zod@^3.25.76
- @biomejs/biome@^2.2.5
- @types/jest@^29.5.14
- @types/jsdom@^28.0.1
- @types/node@^22.10.2
- @types/uuid@^10.0.0
- @types/ws@^8.18.1
- cross-env@^7.0.3
- jest@^29.7.0
- ts-jest@^29.2.5
- tsx@^4.19.2
- typescript@5.9.3
- vite@^6.0.0
- vite-plugin-singlefile@^2.0.0
- wrangler@^4.42.0
- zod-to-json-schema@^3.25.1