Skip to main content
Glama
figma-mcp
by Henry-Hong

@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)

Related MCP server: genable-mcp

Requirements

Setup

1. Set your API key

export FIGMA_API_KEY=your_figma_api_key_here

2. 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-100
  • fileKey = AbCdEfGhIjKl

  • nodeId = 24626:100 (replace - with :)

How to find IDs in Figma

  1. Open your Figma file

  2. Right-click a section or frame → Copy link

  3. Extract node-id from 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-After header 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 test

License

MIT

Available Tools

7 tools
get_design_contextC

Get design context including styles, components, and layout for a node

Inputs: nodeId (required), fileKey (required).

get_flow_mapC

Get a map of prototype flows within a file or section

Inputs: nodeId (required), fileKey (required).

get_metadataC

Get metadata for a Figma node

Inputs: nodeId (required), fileKey (required).

get_prototype_connectionsC

Get prototype interaction connections for a node

Inputs: nodeId (required), fileKey (required).

get_screenshotB

Get a screenshot (image export) of a Figma node

Inputs: nodeId (required), fileKey (required).

get_section_framesA

Get a hierarchical tree of sections and frames within a section node. Nested sections are returned as children, making it easy to understand the structure for scoping work (e.g. splitting PRs by section).

Inputs: fileKey (required), sectionNodeId (required), depth.

get_variable_defsC

Get variable definitions from a Figma file

Inputs: fileKey (required), nodeId.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 7 tools

    Disambiguation4/5

    Each tool addresses a recognizable retrieval need—structure, metadata, design styles, screenshots, variables, and prototype flows—so misselection is unlikely. The main fuzziness is between get_metadata and get_design_context, but their descriptions separate generic node metadata from design-specific context.

    Naming Consistency5/5

    All seven tools use the exact get_<resource> snake_case convention with no verb changes or mixed styles. This makes the API surface highly predictable.

    Tool Count5/5

    Seven focused read-only retrieval tools is well within the ideal range for a Figma context server. Each tool covers a distinct aspect of design exploration without redundancy or bloat.

    Completeness4/5

    The set covers structure, node metadata, design context, screenshots, variables, and prototype flows, which covers the core read/analysis workflows. It does not include mutation or collaboration features, but the get_* surface appears intentionally scoped rather than incomplete.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Write-side MCP server for Figma — build, edit, and search Figma designs from Claude Code, Cursor, Cline, or any MCP client. Complements Figma's official read-only MCP with 41 tools for tree creation, variables, components, and visual verification.
      41
      3
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Read-only Figma MCP server that enables design-to-code workflows by talking to the Figma REST API with a personal access token, for use with Claude Code and GitHub Copilot.
      2,341 npm
      MIT