@echobt/figma-mcp
Provides tools for parsing, analyzing, and exporting assets from local .fig files, including page listing, node details, text extraction, color extraction, image and vector export, and design spec generation, enabling AI agents to work with Figma design data offline without API access.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@echobt/figma-mcp list pages in /path/to/design.fig"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@echobt/figma-mcp
Complete fork of bilalba/fig-mcp — local MCP server for reading and rendering .fig files offline (no Figma API, no PAT, no rate limits).
Maintained at echobt/figma-mcp.
Why this fork
Upstream is a solid fig-kiwi parser + experimental SVG renderer. This fork hardens it for agent design-to-code workflows on large local archives (hundreds of MB, 100k+ nodes):
Area | Improvement |
File reading | Lazy ZIP |
Screenshots |
|
Agent assets |
|
Images |
|
INSTANCE | Expand symbol children even when overrides are empty (was incorrectly skipped) |
Typography | Letter-spacing units ( |
Tests | node:test suite + TAOSCAN smoke harness |
Verified against a large real file (TAOSCAN - Mockups.fig, ~391MB, 23 pages, ~229k nodes, 1219 images).
Related MCP server: FreeMCP for Figma
Install
npm install -g @echobt/figma-mcp
# or
npx @echobt/figma-mcp --helpBinaries (identical): figma-mcp, fig-mcp.
Quick start (Claude / Cursor / OpenCode)
# Claude Code
claude mcp add figma-mcp -- npx @echobt/figma-mcp
# Or pin a local path
claude mcp add figma-mcp -- node /path/to/figma-mcp/dist/index.jsExample prompts:
Parse
/path/to/design.fig, list pages, then export a design spec for the Home frame and take a pixelPerfect screenshot to/tmp/home.png.
CLI
Command | Description |
| Start MCP server (stdio) + optional image HTTP sidecar |
| Web viewer (default port 3000) |
|
|
| Help / version |
MCP tools
Document structure
Tool | Description |
| Simplified document tree |
| Paginated text tree |
| Hierarchical drill-down |
| All canvases |
| Contents of one page |
Nodes
Tool | Description |
| By type or name |
| By path |
| By GUID |
| Inferred flex-like layout |
Content
Tool | Description |
| Extract text |
| Unique solid colors |
| Nodes with fills |
Images & rendering
Tool | Description |
| Image inventory (lazy metadata) |
| MCP image content + JSON meta; optional |
| Document thumbnail as MCP image |
| PNG of node; default |
| Export real geometry SVG/PDF/PNG — prefer |
Agent copy (fork)
Tool | Description |
| Read first. Full rules + UCs ( |
| Primary implement tool. Writes |
| CSS + layout + tokens + tree + text for a node (JSON, optional |
| Write real images + true-geometry SVG + PNG for one node to a directory |
Debug
Tool | Description |
| Kiwi schema meta |
| Raw decoded message (truncated) |
| ZIP entries |
| Drop parsed cache + inflated image LRU |
Agent guide (required reading)
Canonical rules + use cases: MCP_GUIDE.md, or call get_mcp_guide / read resource figma-mcp://guide.
Server initialize also sends short instructions pointing agents at that guide.
Agent workflow (recommended)
Golden rule: never invent SVG d paths or re-draw icons. Always use exported files.
get_mcp_guide— hard rules + UC catalog (once per session)list_pages/get_tree_summary— map the filefind_nodesorget_node_by_id— pick a frame (session:local)export_asset_packwithoutputDir— dumps real assets +AGENTS.mdpolicyRead
MANIFEST.jsonand opennodes/*/node.svg,vectors/*.svg,images/*export_design_specfor exact text/CSS tokensImplement with HTML/CSS + file references (img/src or copied SVG files)
Optional
render_screenwithtrueGeometry: true(default) +outputPathfor visual QA
get_vector also exports real baked geometry — prefer outputPath and open the file.
Node IDs look like 3779:22748 (from the web viewer or any tool that returns id / nodeId).
How it works
.figfiles are ZIP archives (canvas.figfig-kiwi binary,meta.json,thumbnail.png,images/).Schema embedded in each file is decoded with kiwi.
Flat
nodeChangesare rebuilt into a tree.Images stay in the archive until requested (
ImageStore).Subtrees render to SVG → PNG via
@resvg/resvg-js.
Develop
npm install
npm run build
npm test
FIG_MCP_TAOSCAN="/path/to/file.fig" npm run smoke:taoscanSmoke writes evidence under /tmp/opencode/fig-mcp-work/qa-out/ when available.
Requirements
Node.js 18+
Limitations
.figformat is undocumented and may changeLocal files only (use official Figma MCP for cloud files)
Vector export uses Figma baked
fillGeometry/strokeGeometry(true path data from the file). Screenshots use that SVG via resvg — not hand-approximated icons. Complex blend modes / full BOOLEAN merge may still be incomplete.Agents must use
export_asset_packfiles, not recreated path strings.Very large files still keep the ZIP buffer in memory (images are lazy; canvas decode can still be multi‑GB on enormous docs)
License
MIT — see LICENSE.
Upstream credit: bilalba/fig-mcp by bilal; kiwi by Evan Wallace; MCP TypeScript SDK.
Available Tools
26 toolsclear_cacheB
Clear the file cache. Useful if the .fig file has been modified.
Inputs: filePath.
export_asset_packA
THE agent packaging tool. Writes a directory with MANIFEST.json, AGENTS.md (MUST NOT invent SVG paths), images/{hash}.ext real binaries, vectors/* true-geometry SVGs, nodes/{id}/node.svg+node.png+design-spec.json. Returns manifest summary + absolute outputDir + policy banner. Never dumps full images as base64. Agents must read/copy files from the pack.
Inputs: filePath (required), outputDir (required), nodeId, maxDepth, +5 more.
export_design_specB
Export a condensed design spec for a node: bounds, css, tokens, layout, tree, and text content.
Inputs: nodeId (required), filePath (required), maxDepth.
export_node_assetsA
Export REAL assets for one node: image binaries from the .fig store, true-geometry node.svg (baked fillGeometry/strokeGeometry), and node.png. Returns list of written absolute paths only — open those files; never invent SVG paths.
Inputs: nodeId (required), filePath (required), outputDir (required), writePng, +1 more.
find_nodesA
Find nodes in the document by type or name. Useful for locating specific components, frames, or text elements.
Inputs: filePath (required), name, type.
get_colorsA
Extract all unique colors used in the document, including fills and strokes.
Inputs: filePath (required).
get_document_summaryA
Get a text summary of the document structure showing node types, names, and dimensions in a tree format. Supports pagination to handle large documents.
Inputs: filePath (required), offset, maxNodes.
get_imageA
Get a specific image from the .fig file as a resource. Use the hash from list_images.
Inputs: filePath (required), imageHash (required), outputPath.
get_layout_infoA
Get layout and spacing information for a node. Returns inferred flexbox-like properties including direction, gap, padding, and alignment.
Inputs: filePath (required), nodePath (required).
get_mcp_guideA
MANDATORY first read for agents. Returns the full MCP_GUIDE (hard rules, use cases UC-01..UC-15, tool matrix, anti-patterns, pack layout, ID formats). Call once per session before implementing UI from a .fig. No filePath required. Equivalent resource: figma-mcp://guide.
Inputs: section.
get_node_by_idB
Get detailed information about a specific node by its GUID. Node ID format: 'sessionID:localID' (e.g., '457:1607'). Hyphen format also accepted.
Inputs: nodeId (required), filePath (required), compact, maxDepth, +5 more.
get_node_detailsB
Get detailed information about a specific node by its path in the document tree. Use format like 'Page 1/Frame Name/Child Name'.
Inputs: filePath (required), nodePath (required), compact, maxDepth, +5 more.
get_page_contentsB
Get the contents of a specific page, including all top-level frames and their immediate children.
Inputs: filePath (required), pageName (required).
get_raw_messageA
Get the raw decoded message from the .fig file. Warning: can be very large. Use for debugging only.
Inputs: filePath (required), maxSize.
get_schema_infoB
Get the kiwi schema information from the .fig file. Useful for debugging and understanding the file format.
Inputs: filePath (required).
get_text_contentC
Extract all text content from the document or a specific node path.
Inputs: filePath (required), nodePath.
get_thumbnailB
Get the document thumbnail image as a resource.
Inputs: filePath (required), outputPath.
get_tree_summaryA
Get hierarchical summary with child counts for drill-down navigation. Returns high-level structure without full node details.
Inputs: filePath (required), depth, nodePath.
get_vectorA
Exports REAL geometry from the .fig blob (fillGeometry/strokeGeometry commandsBlob). Agents must OPEN the resulting file — do not recreate paths. Prefer outputPath. For multi-asset work use export_asset_pack. When format=svg without outputPath, SVG text is returned but you should still save/open it rather than rewriting d attributes.
Inputs: format (required), nodeId (required), filePath (required), width, +3 more.
list_archive_contentsB
List all files contained in the .fig archive.
Inputs: filePath (required).
list_imagesA
List all images in the .fig file with their metadata. Returns image hashes, dimensions, and which nodes reference them.
Inputs: filePath (required).
list_nodes_with_fillsB
List nodes that have fill paints, with summary of paint types and optional image references.
Inputs: filePath (required), maxResults, includeImageRefs.
list_pagesB
List all pages (canvases) in the .fig file.
Inputs: filePath (required).
parse_fig_fileC
Parse a .fig file and return its document structure. Returns a simplified representation suitable for understanding the design hierarchy, layout, and styling.
Inputs: filePath (required), maxDepth.
render_screenA
Screenshot ground truth of a node subtree. Prefer options.outputPath and OPEN the PNG on disk — do not redraw. Default trueGeometry=true uses baked Figma path geometry (fillGeometry/strokeGeometry) then resvg. Export packs via export_asset_pack for agent-safe files.
Inputs: nodeId (required), filePath (required), options.
save_node_assetsA
Write REAL image binaries + true-geometry SVG + PNG for a node to outputDir. Returns written paths only. Prefer export_asset_pack for full agent packs with AGENTS.md policy.
Inputs: nodeId (required), filePath (required), outputDir (required), writePng.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 26 tools
Many tools have overlapping purposes, such as multiple export functions (export_design_spec, save_node_assets, export_node_assets, export_asset_pack, get_vector, render_screen) and several for node retrieval (get_node_details, get_node_by_id, find_nodes). Descriptions try to differentiate but the similarity causes ambiguity.
All tool names use snake_case and start with a verb, providing a coherent pattern. However, the verb choice varies (export, save, get, parse, find, list, render) without a strict hierarchical convention, making it slightly less predictable.
26 tools is high for a single-domain server. While the domain (Figma file analysis) is broad, many tools could be consolidated (e.g., merging export functions). The count feels slightly excessive and may overwhelm agents.
The tool set comprehensively covers Figma file parsing, node navigation, asset export, image extraction, color and text analysis, and schema info. No obvious gaps for the intended purpose of reading and extracting design data.
Maintenance
Related MCP Connectors
Deterministic Figma to Elementor, Gutenberg, Oxygen, Etch and HTML layouts for AI assistants.
PDF and image tools for AI agents: compress, merge, split, OCR, sign. Runs locally, never uploads.
Give your AI agents a design superpower. Generate, edit, and publish publication-grade decks, reports, landing pages, resumes, and marketing visuals directly within your agent workflow. Delivering frontier-level design quality at 3× the speed and 53× lower cost -from conversational prompt to live link or vector PDF in minutes.
Convert PDF pages into editable Word-ready text from your AI chat, all offline.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI agents to read, inspect, and export Figma designs programmatically. Provides tools for listing components, styles, and exporting assets in various formats.51-
- AlicenseNot gradedqualityDmaintenanceEnables AI coding agents to read and write a user's Figma file through the Figma Plugin API, offline and privately, without API tokens or rate limits.78 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to extract, inspect, search, and bundle design context from local Figma .fig files entirely offline, exposing frame summaries, node context, style tokens, assets, vector SVGs, and visual-match review via MCP.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to read and inspect local Figma .fig files entirely offline, exposing document structure, geometry, styles, text, components, variables, and embedded images via MCP tools.12100 npm3MIT