{"slug": "figma-console-mcp", "title": "Figma Console MCP", "summary": "Figma Console MCP v1.36.0 introduces a target lock feature for parallel work, allowing AI agents to pin an active Figma file so commands do not route to the wrong file. The Model Context Protocol server gives AI assistants full access to Figma for design extraction, creation, debugging, and bidirectional token sync, with 112 tools available via NPX or Local Git, 101 via Cloud Mode, and 9 via Remote SSE.", "body_md": "Your design system as an API.Model Context Protocol server that bridges design and development—giving AI assistants complete access to Figma forextraction,creation,debugging, andbidirectional token sync.\n\n🆕 Target Lock for Parallel Work (v1.36.0):`figma_navigate`\n\nnow takes a`lock: true`\n\nflag that pins the active file — so an AI agent can keep working in one Figma file while you work in another, without commands silently routing to the wrong file. New connections, reconnects, and your own selection/page changes in other files no longer move the target; the pin auto-releases if that file disconnects.`figma_list_open_files`\n\nreports a`targetLocked`\n\nflag for a pre-write guard. Server-only release —no plugin re-import needed.[See what's new →]\n\nFigma Console MCP connects AI assistants (like Claude) to Figma, enabling:\n\n**🎨 Design system extraction**- Pull variables, components, and styles**🔁 Bidirectional token sync**- Export Figma variables to DTCG JSON (legacy or 2025.10 dialect) + 9 more formats; push code-side edits back to Figma with full apply — creates, renames, alias re-targeting, and replace-gated deletes. Replaces Style Dictionary and Tokens Studio's export pipeline.**📸 Visual debugging**- Take screenshots for context**✏️ Design creation**- Create UI components, frames, and layouts directly in Figma — including one-call component-set creation from a variant axes matrix**🔧 Variable management**- Create, update, rename, and delete design tokens**🕰 Version history & time-series awareness**- List versions, diff snapshots, generate markdown changelogs, trace property/variant introduction via binary-search blame**⚡ Real-time monitoring**- Watch console logs from the Desktop Bridge plugin**📌 FigJam boards**- Create stickies, flowcharts, tables, and code blocks on collaborative boards**🎞️ Slides presentations**- Build and manage Figma Slides decks programmatically**♿ Accessibility scanning**- 14 WCAG design checks with conformance level tagging, component scorecards, axe-core code scanning, design-to-code parity**🛡 Cross-MCP identity**- Every tool response carries`_mcp: \"figma-console-mcp\"`\n\nand errors are prefixed`[figma-console-mcp]`\n\nso attribution stays unambiguous in agents running multiple Figma MCPs**☁️ Cloud Write Relay**- Web AI clients (Claude.ai, v0, Replit) can design in Figma via cloud pairing**🔄 Four ways to connect**- Remote SSE, Cloud Mode, NPX, or Local Git\n\n**First, decide what you want to do:**\n\n| I want to... | Setup Method | Time |\n|---|---|---|\nCreate and modify designs with AI |\n|\n\n**Design from the web**(Claude.ai, v0, Replit, Lovable)[Cloud Mode](#-cloud-mode-web-ai-clients)** Contribute to the project**[Local Git Setup](#for-contributors-local-git-mode)** Just explore my design data**(read-only)[Remote SSE](#-remote-sse-read-only-exploration)| Capability | NPX / Local Git | Cloud Mode | Remote SSE |\n|---|---|---|---|\n| Read design data | ✅ | ✅ | ✅ |\nCreate components & frames |\n✅ | ✅ | ❌ |\nEdit existing designs |\n✅ | ✅ | ❌ |\nManage design tokens/variables |\n✅ | ✅ | ❌ |\nFigJam boards (stickies, flowcharts) |\n✅ | ✅ | ❌ |\n| Real-time monitoring (console, selection) | ✅ | ❌ | ❌ |\n| Desktop Bridge plugin | ✅ | ✅ | ❌ |\n| Requires Node.js | Yes | No |\nNo |\nTotal tools available |\n112 |\n101 |\n9 |\n\nBottom line:Remote SSE isread-onlywith 9 tools.Cloud Modeunlocks write access (101 tools) from web AI clients without Node.js. NPX/Local Git gives the full 112 tools with real-time monitoring.\n\n**Best for:** Designers who want full AI-assisted design capabilities.\n\n**What you get:** All 112 tools including design creation, variable management, and component instantiation.\n\n-\n**Node.js 18+**— Check with`node --version`\n\n([Download](https://nodejs.org)) -\n**Figma Desktop** installed (not just the web app) -\n**An MCP client**(Claude Code, Cursor, Windsurf, Claude Desktop, etc.)\n\n- Go to\n[Manage personal access tokens](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens)in Figma Help - Follow the steps to\n**create a new personal access token** - Enter description:\n`Figma Console MCP`\n\n- Set scopes:\n**File content**(Read),** File versions**(Read),** Variables**(Read),** Comments**(Read and write) **Copy the token**— you won't see it again! (starts with`figd_`\n\n)\n\n**Claude Code (CLI):**\n\n```\nclaude mcp add figma-console -s user -e FIGMA_ACCESS_TOKEN=figd_YOUR_TOKEN_HERE -e ENABLE_MCP_APPS=true -- npx -y figma-console-mcp@latest\n```\n\n**Cursor / Windsurf / Claude Desktop:**\n\nAdd to your MCP config file (see [Where to find your config file](#-where-to-find-your-config-file) below):\n\n```\n{\n  \"mcpServers\": {\n    \"figma-console\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"figma-console-mcp@latest\"],\n      \"env\": {\n        \"FIGMA_ACCESS_TOKEN\": \"figd_YOUR_TOKEN_HERE\",\n        \"ENABLE_MCP_APPS\": \"true\"\n      }\n    }\n  }\n}\n```\n\nIf you're not sure where to put the JSON configuration above, here's where each app stores its MCP config:\n\n| App | macOS | Windows |\n|---|---|---|\nClaude Desktop |\n`~/Library/Application Support/Claude/claude_desktop_config.json` |\n`%APPDATA%\\Claude\\claude_desktop_config.json` |\nClaude Code (CLI) |\n`~/.claude.json` |\n`%USERPROFILE%\\.claude.json` |\nCursor |\n`~/.cursor/mcp.json` |\n`%USERPROFILE%\\.cursor\\mcp.json` |\nWindsurf |\n`~/.codeium/windsurf/mcp_config.json` |\n`%USERPROFILE%\\.codeium\\windsurf\\mcp_config.json` |\n\nTip for designers:The`~`\n\nsymbol means yourhome folder. On macOS, that's`/Users/YourName/`\n\n. On Windows, it's`C:\\Users\\YourName\\`\n\n. You can open these files in any text editor — even TextEdit or Notepad.\n\nCan't find the file?If it doesn't exist yet, create it. The app will pick it up on its next restart. Make sure the entire file is valid JSON (watch for missing commas or brackets).\n\nClaude Code users:You can skip manual editing entirely. Just run the`claude mcp add`\n\ncommand above and it handles everything for you.\n\n**Desktop Bridge Plugin:**\n\n- Open Figma Desktop normally (no special flags needed) and open a file\n- Go to\n**Plugins → Development → Import plugin from manifest...** - Select\n`~/.figma-console-mcp/plugin/manifest.json`\n\n(stable path, auto-created by the MCP server) - Run the plugin in your Figma file — it scans ports 9223–9232 and connects automatically to your running MCP server\n\nHeads-up on plugin updates.Figma caches plugin files (`code.js`\n\nand`ui.html`\n\n) at the application level. The MCP server refreshes the files at`~/.figma-console-mcp/plugin/`\n\non every startup, but Figma keeps using its cached copy until you re-import the manifest.\n\nRe-importing is— 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 isrequiredonly when a release notes entry says sooptional: you'll still get every functional change, just not the cosmetic plugin-side touches (status-pill copy,`pluginVersion`\n\nreporting).When you do re-import: Plugins → Manage plugins → re-import\n\n`~/.figma-console-mcp/plugin/manifest.json`\n\n. The stable path never changes, so it's a one-click step.\n\nRestart your MCP client to load the new configuration.\n\n```\nCheck Figma status\n```\n\n→ Should show connection status with active WebSocket transport\n\n```\nCreate a simple frame with a blue background\n```\n\n→ Should create a frame in Figma (confirms write access!)\n\n**Best for:** Developers who want to modify source code or contribute to the project.\n\n**What you get:** Same 112 tools as NPX, plus full source code access.\n\n```\n# Clone and build\ngit clone https://github.com/southleft/figma-console-mcp.git\ncd figma-console-mcp\nnpm install\nnpm run build:local\n```\n\nAdd to your config file (see [Where to find your config file](#-where-to-find-your-config-file)):\n\n```\n{\n  \"mcpServers\": {\n    \"figma-console\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/figma-console-mcp/dist/local.js\"],\n      \"env\": {\n        \"FIGMA_ACCESS_TOKEN\": \"figd_YOUR_TOKEN_HERE\",\n        \"ENABLE_MCP_APPS\": \"true\"\n      }\n    }\n  }\n}\n```\n\nThen follow [NPX Steps 3-5](#step-3-connect-to-figma-desktop) above.\n\n**Best for:** Quickly evaluating the tool or read-only design data extraction.\n\n**What you get:** 9 read-only tools — view data, take screenshots, read logs, design-code parity. **Cannot create or modify designs.**\n\n- Open Claude Desktop →\n**Settings**→** Connectors** - Click\n**\"Add Custom Connector\"** - Enter:\n**Name:**`Figma Console (Read-Only)`\n\n**URL:**`https://figma-console-mcp.southleft.com/sse`\n\n- Click\n**\"Add\"**— Done! ✅\n\nOAuth authentication happens automatically when you first use design system tools.\n\nClaude Code's native⚠️ Known Issue:`--transport sse`\n\nhas a[bug]. Use`mcp-remote`\n\ninstead:\n\n```\nclaude mcp add figma-console -s user -- npx -y mcp-remote@latest https://figma-console-mcp.southleft.com/sse\n```\n\n**💡 Tip:** For full capabilities, use [NPX Setup](#-npx-setup-recommended) instead of Remote SSE.\n\n```\n{\n  \"mcpServers\": {\n    \"figma-console\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"https://figma-console-mcp.southleft.com/sse\"]\n    }\n  }\n}\n```\n\nReady for design creation? Follow the [NPX Setup](#-npx-setup-recommended) guide above, or try [Cloud Mode](#-cloud-mode-web-ai-clients) if you don't want to install Node.js.\n\n**Best for:** Using Claude.ai, v0, Replit, or Lovable to create and modify Figma designs — no Node.js required.\n\n**What you get:** 101 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.\n\n-\n**Figma Personal Access Token**—[Create one here](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens)(starts with`figd_`\n\n) -\n**Figma Desktop** with the Desktop Bridge plugin installed (see[Desktop Bridge setup](#step-3-connect-to-figma-desktop)) -\n**A web AI client** that supports MCP (Claude.ai, Lovable, v0, Replit, etc.)\n\nAdd this endpoint to your AI platform's MCP settings:\n\n**URL:** `https://figma-console-mcp.southleft.com/mcp`\n\n**Auth:** Your Figma PAT as Bearer token\n\nIn **Claude.ai**: Settings → Connectors → Add Custom Connector → paste the URL above.\nIn **Lovable/v0/Replit**: Look for \"Add MCP Server\" or \"Integrations\" in settings → paste the URL and add your token.\n\n**Open the Desktop Bridge plugin** in Figma Desktop (Plugins → Development → Figma Desktop Bridge)**Tell your AI assistant:**\n\n```\nConnect to my Figma plugin\n```\n\n**The AI gives you a 6-character pairing code**(expires in 5 minutes)** In the plugin:**Toggle \"Cloud Mode\" → enter the code → click Connect** You're paired!**Full write access is now available\n\nOnce paired, use natural language to design:\n\n```\nCreate a card component with a header image, title, description, and action button\nSet up a color token collection with Light and Dark modes\nAdd a \"High Contrast\" mode to my existing token collection\n```\n\nYour AI client sends write commands through the cloud MCP server, which relays them via WebSocket to the Desktop Bridge plugin running in your Figma Desktop. The plugin executes the commands using the Figma Plugin API and returns results back through the same path.\n\n```\nAI Client → Cloud MCP Server → Durable Object Relay → Desktop Bridge Plugin → Figma\n```\n\nVariables on any plan:Cloud Mode uses the Plugin API (not the Enterprise REST API), so variable management works on Free, Pro, and Organization plans.\n\n| Feature | NPX (Recommended) | Cloud Mode | Local Git | Remote SSE |\n|---|---|---|---|---|\nSetup time |\n~10 minutes | ~5 minutes | ~15 minutes | ~2 minutes |\nTotal tools |\n112 |\n101 |\n112 |\n9 (read-only) |\nDesign creation |\n✅ | ✅ | ✅ | ❌ |\nVariable management |\n✅ | ✅ | ✅ | ❌ |\nComponent instantiation |\n✅ | ✅ | ✅ | ❌ |\nFigJam boards |\n✅ | ✅ | ✅ | ❌ |\nReal-time monitoring |\n✅ | ❌ | ✅ | ❌ |\nDesktop Bridge plugin |\n✅ | ✅ | ✅ | ❌ |\nVariables (no Enterprise) |\n✅ | ✅ | ✅ | ❌ |\nConsole logs |\n✅ (zero latency) | ❌ | ✅ (zero latency) | ✅ |\nRead design data |\n✅ | ✅ | ✅ | ✅ |\nRequires Node.js |\nYes | No |\nYes | No |\nAuthentication |\nPAT (manual) | OAuth (automatic) | PAT (manual) | OAuth (automatic) |\nAutomatic updates |\n✅ (`@latest` ) |\n✅ | Manual (`git pull` ) |\n✅ |\nSource code access |\n❌ | ❌ | ✅ | ❌ |\n\nKey insight:Remote SSE is read-only. Cloud Mode adds write access for web AI clients without Node.js. NPX/Local Git give the full 112 tools.\n\nAfter setup, try these prompts:\n\n**Basic test (all modes):**\n\n```\nNavigate to https://www.figma.com and check status\n```\n\n**Design system test (requires auth):**\n\n```\nGet design variables from [your Figma file URL]\n```\n\n**Cloud Mode test:**\n\n```\nConnect to my Figma plugin\n```\n\n→ Follow the pairing flow, then try: \"Create a simple blue rectangle\"\n\n**Plugin test (Local Mode only):**\n\n```\nShow me the primary font for [your theme name]\n```\n\nWhen you first use design system tools:\n\n- Browser opens automatically to Figma authorization page\n- Click \"Allow\" to authorize (one-time)\n- Token stored securely and refreshed automatically\n- Works with Free, Pro, and Enterprise Figma plans\n\n- Visit\n[https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens) - Generate token with scopes:\n**File content**(Read),** File versions**(Read),** Variables**(Read),** Comments**(Read and write) - Add to MCP config as\n`FIGMA_ACCESS_TOKEN`\n\nenvironment variable\n\n`figma_get_status`\n\n- Check WebSocket bridge connection and file context`figma_diagnose`\n\n- Designer-readable health check + setup guidance`figma_reconnect`\n\n- Force reconnect to the Desktop Bridge plugin`figma_navigate`\n\n- Switch the active file target among connected plugins (Local), or navigate the cloud headless browser (Remote/Cloud)\n\n`figma_get_console_logs`\n\n- Retrieve console logs`figma_watch_console`\n\n- Real-time log streaming`figma_clear_console`\n\n- Clear log buffer`figma_reload_plugin`\n\n- Reload current page\n\n`figma_take_screenshot`\n\n- Capture UI screenshots\n\n`figma_get_design_system_kit`\n\n-**Full design system in one call**— tokens, components, styles, visual specs`figma_get_variables`\n\n- Extract design tokens/variables`figma_get_component`\n\n- Get component data (metadata or reconstruction spec)`figma_get_component_for_development`\n\n- Component + image`figma_get_component_image`\n\n- Just the image`figma_get_styles`\n\n- Color, text, effect styles`figma_get_file_data`\n\n- Full file structure`figma_get_file_for_plugin`\n\n- Optimized file data\n\n`figma_get_library_component_by_key`\n\n-**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 at >500KB.`figma_get_library_components`\n\n- Discover all components in a library file (requires library file URL/key)`figma_get_library_variables`\n\n- 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`\n\n,`collectionName`\n\n, or`resolvedType`\n\n.`figma_import_library_variable`\n\n- Import a library variable into the current file. Returns a local`id`\n\nready to pass to`figma_set_fills`\n\n/`figma_update_variable`\n\n/ any variable-binding tool.\n\n`figma_pair_plugin`\n\n- Generate a pairing code to connect a Desktop Bridge plugin via the cloud relay\n\n`figma_execute`\n\n-**Power tool**: Run any Figma Plugin API code to create designs- Create frames, shapes, text, components\n- Apply auto-layout, styles, effects\n- Build complete UI mockups programmatically\n\n`figma_create_component_set`\n\n-**Create a component set with variants in one declarative call**- Generate every variant combination from an axes matrix (e.g.\n`{ State: [\"default\", \"hover\", \"disabled\"], Size: [\"sm\", \"lg\"] }`\n\n→ 6 variants) off a base component, or combine existing components `Prop=Value`\n\nvariant naming,`combineAsVariants`\n\nunder the hood, optional auto-arranged labeled grid- Returns each variant's key, ready for\n`figma_instantiate_component`\n\n- Generate every variant combination from an axes matrix (e.g.\n`figma_arrange_component_set`\n\n-**Organize variants into professional component sets**- Convert multiple component variants into a proper Figma component set\n- Applies native purple dashed border visualization automatically\n- Creates white container frame with title, row labels, and column headers\n- Row labels vertically centered with each grid row\n- Column headers horizontally centered with each column\n- Use natural language like \"arrange these variants\" or \"organize as component set\"\n\n`figma_set_description`\n\n-**Document components with rich descriptions**- Add descriptions to components, component sets, and styles\n- Supports markdown formatting for rich documentation\n- Descriptions appear in Dev Mode for developers\n\n`figma_create_slot`\n\n-**Add a slot to a component** via the GA`createSlot()`\n\nAPI — the linked SLOT property is created automatically; works on standalone components and variants inside a component set`figma_get_slots`\n\n- List slots on a component, component set (aggregated across variants), or instance — ids, names, property keys, dimensions, and current children`figma_append_to_slot`\n\n-**Populate an instance's slot** by cloning an existing node or creating new content (`setProperties`\n\nrejects slot values by design — this is the population path)`figma_reset_slot`\n\n- Clear a slot's content on an instance`figma_add_slot_property`\n\n- Retrofit an existing frame as a slot via a manual SLOT property binding, with`description`\n\nand`preferredValues`\n\n`figma_check_design_parity`\n\n- Compare Figma component specs against code implementation, producing a scored diff report with actionable fix items`figma_generate_component_doc`\n\n- Generate platform-agnostic markdown documentation by merging Figma design data with code-side info\n\n`figma_export_tokens`\n\n-**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\"`\n\n) 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`\n\nautodiscovery means zero-arg calls after first setup. Scopes and codeSyntax metadata round-trip via`$extensions`\n\n. Replaces Style Dictionary and Tokens Studio's export pipeline for popular styling methods.`figma_import_tokens`\n\n-**Push code-side token edits back to Figma with a full apply phase.** Diffs against current Figma state, then applies value updates,**creates** missing collections/variables, applies**renames**, writes real** alias**(`VARIABLE_ALIAS`\n\n) references, and — only under`strategy: \"replace\"`\n\n— deletes Figma-only variables. Round-trip safe — Figma variable IDs preserved in DTCG`$extensions[\"figma-console-mcp\"]`\n\nso renames on either side don't create duplicates. Accepts both DTCG dialects. Dry-run strategy for safe previews. In Cloud Mode, pass tokens inline via`payload`\n\nor`files`\n\n(no local filesystem access).\n\n`figma_create_variable_collection`\n\n- Create new variable collections with modes`figma_create_variable`\n\n- Create COLOR, FLOAT, STRING, or BOOLEAN variables`figma_update_variable`\n\n- Update variable values in specific modes`figma_rename_variable`\n\n- Rename variables while preserving values`figma_delete_variable`\n\n- Delete variables`figma_delete_variable_collection`\n\n- Delete collections and all their variables`figma_add_mode`\n\n- Add modes to collections (e.g., \"Dark\", \"Mobile\")`figma_rename_mode`\n\n- Rename existing modes`figma_batch_create_variables`\n\n- Create up to 100 variables in one call (10-50x faster)`figma_batch_update_variables`\n\n- Update up to 100 variable values in one call`figma_setup_design_tokens`\n\n- Create complete token system (collection + modes + variables) atomically — values accept DTCG brace references (`\"{color.blue.600}\"`\n\n) that resolve to real variable aliases\n\n`figjam_create_sticky`\n\n- Create a sticky note with color options`figjam_create_stickies`\n\n- Batch create up to 200 stickies`figjam_create_connector`\n\n- Connect nodes with labeled connector lines`figjam_create_shape_with_text`\n\n- Create flowchart shapes (diamond, ellipse, etc.)`figjam_create_table`\n\n- Create tables with cell data`figjam_create_code_block`\n\n- Add code snippets with syntax highlighting`figjam_auto_arrange`\n\n- Arrange nodes in grid, horizontal, or vertical layouts`figjam_get_board_contents`\n\n- Read all content from a FigJam board`figjam_get_connections`\n\n- Read the connection graph (flowcharts, relationships)\n\n`figma_list_slides`\n\n- List all slides with IDs, positions, and skip status`figma_get_slide_content`\n\n- Get the full content tree of a slide`figma_get_slide_grid`\n\n- Get the 2D grid layout of the presentation`figma_get_slide_transition`\n\n- Read transition settings for a slide`figma_get_focused_slide`\n\n- Get the currently focused slide`figma_create_slide`\n\n- Create a new blank slide`figma_delete_slide`\n\n- Delete a slide from the presentation`figma_duplicate_slide`\n\n- Clone an existing slide`figma_reorder_slides`\n\n- Reorder slides via new 2D grid layout`figma_set_slide_transition`\n\n- Set transition effects (22 styles, 8 curves)`figma_skip_slide`\n\n- Toggle whether a slide is skipped in presentation mode`figma_add_text_to_slide`\n\n- Add text to a slide with custom fonts, colors, alignment, and wrapping`figma_add_shape_to_slide`\n\n- Add rectangle or ellipse shapes with color`figma_set_slide_background`\n\n- Set a slide's background color (creates or updates)`figma_get_text_styles`\n\n- Get all local text styles with IDs, fonts, and sizes`figma_set_slides_view_mode`\n\n- Toggle grid vs. single-slide view`figma_focus_slide`\n\n- Navigate to a specific slide\n\n```\nConnect to my Figma plugin so we can start designing\nPair with my Figma file and create a login form with email, password, and submit button\nSet up a brand color token collection with Light and Dark modes\nNavigate to my Figma plugin and show me any console errors\nWatch the console for 30 seconds while I test my plugin\nGet the last 20 console logs\nGet all design variables from https://figma.com/design/abc123\nExtract color styles and show me the CSS exports\nGet the Button component with a visual reference image\nGet the Badge component in reconstruction format for programmatic creation\nCreate a success notification card with a checkmark icon and message\nDesign a button component with hover and disabled states\nBuild a navigation bar with logo, menu items, and user avatar\nCreate a modal dialog with header, content area, and action buttons\nArrange these button variants into a component set\nOrganize my icon variants as a proper component set with the purple border\nCreate a new color collection called \"Brand Colors\" with Light and Dark modes\nAdd a primary color variable with value #3B82F6 for Light and #60A5FA for Dark\nRename the \"Default\" mode to \"Light Theme\"\nAdd a \"High Contrast\" mode to the existing collection\nCompare the Button component in Figma against our React implementation\nCheck design parity for the Card component before sign-off\nGenerate component documentation for the Dialog from our design system\nCreate a retrospective board with \"Went Well\", \"To Improve\", and \"Action Items\" columns\nBuild a user flow diagram for the checkout process with decision points\nRead this brainstorming board and summarize the key themes\nGenerate an affinity map from these meeting notes\nCreate a comparison table of our three platform options\nList all slides and tell me which ones are skipped\nAdd a new slide with the title \"Thank You\" in 72px text\nSet a DISSOLVE transition on the first slide with 0.5 second duration\nDuplicate slide 5 for an A/B comparison\nSkip slides 8 and 9 — they're not ready for the client presentation\nReorder my slides so the conclusion comes before Q&A\nTake a screenshot of the current Figma canvas\nNavigate to this file and capture what's on screen\n```\n\nRequires Desktop Bridge:This feature works with Local Mode (NPX or Local Git) and[Cloud Mode]. Remote SSE without Cloud Mode pairing is read-only and cannot create or modify designs.\n\nOne of the most powerful capabilities of this MCP server is the ability to **design complete UI components and pages directly in Figma through natural language conversation** with any MCP-compatible AI assistant like Claude Desktop or Claude Code.\n\n**Create original designs from scratch:**\n\n```\nDesign a login card with email and password fields, a \"Forgot password?\" link,\nand a primary Sign In button. Use 32px padding, 16px border radius, and subtle shadow.\n```\n\n**Leverage existing component libraries:**\n\n```\nBuild a dashboard header using the Avatar component for the user profile,\nButton components for actions, and Badge components for notifications.\n```\n\n**Generate complete page layouts:**\n\n```\nCreate a settings page with a sidebar navigation, a main content area with form fields,\nand a sticky footer with Save and Cancel buttons.\n```\n\n**You describe what you want** in plain English**The AI searches your component library** using`figma_search_components`\n\nto find relevant building blocks**Components are instantiated** with proper variants and properties via`figma_instantiate_component`\n\n**Custom elements are created** using the full Figma Plugin API via`figma_execute`\n\n**Visual validation** automatically captures screenshots and iterates until the design looks right\n\n| Role | Use Case |\n|---|---|\nDesigners |\nRapidly prototype ideas without manual frame-by-frame construction. Explore variations quickly by describing changes. |\nDevelopers |\nGenerate UI mockups during planning discussions. Create visual specs without switching to design tools. |\nProduct Managers |\nSketch out feature concepts during ideation. Communicate visual requirements directly to stakeholders. |\nDesign System Teams |\nTest component flexibility by generating compositions. Identify gaps in component coverage. |\nAgencies |\nSpeed up initial concept delivery. Iterate on client feedback in real-time during calls. |\n\n**Brand New Design:**\n\n\"Create a notification toast with an icon on the left, title and description text, and a dismiss button. Use our brand colors.\"\n\nThe AI creates custom frames, applies your design tokens, and builds the component from scratch.\n\n**Component Composition:**\n\n\"Build a user profile card using the Avatar component (large size), two Button components (Edit Profile and Settings), and a Badge for the user's status.\"\n\nThe AI searches your library, finds the exact components, and assembles them with proper spacing and alignment.\n\n**Design Iteration:**\n\n\"The spacing feels too tight. Increase the gap between sections to 24px and make the heading larger.\"\n\nThe AI modifies the existing design, takes a screenshot to verify, and continues iterating until you're satisfied.\n\nThe AI automatically follows a validation workflow after creating designs:\n\n**Create**→ Execute the design code** Screenshot**→ Capture the result** Analyze**→ Check alignment, spacing, and visual balance** Iterate**→ Fix any issues detected** Verify**→ Final screenshot to confirm\n\nThis ensures designs aren't just technically correct—they *look* right.\n\nThe **Figma Desktop Bridge** plugin is the recommended way to connect Figma to the MCP server. It communicates via WebSocket — no special Figma launch flags needed, and it persists across Figma restarts.\n\n- Open Figma Desktop (normal launch — no debug flags needed)\n- Go to\n**Plugins → Development → Import plugin from manifest...** - Select\n`figma-desktop-bridge/manifest.json`\n\nfrom the figma-console-mcp directory - Run the plugin in your Figma file — it auto-connects via WebSocket (scans ports 9223–9232)\n- Ask your AI: \"Check Figma status\" to verify the connection\n\nOne-time import.Once imported, the plugin stays in your Development plugins list. Just run it whenever you want to use the MCP.\n\n**📖 Desktop Bridge Documentation**\n\n**Read Operations:**\n\n- Variables without Enterprise API\n- Reliable component descriptions (bypasses API bugs)\n- Multi-mode support (Light/Dark/Brand variants)\n- Real-time selection tracking and document change monitoring\n\n**Write Operations:**\n\n**Design Creation**- Create frames, shapes, text, components via`figma_execute`\n\n**Variable Management**- Full CRUD operations on variables and collections** Mode Management**- Add and rename modes for multi-theme support\n\n- The MCP server communicates via\n**WebSocket** through the Desktop Bridge plugin - The server tries port 9223 first, then automatically falls back through ports 9224–9232 if needed\n- The plugin scans all ports in the range and connects to every active server it finds\n- All 112 tools work through the WebSocket transport\n\n**Multiple files:** The WebSocket server supports multiple simultaneous plugin connections — one per open Figma file. Each connection is tracked by file key with independent state (selection, document changes, console logs).\n\n**Environment variables:**\n\n`FIGMA_WS_PORT`\n\n— Override the preferred WebSocket port (default: 9223). The server will fall back through a 10-port range starting from this value if the preferred port is occupied.`FIGMA_WS_HOST`\n\n— Override the WebSocket server bind address (default:`localhost`\n\n). Set to`0.0.0.0`\n\nwhen running inside Docker so the host machine can reach the MCP server.\n\n**Cloud Mode:** The plugin also supports a **Cloud Mode** toggle for pairing with web AI clients (Claude.ai, v0, Replit, Lovable). Toggle \"Cloud Mode\" in the plugin UI, enter the 6-character pairing code from your AI assistant, and click Connect. See [Cloud Mode](#-cloud-mode-web-ai-clients) for details.\n\n**Plugin Limitation:** In Local Mode, works with NPX or Local Git. In Cloud Mode, pairs with the remote MCP endpoint. Remote SSE without Cloud Mode pairing is read-only.\n\nFigma Console MCP now supports **multiple simultaneous instances** — perfect for designers and developers who work across multiple projects or use Claude Desktop's Chat and Code tabs at the same time.\n\nWhen two processes tried to start the MCP server (e.g., Claude Desktop's Chat tab and Code tab), the second one would crash with `EADDRINUSE`\n\nbecause both competed for port 9223.\n\n- The server tries port\n**9223** first (the default) - If that port is already taken, it automatically tries\n**9224**, then** 9225**, and so on up to** 9232** - The Desktop Bridge plugin in Figma connects to\n**all** active servers simultaneously - Every server instance receives real-time events (selection changes, document changes, console logs)\n`figma_get_status`\n\nshows which port you're on and lists other active instances\n\n| Scenario | Before v1.10.0 | Now |\n|---|---|---|\n| Two Claude Desktop tabs (Chat + Code) | Second tab crashes | Both work independently |\n| Multiple CLI terminals on different projects | Only one can run | All run simultaneously |\n| Claude Desktop + Claude Code CLI | Port conflict | Both coexist |\n\n**Nothing.** Multi-instance support is fully automatic:\n\n- Each MCP server claims the next available port in the range\n- The Desktop Bridge plugin scans all ports and connects to every active server\n- Orphaned processes from closed tabs are automatically cleaned up on startup\n- No manual port management — the plugin already scans the whole range\n\n(Re-importing the manifest is only required when the plugin code itself changes — e.g. after a package update. Port-range scanning is already in the shipped plugin.)\n\nFigma Console MCP includes support for **MCP Apps** — rich interactive UI experiences that render directly inside any MCP client that supports the [MCP Apps protocol extension](https://github.com/anthropics/anthropic-cookbook/tree/main/misc/model_context_protocol/ext-apps). Built with the official [ @modelcontextprotocol/ext-apps](https://www.npmjs.com/package/@modelcontextprotocol/ext-apps) SDK.\n\nWhat are MCP Apps?Traditional MCP tools return text or images to the AI. MCP Apps go further — they render interactive HTML interfaces inline in the chat, allowing users to browse, filter, and interact with data directly without consuming AI context.\n\nAn interactive design token explorer.\n\n**Usage:** Ask Claude to \"browse the design tokens\" or \"show me the design tokens\" while connected to a Figma file.\n\n**Features:**\n\n- Browse all tokens organized by collection with expandable sections\n- Filter by type (Colors, Numbers, Strings) and search by name/description\n- Per-collection mode columns (Light, Dark, Custom) matching Figma's Variables panel\n- Color swatches, alias resolution, and click-to-copy on any value\n- Works without Enterprise plan via Desktop Bridge (local mode)\n\nA Lighthouse-style health scorecard that audits your design system across six categories.\n\n**Usage:** Ask Claude to \"audit the design system\" or \"show me design system health\" while connected to a Figma file.\n\n**Features:**\n\n- Overall weighted score (0–100) with six category gauges: Naming, Tokens, Components, Accessibility, Consistency, Coverage\n- Expandable category sections with individual findings, severity indicators, and actionable details\n- Diagnostic locations linking findings to specific variables, components, or collections\n- Tooltips explaining each check's purpose and scoring criteria\n- Refresh button to re-run the audit without consuming AI context\n- Pure scoring engine with no external dependencies — all analysis runs locally\n\n**Enabling MCP Apps:**\n\nMCP Apps are enabled by default in the setup configurations above (via `\"ENABLE_MCP_APPS\": \"true\"`\n\n). If you set up before v1.10.0 and don't have this in your config, add it to your `env`\n\nsection:\n\n```\n\"env\": {\n  \"FIGMA_ACCESS_TOKEN\": \"figd_YOUR_TOKEN_HERE\",\n  \"ENABLE_MCP_APPS\": \"true\"\n}\n```\n\nNote:MCP Apps require an MCP client with[ext-apps protocol]support (e.g. Claude Desktop). This feature is experimental and the protocol may evolve.\n\nPlanned MCP Apps:\n\n**Component Gallery**— Visual browser for searching and previewing components with variant exploration** Style Inspector**— Interactive panel for exploring color, text, and effect styles with live previews** Variable Diff Viewer**— Side-by-side comparison of token values across modes and branches\n\nThe architecture supports adding new apps with minimal boilerplate — each app is a self-contained module with its own server-side tool registration and client-side UI.\n\n- Complete setup guide for all MCP clients[Setup Guide](/southleft/figma-console-mcp/blob/main/docs/SETUP.md)- Deploy your own instance on Cloudflare[Self-Hosting](/southleft/figma-console-mcp/blob/main/docs/SELF_HOSTING.md)- How it works under the hood[Architecture](/southleft/figma-console-mcp/blob/main/docs/ARCHITECTURE.md)- Configure OAuth for self-hosted deployments[OAuth Setup](/southleft/figma-console-mcp/blob/main/docs/OAUTH_SETUP.md)- Common issues and solutions[Troubleshooting](/southleft/figma-console-mcp/blob/main/docs/TROUBLESHOOTING.md)\n\n**Figma Console MCP (This Project)** - Debugging, data extraction, and design creation\n\n- ✅ Real-time console logs from Figma plugins\n- ✅ Screenshot capture and visual debugging\n- ✅ Error stack traces and runtime monitoring\n- ✅ Raw design data extraction (JSON)\n- ✅ FigJam board creation and reading (stickies, flowcharts, tables)\n- ✅ Works remotely or locally\n\n**Figma Official Dev Mode MCP** - Code generation\n\n- ✅ Generates React/HTML code from designs\n- ✅ Tailwind/CSS class generation\n- ✅ Component boilerplate scaffolding\n\n**Use both together** for the complete workflow: generate code with Official MCP, then debug and extract data with Console MCP.\n\n**Current Status:** v1.36.0 (Stable) - Production-ready. Latest: Target lock for multi-file parallel work — `figma_navigate`\n\ntakes a `lock: true`\n\nflag 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 (server-only, no plugin re-import). 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`\n\n, `figma_get_slots`\n\n, `figma_append_to_slot`\n\n, `figma_reset_slot`\n\n, `figma_add_slot_property`\n\n), 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`\n\napplies the complete diff plan (creates missing collections/variables, applies renames, writes real `VARIABLE_ALIAS`\n\nreferences, and deletes only under explicit `replace`\n\n), `figma_export_tokens`\n\nspeaks the DTCG 2025.10 dialect on request (legacy default byte-identical), variable scopes/codeSyntax round-trip via `$extensions`\n\n, `figma_setup_design_tokens`\n\naccepts alias values via DTCG brace references, and `figma_create_component_set`\n\nbuilds 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`\n\nauto-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, **112 tools** (Local) / **101 tools** (Cloud) / **9 tools** (Remote read-only), Comments API, cross-MCP identity disambiguation, and MCP Apps.\n\n**Recent Releases:**\n\n-\n**v1.36.0**- Target lock for multi-file parallel work.`figma_navigate`\n\ngains a`lock: true`\n\nflag that pins the active file — new connections, reconnects, and the user's own selection/page changes in other files no longer move the command target, so an agent can safely write to one file while the user works in another. Auto-releases when the pinned file disconnects or navigates away;`figma_list_open_files`\n\nreports a`targetLocked`\n\nflag for pre-write guards. Server-only — no plugin re-import needed. -\n**v1.35.0**- Figma Slots write support, closing[#29](https://github.com/southleft/figma-console-mcp/issues/29)(the tracker's most-requested feature) via community PR[#77](https://github.com/southleft/figma-console-mcp/pull/77)by @simonesalvucci, updated to the GA API. Five new tools:`figma_create_slot`\n\n(slot + auto-linked SLOT property; variants inside component sets supported — the beta restriction was lifted at GA),`figma_get_slots`\n\n,`figma_append_to_slot`\n\n(clone or create content into instance slots; snaps clones to the slot origin),`figma_reset_slot`\n\n, and`figma_add_slot_property`\n\n(retrofit an existing frame as a slot). Hardened by live validation: VARIANT`defaultValue`\n\npassthrough restored (Figma requires non-empty), destructive-path reorder in the append handler (content validated before`clearExisting`\n\nempties anything), relay whitelist fix for`slot`\n\npayloads.**Plugin re-import required**(`code.js`\n\n+`ui.html`\n\nchanged). -\n**v1.34.0**- Bidirectional Token Sync v2 + DTCG 2025.10.`figma_import_tokens`\n\nnow applies the*complete*diff plan: missing collections and variables are created (with modes, inferred/recorded types, and values set in dependency order — aliases in a second pass), token-path renames route to the update phase by round-trip variable ID (no more create+delete pairs that would permanently destroy the original under`replace`\n\n), reference values write real`{ type: \"VARIABLE_ALIAS\", id }`\n\npayloads via a four-tier resolver, and deletes are strictly gated behind`strategy: \"replace\"`\n\n.`figma_export_tokens`\n\ngains`dtcgDialect: \"2025\"`\n\n(object-form colors from full-precision floats, object dimensions) while the legacy default stays byte-identical; import accepts both dialects unconditionally with dialect-insensitive diff normalization. Variable`scopes`\n\n+`codeSyntax`\n\nround-trip through`$extensions[\"figma-console-mcp\"]`\n\n.`figma_setup_design_tokens`\n\naccepts DTCG brace references (`\"{color.blue.600}\"`\n\n) that resolve to real aliases, including forward references. New tool`figma_create_component_set`\n\nbuilds a variant set from an axes matrix (or combines existing components) with`Prop=Value`\n\nnaming, optional auto-arranged grid, and variant keys in the response — with count-scaled timeouts and rollback on failure.**Plugin re-import required**(`code.js`\n\n+`ui.html`\n\nchanged — the component-set handler and relay). 183 tests across the token/write-tools suites. -\n**v1.33.2**- Version-handshake false-positive fix. The v1.33.0 handshake compared the plugin's reported version against the server's*package*version, so server-only releases (like the v1.33.1 dependency sweep) flagged every up-to-date plugin as stale and pushed the re-import banner for files that hadn't changed. The server now compares against the`PLUGIN_VERSION`\n\nembedded in the`figma-desktop-bridge/code.js`\n\nit ships — exactly what a re-import would install — and`PLUGIN_VERSION`\n\nitself now means \"last release in which plugin files changed\" (release tooling bumps it only when`figma-desktop-bridge/`\n\nactually changed since the last tag).`figma_get_status`\n\ngains`transport.websocket.bundledPluginVersion`\n\n;`figma_diagnose`\n\nblames the right version. No new tools,**no plugin re-import required**(one-time exception: if you re-imported at v1.33.1, the banner appears once more — clear it with one final re-import). 1245 tests passing (9 new). -\n**v1.33.1**- Security dependency sweep. All runtime and critical npm audit alerts resolved via in-range bumps (`ws`\n\n8.21.0,`hono`\n\n4.12.27,`undici`\n\n7.28.0,`handlebars`\n\n4.7.9 — the lone critical, dev-only — plus`lodash`\n\n,`path-to-regexp`\n\n,`basic-ftp`\n\n,`fast-uri`\n\n,`vite`\n\n).`wrangler`\n\ndeliberately held at 4.72.0 because newer versions require Node ≥22; the only residual audit findings are inside wrangler/miniflare's dev-time toolchain, which never ships in the npm package or Worker bundle. Supersedes dependabot PRs #81/#82/#84. No code changes, no API changes, no plugin re-import. 1236 tests passing unchanged. -\n**v1.33.0**- Connection UX overhaul + full-codebase audit. The plugin's status pill now derives from live connection state instead of Figma's variables loading (it used to glow green with zero MCP servers connected); HTTP`/health`\n\nauto-discovery reconnects restarted servers automatically (including one-dead-among-live, previously a permanent dead end); a version handshake banners the plugin UI when a re-import is needed and surfaces the mismatch in`figma_get_status`\n\n/`figma_diagnose`\n\n; cloud pairing config survives plugin reopen and its status line is derived + labeled (no more orphaned \"Disconnected\" under a green pill); all plugin copy is designer-language. The audit fixed 33 verified issues: lossless DTCG multi-mode round-trips, set-qualified cross-collection aliases, TIMING/EASING mapped to DTCG`duration`\n\n/`cubicBezier`\n\n, two cache-poisoning bugs (the \"search returns 0 components\" reports), a CSWSH origin bypass (`startsWith`\n\n→ exact match), post-sleep reaper kill-safety (plus a shell-free`/health`\n\nprobe with`os.devNull`\n\nso Windows curl can't false-negative a healthy sibling), branch-URL correctness across REST tools, and bridge-first`figma_take_screenshot`\n\n.`figma_arrange_component_set`\n\nnow rearranges variants in place so placed instances survive. No new tools;**plugin re-import required**(`code.js`\n\n+`ui.html`\n\nchanged — and the new handshake makes this the last one you have to discover on your own). 1236 tests passing (33 new). -\n**v1.32.1**- Documentation-generator fix reported by Robin Di Capua:`figma_generate_component_doc`\n\ndocumented**colors** as raw hex (with`—`\n\nin the Figma Variable column) even when fills/strokes were bound to variables, while spacing tokens documented correctly. Two root causes — an id→name lookup that read the wrong keys (`.id`\n\n/`.name`\n\ninstead of`variableId`\n\n/`variableName`\n\n), and variable names only ever being sourced from the Enterprise-only REST`/variables/local`\n\nendpoint (403 elsewhere). The generator now resolves names via the Desktop Bridge Plugin API (works on every plan) and threads them through the States, Color Tokens, and Spacing tables, so real token names like`color/content/default`\n\nand`spacing/1`\n\nappear. No new tools, no arg-shape changes, no plugin re-import required. 1203 tests passing. -\n**v1.32.0**- Accessibility-audit correctness fix reported by Isabella (a11y collaborator):`figma_lint_design`\n\nwas flagging line height below 1.5× as an accessibility failure on hundreds of components. That misreads**WCAG 1.4.12 Text Spacing**, which requires content to*support*user spacing overrides without loss — not that designs*ship*at 1.5× — so a sub-1.5 line height is not a conformance failure. Line/paragraph-spacing checks are now scoped to multi-line text (single-line labels and buttons exempt); readability hints (`text-size`\n\n,`line-height`\n\n,`letter-spacing`\n\n,`paragraph-spacing`\n\n) are decoupled from the`wcag`\n\ngroup into an opt-in`best-practice`\n\ngroup, so the default audit (`['wcag','design-system','layout']`\n\n) and`rules: ['wcag']`\n\nreturn genuine conformance only; and a new code-side`text-spacing-support`\n\nadvisory in`figma_scan_code_accessibility`\n\nflags fixed-px typography — where 1.4.12/1.4.4 are actually verifiable. No new tools, no arg-shape changes;**plugin re-import required** to pick up the new audit behavior (bridge protocol unchanged, so an un-updated plugin stays compatible). 1196 tests passing. -\n**v1.31.0**- Fixes the most-reported reliability bug: the Desktop Bridge connection dropping and staying down until you closed the plugin, restarted your MCP client, or killed ports by hand. Root cause was**zombie MCP server processes** squatting the WebSocket port range (9223–9232) after a bad shutdown. The reaper now escalates`SIGTERM`\n\n→`SIGKILL`\n\n(a hung server that ignores graceful shutdown can no longer survive), sweeps the range every 5 minutes via an`unref`\n\n'd periodic reaper, and a shutdown backstop prevents a server from zombifying in the first place. The redesigned Desktop Bridge plugin adds an auto-reconnect watchdog (re-probes every ~12s while disconnected), a context-aware**Pause / Resume / Reconnect** button, and a live server-count badge. No new tools;**plugin re-import required**(bridge`ui.html`\n\n+`code.js`\n\nchanged). 1190 tests passing, including an integration test that spawns a real`SIGTERM`\n\n-ignoring process and asserts the reaper kills it. -\n**v1.30.0**- Native variable binding + typography in the structured write tools, closing the Plugin API gaps that used to force raw`figma_execute`\n\n.`figma_set_fills`\n\n/`figma_set_strokes`\n\naccept a`variableId`\n\nto bind a fill/stroke to a color variable via`setBoundVariableForPaint`\n\n(any plan, via the bridge).`figma_set_text`\n\ngains`fontFamily`\n\n/`fontStyle`\n\nwith space-insensitive normalization (`SemiBold`\n\n→`Semi Bold`\n\n) and graceful`Regular`\n\nfallback.`figma_instantiate_component`\n\npre-loads instance text fonts before applying overrides (fixes silently-skipped text overrides on non-Regular weights) and returns a`warnings`\n\narray for failed overrides. Also fixes a mixed-font crash in`figma_set_text`\n\nand a`ui.html`\n\nrelay that was dropping new message fields. No new tools;**plugin re-import required**(bridge`ui.html`\n\n+`code.js`\n\nchanged). Validated live; 1185 tests passing. -\n**v1.29.2**- Bug fix:`figma_generate_component_doc`\n\nnow renders Figma component descriptions faithfully and reliably tags atomic-design level. Single-`#`\n\nheadings in descriptions render as real sections (Usage Guidelines, Implementation Considerations, Accessibility Requirements, Content Configuration) instead of leaking as`- # Heading`\n\nlist items; frontmatter`description`\n\ntakes the first sentence instead of truncating on the word \"Accessibility\"; the generated Figma URL no longer doubles`?node-id=`\n\n; and the component's atomic level (atom/molecule/organism/template) is auto-detected via a single`ids=<node>`\n\nfile request + divider walk-back, with no dependency on library publishing. No new tools; plugin re-import not required. -\n**v1.29.1**- Bug fix:`figma_get_design_system_kit`\n\nnow resolves variables bridge-first (Desktop Bridge / cloud relay → REST fallback) instead of calling the Enterprise-only Variables REST API directly. Non-Enterprise users no longer hit a 403 on the kit's token section when a bridge is connected, and a REST 403 now points the caller back to the bridge instead of dead-ending. 7 new tests, 1185 total passing. No new tools; plugin re-import not required. -\n**v1.29.0**- Shared library inspection: three new tools close the gap between \"I have a component key\" and \"I can actually use it.\"`figma_get_library_component_by_key`\n\nresolves any 40-char component key to full`componentPropertyDefinitions`\n\n+ variants (with their published keys) + per-variant visual specs — without needing the source library file's URL.`figma_get_library_variables`\n\nlists library tokens via Plugin API (works on every Figma plan; the REST equivalent is Enterprise-only).`figma_import_library_variable`\n\nimports a library token to the current file so it can be bound to nodes. 27 new tests, 1178 total passing. Plugin re-import optional. -\n**v1.28.1**- Bug fix patch surfacing from live-fire testing of the v1.28.0 formatters against multi-tier semantic-token design systems. Fixes: Tailwind v3 emitted empty`module.exports`\n\nfor alias-only sets (now resolves alias chains to literal values); TypeScript module + JSON flat + JSON nested formatters emitted`\"{alias.path}\"`\n\nstrings as literal values (now resolves); Tailwind v4 namespace-prefix doubling (`--color-theme-color-X`\n\nis now`--color-theme-X`\n\n). Adds`resolveAliasChain`\n\npublic helper. 1151 tests still passing. -\n**v1.28.0**- Full formatter coverage for`figma_export_tokens`\n\n. Seven new output formats: Tailwind v4`@theme inline`\n\n, Tailwind v3 config, SCSS variables, TypeScript module, JSON flat/nested, Style Dictionary v3, Tokens Studio multi-file. Combined with DTCG + CSS variables, ships**10 fully-implemented output formats** with zero third-party build-tool dependencies. Tool description updated, docs/tools.md table all-green. 22 new Jest tests, 1151 total passing. -\n**v1.27.1**- Documentation patch. No code behavior changes. Sweeps stale \"Phase 1 ships with DTCG only\" claims across tool descriptions, error messages, and internal comments after CSS variables formatter and the apply phase shipped during the v1.27.0 dev cycle. Refreshes README banner + capability bullets + roadmap. Adds`Phase 3.5: Stale-Content Audit`\n\nto the release runbook so future releases get a strict pre-publish grep sweep across banners, tool descriptions, error messages, source comments, and tool-count consistency. -\n**v1.27.0**- Bidirectional token sync:`figma_export_tokens`\n\n+`figma_import_tokens`\n\nreplace Style Dictionary and Tokens Studio's export pipeline. Canonical DTCG JSON + CSS custom properties. Diff-aware merge with round-trip ID preservation via`$extensions[\"figma-console-mcp\"]`\n\n. Apply phase pushes hex-value edits back to Figma via the plugin bridge. Verified end-to-end against 713-token + 280-token design systems. -\n**v1.26.0**- Internal cleanup + cross-MCP identity: Local-mode CDP/Puppeteer transport removed entirely (WebSocket-only).`figma_diagnose`\n\ntool for designer-readable health checks. Every response tagged`_mcp: \"figma-console-mcp\"`\n\n; errors prefixed`[figma-console-mcp]`\n\nso attribution is unambiguous when running multiple Figma MCPs. Plugin status pill now reads`Local · ready`\n\n/`Cloud · ready`\n\n/`Local + Cloud · ready`\n\n. Net diff: −7,299 lines, plugin re-import optional. -\n**v1.25.0**- Description + Dev Mode annotation tracking in`figma_diff_versions`\n\nvia plugin session buffer. Description and annotation edits made during a session now appear in diff output (REST API doesn't return these — bridged through the plugin's`documentchange`\n\nlistener). -\n**v1.24.0**- Honest scope coverage on version diffs.`scope_coverage`\n\nobject surfaces what`figma_diff_versions`\n\ndoes and doesn't track; always-on coverage warnings prevent silent invisibility on token-value changes and component-instance placements. -\n**v1.23.0**- Version History & Time-Series Awareness: 6 new tools (list versions, snapshot any past version, diff two versions for component/binding deltas, generate markdown changelogs, trace property/variant introduction via binary-search blame walker). Author attribution flows from autosaves, not just labeled releases. -\n**v1.17.0**- Figma Slides support: 15 tools for managing presentations. -\n**v1.16.0**- FigJam support: 9 tools for creating and reading FigJam boards. -\n**v1.12.0**- Cloud Write Relay: web AI clients can create and modify Figma designs without Node.js. -\n**v1.11.0**- Complete CDP removal, improved multi-file active tracking with focus detection. -\n**v1.10.0**- Multi-instance support (dynamic port fallback 9223–9232, multi-connection plugin, instance discovery). -\n**v1.9.0**- Figma Comments tools, improved port conflict detection. -\n**v1.8.0**- WebSocket Bridge transport (CDP-free connectivity), real-time selection/document tracking. -\n**v1.7.0**- MCP Apps (Token Browser, Design System Dashboard), batch variable operations, design-code parity tools.\n\n**Coming Next:**\n\n-\n**Token sync — non-DTCG input parsers**- Parsers for non-DTCG input (Tokens Studio, CSS vars, Tailwind v4, Tailwind v3 config, SCSS, Style Dictionary v3, JSON flat/nested) so`figma_import_tokens`\n\ncan ingest the same formats it exports. (The import-side apply expansion — creates, replace-gated deletes, alias-target updates — shipped in v1.34.0.) -\n**Cross-library variable resolution**- Resolve cross-library aliases via`getVariableByIdAsync`\n\nso they render as real`var(--target)`\n\nreferences in exports instead of comments. -\n**Component template library**- Common UI pattern generation -\n**Visual regression testing**- Screenshot diff capabilities\n\n```\ngit clone https://github.com/southleft/figma-console-mcp.git\ncd figma-console-mcp\nnpm install\n\n# Local mode development\nnpm run dev:local\n\n# Cloud mode development\nnpm run dev\n\n# Build\nnpm run build\n```\n\nMIT - See [LICENSE](/southleft/figma-console-mcp/blob/main/LICENSE) file for details.\n\n- 📚\n— Complete guides, tutorials, and API reference[Documentation Site](https://docs.figma-console-mcp.southleft.com) - 📖\n[Local Docs](/southleft/figma-console-mcp/blob/main/docs)— Documentation source files - 🐛\n[Report Issues](https://github.com/southleft/figma-console-mcp/issues) - 💬\n[Discussions](https://github.com/southleft/figma-console-mcp/discussions) - 🌐\n[Model Context Protocol](https://modelcontextprotocol.io/) - 🎨\n[Figma API](https://www.figma.com/developers/api)", "url": "https://wpnews.pro/news/figma-console-mcp", "canonical_source": "https://github.com/southleft/figma-console-mcp", "published_at": "2026-07-21 08:08:16+00:00", "updated_at": "2026-07-21 08:23:15.248849+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["Figma", "Figma Console MCP", "Claude", "Model Context Protocol", "Tokens Studio", "Style Dictionary", "Node.js", "Desktop Bridge"], "alternates": {"html": "https://wpnews.pro/news/figma-console-mcp", "markdown": "https://wpnews.pro/news/figma-console-mcp.md", "text": "https://wpnews.pro/news/figma-console-mcp.txt", "jsonld": "https://wpnews.pro/news/figma-console-mcp.jsonld"}}