Figma to React code converter via compact DSL. Available as an MCP server and CLI.
Converts Figma design JSON into React components using a hybrid approach (programmatic + LLM). A custom DSL intermediate representation achieves 96.6% token reduction compared to raw Figma JSON.
claude mcp add loom --scope user -- npx @keisuke-na/loom-mcpOr manually add to your MCP config (.mcp.json for per-project, ~/.claude/settings.json for global):
{
"mcpServers": {
"loom": {
"command": "npx",
"args": ["@keisuke-na/loom-mcp"]
}
}
}Requires FIGMA_PERSONAL_ACCESS_TOKEN environment variable.
| Tool | Description |
|---|---|
generate-dsl |
Convert a Figma component URL to compact DSL |
generate-react |
Convert annotated semantic DSL to React components |
list-components |
List cached component names |
get-component |
Retrieve a specific component's code |
generate-dslwith a Figma URL — returns DSL body- LLM annotates the DSL with
.as(),.tag(),.repeat() generate-reactwith annotated DSL — generates and caches React componentsget-componentto retrieve individual components as needed
# React code generation
npx @keisuke-na/loom-mcp <input.json> [--file-key=FILE_KEY]
# DSL generation
npx @keisuke-na/loom-mcp <input.json> --format=dsl
# DSL body only (for LLM input)
npx @keisuke-na/loom-mcp <input.json> --format=dsl --body-only
# Semantic DSL to React
npx @keisuke-na/loom-mcp <semantic.dsl> --format=semantic-react --vars=<vars.dsl>Figma REST API (JSON)
|
[Stage 1] JSON -> pixel-perfect React code
[Stage 1.5] JSON -> compact DSL (96.6% token reduction)
[Stage 2] LLM annotates DSL with .as, .tag, .repeat
[Stage 2.5] Semantic DSL + variables -> componentized React code
MIT