Repository navigation
Releases
v1.8.2
Improved
- Coverage says when the code draws a control as a plain element: a button, tab row or field the design has but the code renders as a div, which keyboard and screen-reader users cannot use.
- Coverage reads like a review: controls are named by their text when layer names are generic, repeated controls are grouped ("Add ×4"), section headers are no longer listed as controls, and a selection the design draws counts as checked.
Fixed
- A focus indicator turned off with
outline-nonewas reported as visible; the check now compares only what shows. - The keyboard check walks past scrolling areas Chrome makes focusable, so controls after a scrolling row are checked.
- Hostile handlers no longer break the keyboard check: dialogs are dismissed, navigation away is blocked, controls that vanish are skipped, and a handler that hangs is reported on its control while the rest of the results stand.
- A key handler on a
divwithrole=buttoncounts as activating it, and long pages say when the Tab walk stopped at 120 stops. - SwiftUI: a button whose tap does nothing is listed as not working rather than checked, and a Dynamic Type run explains why its pixels differ from the design.
Install
npx -y @irshad.io/figma-local-mcp@latest setupnpm: https://www.npmjs.com/package/@irshad.io/figma-local-mcp/v/1.8.2
v1.8.1
Includes 1.8.0, which was tagged but not published to npm.
New
verify_codesays what it did not check: every result has a coverage block listing, for each button, field, toggle or tab row, the states (pressed, disabled, focus, loading, error), keyboard and screen-reader behaviour no check covered, plus dark mode, other widths and text sizes, and right-to-left.- Coverage tells states the design draws apart from states it never drew: a Disabled variant that exists but was not rendered, or a loading state missing from the design for the designer to add.
- React and HTML checks press Tab through the page: the Tab order, controls without a visible focus indicator, buttons Enter or Space does not activate, controls without an accessible name, and clickable elements the keyboard cannot reach.
Improved
- Agents are told to hand the not-verified list back with the implementation, so a reviewer knows what is left to check.
- The plugin exports every variant a component offers; reload it to get the design states in the coverage list.
Fixed
- Security updates: the MCP SDK (^1.32.2), zod (^4.6.7), body-parser, qs, fast-uri and ip-address move to patched versions, and the package now requires them, so installs cannot pick a vulnerable release.
Install
npx -y @irshad.io/figma-local-mcp@latest setupnpm: https://www.npmjs.com/package/@irshad.io/figma-local-mcp/v/1.8.1
v1.7.0
New
- SwiftUI output: projects with a
Package.swift,.xcodeprojor.xcworkspaceget SwiftUI views built the way a production screen is: press-style Buttons, selection with a sliding indicator, snapping carousels,LazyVGrid, pinned bars, Toggles, ProgressViews, calendars and loading placeholders. - SwiftUI: fonts are named by PostScript face and scale with Dynamic Type, text keeps Figma's line boxes, and the design's variables become
DesignTokensin a sharedDesignSystem.swift. - SwiftUI: images go into the project's asset catalog as image sets, and a Structure block names what each part is, how sure the detection is and the pattern the code uses.
verify_codechecks SwiftUI: the generated code, or a view of your project, compiled and rendered in the iOS simulator and compared with Figma's render. It can tap every button and render at other Dynamic Type sizes.
Improved
- The plugin exports layers clipped out of their frame, so frames that hide part of their content convert faithfully.
Install
npx -y @irshad.io/figma-local-mcp@latest setupnpm: https://www.npmjs.com/package/@irshad.io/figma-local-mcp/v/1.7.0
v1.6.0
New
- React + Tailwind output for production: semantic markup (buttons, links, nav, headings), theme classes where they equal the design, design variables declared as CSS, Figma text styles as named class lists, and repeated items as data with
.map(). - HTML + Tailwind output: the same markup as a static fragment for sites without React.
- Desktop frames become web pages: bars and footers span the screen and the content stays in a centred column.
page: falsekeeps the fixed artboard. verify_codechecks React and HTML: the generated code, or a component or page of your project, rendered and compared with Figma's render layer by layer.- Every tool has a title and annotations; the server has metadata, icons and ready-made prompts.
Improved
- React: assets go to your project's public folder with a short content hash, so frames never overwrite each other's images.
- React: fonts keep the axes Figma sets (optical size), and text keeps Figma's line boxes, wrapping and baselines.
Fixed
- React: a paint bound to a colour variable uses the variable's value, so a stale stored colour no longer turns a page black.
Install
npx -y @irshad.io/figma-local-mcp@latest setupnpm: https://www.npmjs.com/package/@irshad.io/figma-local-mcp/v/1.6.0
v1.5.2
Improved
- Clearer descriptions for
remove_code_connect_map,get_variable_defsandimport_design_export: what each one changes, when to use it, and what happens without the plugin.
Install
npx -y @irshad.io/figma-local-mcp@latest setupnpm: https://www.npmjs.com/package/@irshad.io/figma-local-mcp/v/1.5.2
v1.5.0
figmcp can now check its own Flutter code against the design, reuse your design system, and write screenutil code.
New
verify_coderenders Flutter code withflutter testand compares it with Figma's render. It reports analyzer and runtime errors, differing pixels and a diff image. Name a widget's file and it checks the widget inside your own app; addviewportto try another screen size.search_design_systemlists the components (with their properties and variants), styles and variables of the open file, so new designs reuse them.place_imageputs PNG, JPG, GIF and SVG files from your computer into the open file.- Flutter: projects that use flutter_screenutil get
.w,.h,.rand.splengths. - Flutter: Figma text styles become named
AppTextStyles.
Improved
- Flutter: inner shadows and blend modes are drawn.
- Faster reads. Images the server already has, and images of hidden layers, are not sent again, and large nodes stop reading early.
- A link to the website in the plugin panel.
Fixed
- Flutter: text no longer takes the letter spacing of the app's theme.
- Flutter: padding no longer shrinks image fills.
- A malformed request or plugin message no longer stops the server, and requests must come from this machine.
save_design_exportno longer replaces JSON files that are not design exports.- Setup works on Windows when paths contain spaces.
Update
npx -y @irshad.io/figma-local-mcp@latest setupThen restart your coding agent and run the plugin again. No need to import the plugin again.
v1.4.2
figmcp is now listed in the official MCP Registry as io.github.irshadio/figmcp, so MCP clients that browse the registry can find and install it.
Update
npx -y @irshad.io/figma-local-mcp@latest setupv1.4.1: figmcp
figmcp can now design in Figma, and has a new name.
New
- Design in Figma:
use_figmaruns Figma plugin API scripts to create and edit frames in the open file, one undo step per script. - Website and docs: https://figmcp.web.app, with macOS and Windows setup for Claude Code, Cursor and Claude Desktop.
Improved
- New name: figmcp. The plugin shows as figmcp in Figma. The npm package and setup command stay the same.
- Redesigned plugin panel with a status card and live indicator.
- Designs can load images from the web.
- The server reports its real version to MCP clients.
Update
npx -y @irshad.io/figma-local-mcp@latest setupThen restart your coding agent and run the plugin again. No need to import the plugin again.