Skip to main content
Glama
LeoGCode

figma-reader-mcp

by LeoGCode

figma_get_node

Read-only

Retrieve detailed design data for a Figma node and its subtree, including geometry, styles, variables, text, components, and Dev Mode annotations for AI analysis.

Instructions

Detailed design data for a node and its subtree: geometry, fills/strokes/effects (hex), auto-layout, text styling and runs, component/instance info, bound variables and style names. Instances are not expanded (see mainComponentId). Dev Mode's handoff data where a node has it: devStatus as figma_dev_status describes it, annotations (label as markdown, category, the properties pinned) and measurements (from/to node ids and sides; the distance itself is not stored). devStatus is absent on a node never marked: a record that is none and was none, with no user or note on it, is one Figma keeps on components nobody marked, and only figma_dev_status with status none or any lists it. Where path does not split on ' / ' into its names, pathIds follows it: one id per name, page first. Dated by exportedAt and account, or fileModifiedAt for a file read from disk, as the server's instructions say (figma-reader help on the command line).

Input Schema

NameRequiredDescriptionDefault
fileYesA local .fig path, a Figma file key or a figma.com/design/... URL (see the server's instructions, or figma-reader help)
depthNoChild levels to include (default 3)
node_idNo
refreshNoExport the live file again rather than read a local or cached copy (see the server's instructions, or figma-reader help)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.4.2
    • changedInput schema / properties / file / description
      Previous value: -"Path to a local .fig file, or a Figma file key / figma.com/design/... URL. A node-id in the URL is used when this tool takes node_id and it is omitted; a tool that answers about the whole file ignores it. A key or URL uses a local '<name> [<key>].fig' from FIGMA_FILES_DIRS when one exists, otherwise exports through the browser."New value: +"A local .fig path, a Figma file key or a figma.com/design/... URL (see the server's instructions, or figma-reader help)"
    • changedInput schema / properties / refresh / description
      Previous value: -"Skip local/cached copies and export the live file through the browser. Has no effect when file is a path to a .fig: that file is read as it is on disk and the result carries refreshIgnored; pass the key or URL to export the live file instead."New value: +"Export the live file again rather than read a local or cached copy (see the server's instructions, or figma-reader help)"
  2. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=true already covering the safety profile, the description still adds substantive behavior: instances are not expanded ('see mainComponentId'), devStatus is absent on unmarked nodes, and path/pathIds handling when the path does not split on ' / '. That is genuine context beyond the annotations, though the devStatus paragraph is so convoluted that its practical value is partly lost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is substantive but the structure is weak: it opens with return data instead of the action, uses tangled clauses ('a record that is none and was none, with no user or note on it...'), and repeats the pointer '(see the server's instructions, or figma-reader help)' three times across description and schema. Dense but not tightly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return-shape information — and it does, enumerating geometry, fills, text runs, component info, bound variables, dev-mode annotations, measurements, and dating fields. For a 4-parameter reader it is nearly complete, missing only the node_id semantics and any pagination/size caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (file, depth, refresh documented; node_id is not). The description adds no syntax or format detail for any parameter — it discusses output fields (mainComponentId, pathIds, exportedAt) rather than inputs. Baseline 3 is appropriate given the schema carries most parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource and its payload explicitly: 'Detailed design data for a node and its subtree: geometry, fills/strokes/effects (hex), auto-layout, text styling and runs, component/instance info, bound variables and style names.' That is far more specific than a bare 'get node' and lets an agent know it returns deep per-node data. It never names a sibling to distinguish itself (e.g. figma_get_tree, figma_get_text), so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is largely implied by the payload list rather than stated. There is one routing hint — devStatus details are covered by figma_dev_status — but no explicit when-to-use/when-not or comparison against the many sibling readers (figma_get_tree, figma_get_text, figma_get_components). An agent must infer the choice from the return-data description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.