@devheerim/figma-mcp
v1.0.7
Published
Enhanced Figma MCP Server with prototype flow analysis — exposes screen lists, prototype connections, and full flow maps via Figma REST API
Maintainers
Readme
@devheerim/figma-mcp
English | 한국어
Enhanced Figma MCP Server that exposes prototype flow data — screen lists, prototype connections, and full flow maps — via the Figma REST API.
Designed as a complete replacement for the official https://mcp.figma.com/mcp, adding the missing prototype interaction layer so Claude Code can understand entire user flows from a single Figma URL.
Features
| Tool | Description |
|------|-------------|
| get_section_frames | List all frame screens inside a Figma section node |
| get_prototype_connections | Get prototype interactions (trigger + destination) for a node |
| get_flow_map | Build a directed graph of all prototype flows within a section |
| get_design_context | Full design context: XML structure, screenshot, variables, styles |
| get_metadata | Node structure as XML |
| get_screenshot | Base64 PNG screenshot of a node |
| get_variable_defs | Variable definitions (Enterprise) or bound variable references (fallback) |
Requirements
- Node.js 18+
- Figma API key (get one here)
Setup
1. Set your API key
export FIGMA_API_KEY=your_figma_api_key_here2. Register in .mcp.json
Add to your project's .mcp.json (or ~/.claude/mcp.json):
{
"mcpServers": {
"figma": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@devheerim/figma-mcp"],
"env": {
"FIGMA_API_KEY": "${FIGMA_API_KEY}"
}
}
}
}Usage
Get all screens in a section
get_section_frames(fileKey: "abc123", sectionNodeId: "24626:100")Returns a list of frame nodes directly inside the section.
Get prototype connections from a screen
get_prototype_connections(fileKey: "abc123", nodeId: "24626:6637")Returns connections like:
{
"connections": [
{
"trigger": "ON_CLICK",
"action": "NAVIGATE",
"destinationId": "24626:6654",
"destinationName": "Next Screen"
}
]
}Get the full flow map of a section
get_flow_map(fileKey: "abc123", nodeId: "24626:100")Returns a directed graph:
{
"nodes": [{ "id": "24626:6637", "name": "Home" }, ...],
"edges": [{ "from": "24626:6637", "to": "24626:6654", "trigger": "ON_CLICK", "action": "NAVIGATE" }],
"entryPoints": ["24626:6637"]
}Figma URL → IDs
Given a URL like:
https://www.figma.com/design/AbCdEfGhIjKl/MyApp?node-id=24626-100fileKey=AbCdEfGhIjKlnodeId=24626:100(replace-with:)
How to find IDs in Figma
- Open your Figma file
- Right-click a section or frame → Copy link
- Extract
node-idfrom the URL and replace-with:
Rate limits
Figma API rate limits are handled automatically:
- Nodes API: 30 req/min
- Images API: 10 req/min
- Exponential backoff with
Retry-Afterheader support (capped at 60s)
Variables API
The get_variable_defs tool requires a Figma Enterprise plan for full variable resolution. On non-Enterprise plans, it automatically falls back to returning boundVariables references from the node data.
Development
git clone https://github.com/devheerim/figma-mcp
cd figma-mcp
npm install
npm run build
npm testLicense
MIT
