figma-to-react-mcp
Converts a Figma file into a React project using Ant Design, AG Grid, ApexCharts, and Tailwind CSS, with optional export of mobile screens as a React Native (Expo) app.
README
figma-to-react-mcp
An MCP server that helps Claude (or any MCP client) turn a whole Figma file into a React project using Ant Design v5, AG Grid (for all tables), ApexCharts (for all charts), and Tailwind CSS (for layout/styling) — and optionally export the mobile-only screens as a React Native (Expo) app.
Whole-file conversion:
convert_figma_to_reactnow takes a whole Figma file and generates one page per top-level screen across every page/canvas — not one frame at a time. When it finds mobile-only screens (width ≤ 480px) it asks whether to also export them as a React Native app.
It does the heavy lifting the model can't do well on its own:
- pulls the design from the Figma API and simplifies the giant node tree into a compact, token-efficient structure — collapsing repeated rows/cards, pruning pass-through wrappers, truncating large tables to a few sample rows, and stripping chart nodes down to their text (legend/axis labels) since the plotted vectors are useless to the model,
- returns that tree as a compact outline (~half the tokens of pretty JSON) instead of a giant JSON dump,
- attaches a semantic role and suggested Tailwind classes to each node,
- generates ready-to-use
.tsx— antd components by role, Tailwind for layout, AG Grid (withcolumnDefsderived from table headers) for tables, ApexCharts (<ReactApexChart>with the chart type guessed from the layer name and labels/categories lifted from the design's text) for charts, repeated rows expanded to.map(), - scaffolds and writes a whole Vite project to disk (package.json, tailwind config, CSS vars, antd
ConfigProvidertheme, a shared ApexCharts palette from the design's colors) so boilerplate never enters the model's context, - extracts design tokens, exports icons/images,
- ships a conversion guide (as a tool, prompt, and resource) so generated code follows the antd + AG Grid + ApexCharts + Tailwind conventions consistently.
Tools
| Tool | What it does |
|---|---|
convert_figma_to_react |
Whole file, one-shot. Fetch → tokens → enumerate every screen across all pages → scaffold project → generate one page per screen, all written to outDir. Detects mobile-only screens (≤480px) and asks whether to also export them as a React Native (Expo) app (written to <outDir>-mobile). Returns a short summary only. |
get_figma_design |
Fetch a file/frame → compact outline (or minified JSON) with roles + Tailwind hints, repeats collapsed. Call first for manual flows. |
scaffold_react_project |
Generate the full Vite + antd + AG Grid + ApexCharts + Tailwind skeleton with tokens wired in, written to disk. |
generate_component |
Turn one frame into a ready-to-use .tsx (antd + Tailwind + AG Grid + ApexCharts). Writes to disk or returns the code. |
extract_design_tokens |
Colors, type, spacing, radii, shadows → tailwind config + CSS vars + antd theme. |
download_figma_images |
Render node ids to svg/png/jpg URLs; optionally save to disk. |
get_conversion_guide |
The mapping rules (also a prompt figma_to_react and resource guide://figma-to-react). |
Why this uses fewer tokens
- The design comes back as an indented outline with repeated siblings collapsed (
x40) and big tables truncated to a header + a few sample rows — not the full node tree as pretty JSON. - Generated code and project boilerplate are written to disk, so they never pass through the model's context.
convert_figma_to_reactreturns only a summary (files written, primary color). - The model's job shrinks from writing every component from a huge tree to refining a working scaffold.
Setup
- Get a Figma token: figma.com → Settings → Personal access tokens. Copy
.env.exampleto.envand paste it in (or pass it via the client config below). - Install & build:
npm install npm run build - Point your MCP client at it (examples below), using an absolute path to
dist/index.js.
Claude Desktop / Cursor (mcpServers JSON)
{
"mcpServers": {
"figma-to-react": {
"command": "node",
"args": ["/ABSOLUTE/PATH/figma-to-react-mcp/dist/index.js"],
"env": { "FIGMA_ACCESS_TOKEN": "figd_your_token_here" }
}
}
}
Claude Code (CLI)
claude mcp add figma-to-react \
--env FIGMA_ACCESS_TOKEN=figd_your_token_here \
-- node /ABSOLUTE/PATH/figma-to-react-mcp/dist/index.js
Restart the client, then try: "Use figma_to_react on <your Figma frame URL>."
Typical flow the model follows
Fast path (server does the lifting):
convert_figma_to_reactwith{ figmaUrl, outDir }(pass a whole file URL or bare file key) → fetches, tokenizes, enumerates every top-level screen, scaffolds the project, and generates one page per screen to disk. Returns a short summary.- If the file has mobile-only screens (≤480px), the tool asks whether to also export them as an Expo React Native app. Clients that support MCP elicitation show this prompt inline; otherwise pass
exportMobileToReactNative: true(orfalse) explicitly. The Expo app is written to<outDir>-mobile(override withreactNativeOutDir). download_figma_images→ pull any icons/images.- Open the generated files and refine: wire real data into AG Grid
rowDataand ApexChartsseries, fix any roles the heuristics missed, snap arbitrary Tailwind values (p-[16px]) to the token scale (p-4).
Tune mobile detection with mobileMaxWidth (default 480). The web project builds the desktop screens; if the file is entirely mobile it builds all of them so the web app isn't empty.
Finer control:
get_conversion_guide→ learn the rules.get_figma_design→ compact outline of the design.scaffold_react_project→ project skeleton + tokens on disk.generate_componentper frame →.tsxscaffolds.download_figma_images→ icons/images.
Either way: every table becomes AG Grid, every chart becomes ApexCharts (typed ApexOptions, palette from src/charts/chart-theme.ts), everything else maps to antd where a role matches, Tailwind handles layout.
Notes & limitations
- Uses Figma's REST API (read-only). It reads designs; it never edits them.
- Tailwind suggestions use arbitrary values (
p-[16px]); after tokens exist, snap them to scale (p-4). The guide tells the model to do this. colorPrimaryin the antd theme is a best-effort guess (most vivid non-neutral color) — sanity-check it.- For huge files, pass
depthtoget_figma_design/extract_design_tokensto keep responses small, or target a specific frame with?node-id=in the URL. - Alternative: Figma's official Dev Mode MCP exposes design context too; this server differs by simplifying output and encoding the antd/AG Grid/Tailwind conventions specifically.
Dev
npm run dev # run from source with tsx
npm run build # compile to dist/
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.