Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.jirayusueb/figma-mcp-rs

NPM · FIGMA-MCP-RS · SCANNED SEP 20

Figma/FigJam MCP server with read/write via plugin — no API token, no limits. 78 tools.

Available components

+5 this week 76 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency45
Schema Quality & AI Usability89
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 8650 tokens (~102/item across 84 items; 84 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
  • Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 96% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_nodes" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 84 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.jirayusueb/figma-mcp-rs server?

io.github.jirayusueb/figma-mcp-rs runs locally as an npm package, launched with npx -y figma-mcp-rs. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · figma-mcp-rs

# add to Claude Code
claude mcp add jirayusueb-figma-mcp-rs -- npx -y figma-mcp-rs
// .cursor/mcp.json
{
  "mcpServers": {
    "jirayusueb-figma-mcp-rs": {
      "command": "npx",
      "args": [
        "-y",
        "figma-mcp-rs"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "jirayusueb-figma-mcp-rs": {
      "command": "npx",
      "args": [
        "-y",
        "figma-mcp-rs"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add jirayusueb-figma-mcp-rs -- npx -y figma-mcp-rs
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jirayusueb-figma-mcp-rs": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "figma-mcp-rs"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add jirayusueb-figma-mcp-rs --command npx --arg -y --arg figma-mcp-rs
# ~/.hermes/config.yaml
mcp_servers:
  jirayusueb-figma-mcp-rs:
    command: "npx"
    args: ["-y", "figma-mcp-rs"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "jirayusueb-figma-mcp-rs": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "figma-mcp-rs"
      ]
    }
  }
}
# add to Vellum
assistant mcp add jirayusueb-figma-mcp-rs -t stdio -c npx -a -y figma-mcp-rs
// mcp.json
{
  "mcpServers": {
    "jirayusueb-figma-mcp-rs": {
      "command": "npx",
      "args": [
        "-y",
        "figma-mcp-rs"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +4
    • Stability: unverified → 0.23 functional
  • 13 Sept 26 +15
    • Malware scan: unverified → pass security
  • 11 Sept 26 56

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/figma-mcp-rs@0.1.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 84 exposed · ~8,650 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_page ~58

Add a new page to the Figma document.

NameTypeReqDescription
indexnumber|nullPosition index to insert the page (0 = first). Defaults to last position.
namestring|nullName for the new page (default 'Page')

No output schema declared.

No examples provided.

add_variable_mode ~30

No description provided.

NameTypeReqDescription
collectionIdstringyesVariable collection ID
modeNamestringyesName for the new mode

No output schema declared.

No examples provided.

apply_style_to_node ~99

Apply an existing local style (paint, text, effect, or grid) to a node, linking the node to that style.

NameTypeReqDescription
nodeIdstringyesTarget node ID in colon format e.g. 4029:12345
styleIdstringyesStyle ID to apply (from get_styles)
targetstring|nullFor paint styles only — apply to 'fill' (default) or 'stroke'

No output schema declared.

No examples provided.

auto_arrange ~137

Auto-arrange objects on a FigJam board in grid, row, or column layout. FigJam only.

NameTypeReqDescription
columnsnumber|nullGrid columns (default auto based on sqrt of count)
layoutstring|nullLayout mode: "grid", "row", or "column" (default "grid")
nodeIdsarray|nullNode IDs to arrange (optional; if absent, arranges page children)
spacingnumber|nullSpacing between items (default 40)
startXnumber|nullStarting X position
startYnumber|nullStarting Y position

No output schema declared.

No examples provided.

batch_rename_nodes ~166

Rename multiple nodes using find/replace, regex substitution, or prefix/suffix addition.

NameTypeReqDescription
findstring|nullString (or regex pattern when useRegex=true) to search for in the node name
nodeIdsarrayyesNode IDs in colon format e.g. ['4029:12345']
prefixstring|nullString to prepend to the node name
regexFlagsstring|nullRegex flags e.g. 'gi' (default 'g'). Only used when useRegex=true.
replacestring|nullReplacement string. Required when find is provided.
suffixstring|nullString to append to the node name
useRegexboolean|nullTreat find as a regular expression (default false)

No output schema declared.

No examples provided.

bind_variable_to_node ~197

Bind a local variable to a node property so the property is driven by the variable's value. COLOR variables: use fillColor or strokeColor. BOOLEAN variables: use visible. FLOAT variables: use opacity, rotation, width, height, cornerRadius, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius, strokeWeight, itemSpacing, paddingTop, paddingRight, paddingBottom, paddingLeft.

NameTypeReqDescription
fieldstringyesProperty to bind: fillColor | strokeColor | visible | opacity | rotation | width | height | cornerRadius | topLeftRadius | topRightRadius | bottomLeftRadius | bottomRightRadius | strokeWeight | itemS…
nodeIdstringyesTarget node ID in colon format e.g. 4029:12345
variableIdstringyesVariable ID to bind (from get_variable_defs)

No output schema declared.

No examples provided.

clone_node ~96

Clone an existing node, optionally repositioning it or placing it in a new parent.

NameTypeReqDescription
nodeIdstringyesSource node ID in colon format e.g. '4029:12345'
parentIdstring|nullParent node ID for the clone. Defaults to same parent as source.
xnumber|nullX position of the clone
ynumber|nullY position of the clone

No output schema declared.

No examples provided.

create_code_block ~73

Create a code block on a FigJam board with syntax highlighting. FigJam only.

NameTypeReqDescription
codestringyesCode content (required)
languagestring|nullProgramming language (default "PLAINTEXT")
xnumber|nullX position
ynumber|nullY position

No output schema declared.

No examples provided.

create_component ~76

Convert an existing FRAME node into a reusable COMPONENT. The frame is replaced in place by the new component.

NameTypeReqDescription
namestring|nullOptional name for the component. Defaults to the frame's current name.
nodeIdstringyesFRAME node ID to convert, in colon format e.g. '4029:12345'

No output schema declared.

No examples provided.

create_connector ~100

Create a connector on the current FigJam page, optionally linked between two nodes. FigJam only.

NameTypeReqDescription
endNodeIdstring|nullOptional node ID the connector ends at, colon format e.g. '4029:67890'
startNodeIdstring|nullOptional node ID the connector starts from, colon format e.g. '4029:12345'
textstring|nullOptional text label for the connector

No output schema declared.

No examples provided.

create_effect_style ~217

Create a new local effect style (drop shadow, inner shadow, or blur).

NameTypeReqDescription
colorstring|nullShadow color as hex e.g. #000000 (default #000000, shadows only)
descriptionstring|nullOptional style description
namestringyesStyle name e.g. 'Shadow/Card'
offsetXnumber|nullShadow X offset in pixels (default 0, shadows only)
offsetYnumber|nullShadow Y offset in pixels (default 4, shadows only)
opacitynumber|nullShadow color opacity 0–1 (default 0.25, shadows only)
radiusnumber|nullBlur radius in pixels (default 8 for shadows, 4 for blurs)
spreadnumber|nullShadow spread in pixels (default 0, shadows only)
typestring|nullEffect type: DROP_SHADOW (default), INNER_SHADOW, LAYER_BLUR, or BACKGROUND_BLUR

No output schema declared.

No examples provided.

create_ellipse ~139

Create a new ellipse (circle/oval) on the current page or inside a parent node.

NameTypeReqDescription
fillColorstring|nullFill color as hex e.g. #3B82F6
heightnumber|nullHeight in pixels (default 100)
namestring|nullEllipse name
parentIdstring|nullParent node ID in colon format. Defaults to current page.
widthnumber|nullWidth in pixels (default 100)
xnumber|nullX position (default 0)
ynumber|nullY position (default 0)

No output schema declared.

No examples provided.

create_frame ~348

Create a new frame on the current page or inside a parent node.

NameTypeReqDescription
counterAxisAlignItemsstring|nullCross-axis alignment: MIN, CENTER, MAX, or BASELINE
counterAxisSizingModestring|nullCross-axis sizing: FIXED or AUTO (hug)
counterAxisSpacingnumber|nullGap between wrapped rows/columns (only when layoutWrap is WRAP)
fillColorstring|nullFill color as hex e.g. #FFFFFF
heightnumber|nullHeight in pixels (default 100)
itemSpacingnumber|nullAuto-layout gap between children
layoutModestring|nullAuto-layout direction: HORIZONTAL, VERTICAL, or NONE
layoutWrapstring|nullWrap behaviour: NO_WRAP or WRAP
namestring|nullFrame name
paddingBottomnumber|nullAuto-layout bottom padding
paddingLeftnumber|nullAuto-layout left padding
paddingRightnumber|nullAuto-layout right padding
paddingTopnumber|nullAuto-layout top padding
parentIdstring|nullParent node ID in colon format. Defaults to current page.
primaryAxisAlignItemsstring|nullMain-axis alignment: MIN, CENTER, MAX, or SPACE_BETWEEN
primaryAxisSizingModestring|nullMain-axis sizing: FIXED or AUTO (hug)
widthnumber|nullWidth in pixels (default 100)
xnumber|nullX position (default 0)
ynumber|nullY position (default 0)

No output schema declared.

No examples provided.

create_grid_style ~236

Create a new local layout grid style.

NameTypeReqDescription
alignmentstring|nullAlignment: STRETCH (default), CENTER, MIN, or MAX (COLUMNS/ROWS only)
colorstring|nullGrid line color as hex e.g. #FF0000 (GRID only, default #FF0000)
countnumber|nullNumber of columns or rows (COLUMNS/ROWS only, default 12)
descriptionstring|nullOptional style description
gutterSizenumber|nullGutter size in pixels (COLUMNS/ROWS only, default 16)
namestringyesStyle name e.g. 'Grid/Desktop'
offsetnumber|nullMargin/offset in pixels (COLUMNS/ROWS only, default 0)
opacitynumber|nullGrid line opacity 0–1 (GRID only, default 0.1)
patternstring|nullGrid pattern: GRID (default), COLUMNS, or ROWS
sectionSizenumber|nullGrid cell size in pixels (GRID only, default 8)

No output schema declared.

No examples provided.

create_paint_style ~67

Create a new local paint style with a solid fill color.

NameTypeReqDescription
colorstringyesFill color as hex e.g. #FF5733
descriptionstring|nullOptional style description
namestringyesStyle name e.g. 'Brand/Primary'

No output schema declared.

No examples provided.

create_rectangle ~143

Create a new rectangle on the current page or inside a parent node.

NameTypeReqDescription
cornerRadiusnumber|nullCorner radius in pixels
fillColorstring|nullFill color as hex e.g. #FF5733
heightnumber|nullHeight in pixels (default 100)
namestring|nullRectangle name
parentIdstring|nullParent node ID in colon format. Defaults to current page.
widthnumber|nullWidth in pixels (default 100)
xnumber|nullX position (default 0)
ynumber|nullY position (default 0)

No output schema declared.

No examples provided.

create_section ~97

Create a Figma Section node on the current page. Sections are the modern way to organize frames and groups on a page.

NameTypeReqDescription
heightnumber|nullHeight in pixels
namestring|nullSection name (default 'Section')
widthnumber|nullWidth in pixels
xnumber|nullX position (default 0)
ynumber|nullY position (default 0)

No output schema declared.

No examples provided.

create_shape_with_text ~115

Create a shape with text on a FigJam board (rectangles, circles, diamonds, etc.). FigJam only.

NameTypeReqDescription
fillColorstring|nullFill color as hex
heightnumber|nullHeight
shapeTypestring|nullShape type (default "ROUNDED_RECTANGLE")
textstringyesText content (required)
widthnumber|nullWidth
xnumber|nullX position
ynumber|nullY position

No output schema declared.

No examples provided.

create_stickies ~122

Create multiple sticky notes at once on a FigJam board, with optional grid auto-layout. FigJam only.

NameTypeReqDescription
columnsnumber|nullNumber of columns in grid layout (default 5)
itemsarrayyesArray of stickies to create (required, max 200)
spacingnumber|nullSpacing between stickies (default 40)
startXnumber|nullStarting X position for grid (default 0)
startYnumber|nullStarting Y position for grid (default 0)

No output schema declared.

No examples provided.

create_sticky ~99

Create a sticky note on the current FigJam page. FigJam only.

NameTypeReqDescription
fillColorstring|nullFill color as hex string e.g. '#FFD54F'
namestring|nullOptional name for the node
textstringyesText content for the sticky note (required)
xnumber|nullX position on the canvas
ynumber|nullY position on the canvas

No output schema declared.

No examples provided.

create_table ~107

Create a table on a FigJam board with optional cell text content. FigJam only.

NameTypeReqDescription
cellsarray|nullCell contents (optional, ragged arrays OK)
columnsnumberyesNumber of columns (required, 1-50)
namestring|nullTable name
rowsnumberyesNumber of rows (required, 1-50)
xnumber|nullX position
ynumber|nullY position

No output schema declared.

No examples provided.

create_text ~258

Create a new text node on the current page or inside a parent node. The font is loaded automatically before insertion. Returns the created node ID and bounds. Use set_text to update the content of an existing text node.

NameTypeReqDescription
fillColorstring|nullText color as hex e.g. #000000 (default black)
fontFamilystring|nullFont family name e.g. 'Inter', 'Roboto', 'SF Pro Display' (default Inter). Must be a font installed in Figma.
fontSizenumber|nullFont size in pixels (default 14)
fontStylestring|nullFont style variant e.g. 'Regular', 'Bold', 'Italic', 'Medium', 'SemiBold' (default Regular). Must match an available style for the chosen fontFamily.
namestring|nullNode name shown in the layers panel (defaults to the text content)
parentIdstring|nullParent node ID in colon format. Defaults to current page.
textstringyesText content to display
xnumber|nullX position in pixels (default 0)
ynumber|nullY position in pixels (default 0)

No output schema declared.

No examples provided.

create_text_style ~281

Create a new local text style (typography preset). Returns the new style's ID. Apply it to nodes with apply_style_to_node. Use get_styles to list existing text styles.

NameTypeReqDescription
descriptionstring|nullOptional human-readable description shown in the Figma style panel
fontFamilystring|nullFont family name e.g. 'Inter', 'Roboto' (default Inter). Must be installed in Figma.
fontSizenumber|nullFont size in pixels (default 16)
fontStylestring|nullFont style variant e.g. 'Regular', 'Bold', 'Medium', 'SemiBold' (default Regular)
letterSpacingUnitstring|nullLetter spacing unit: PIXELS (default) or PERCENT
letterSpacingValuenumber|nullLetter spacing value (unit set by letterSpacingUnit)
lineHeightUnitstring|nullLine height unit: PIXELS (default) or PERCENT
lineHeightValuenumber|nullLine height value (unit set by lineHeightUnit)
namestringyesStyle name — use slash notation to organise into groups e.g. 'Heading/H1', 'Body/Regular'
textDecorationstring|nullText decoration: NONE (default), UNDERLINE, or STRIKETHROUGH

No output schema declared.

No examples provided.

create_variable ~187

Create a new variable (design token) inside an existing collection. Returns the new variable's ID. Use get_variable_defs to find collection IDs, set_variable_value to set values per mode, and bind_variable_to_node to apply the variable to a node property.

NameTypeReqDescription
collectionIdstringyesID of the variable collection to add this variable to (from get_variable_defs)
namestringyesVariable name — use slash notation to group e.g. 'Color/Primary', 'Spacing/MD'
typestringyesVariable type: COLOR (hex color), FLOAT (numeric dimension/spacing), STRING (text), or BOOLEAN (true/false toggle)
valuestring|nullInitial value for the first mode. COLOR: hex e.g. #FF5733. FLOAT: number e.g. 16. STRING: text. BOOLEAN: true or false.

No output schema declared.

No examples provided.

create_variable_collection ~36

No description provided.

NameTypeReqDescription
initialModeNamestring|nullName for the initial mode (default 'Mode 1')
namestringyesCollection name

No output schema declared.

No examples provided.

delete_nodes ~49

Delete one or more nodes. This cannot be undone via MCP — use with care.

NameTypeReqDescription
nodeIdsarrayyesNode IDs to delete in colon format e.g. ['4029:12345']

No output schema declared.

No examples provided.

delete_page ~65

Delete a page from the Figma document. Cannot delete the only remaining page.

NameTypeReqDescription
pageIdstring|nullPage node ID in colon format e.g. '0:2'
pageNamestring|nullExact page name to delete (alternative to pageId)

No output schema declared.

No examples provided.

delete_style ~37

Delete a style (paint, text, effect, or grid) by its ID.

NameTypeReqDescription
styleIdstringyesStyle ID to delete

No output schema declared.

No examples provided.

delete_variable ~74

Delete a single variable (provide variableId) or an entire collection and all its variables (provide collectionId). Provide exactly one of the two — not both.

NameTypeReqDescription
collectionIdstring|nullCollection ID to delete (removes all variables in the collection)
variableIdstring|nullVariable ID to delete

No output schema declared.

No examples provided.

detach_instance ~60

Detach one or more component instances, converting them to plain frames. The link to the main component is broken; all visual properties are preserved.

NameTypeReqDescription
nodeIdsarrayyesINSTANCE node IDs in colon format e.g. ['4029:12345']

No output schema declared.

No examples provided.

execute_code ~165

Run arbitrary Figma Plugin API code inside the plugin sandbox and return its value. The code runs as an async function body — use await and end with a return. Use this only for operations the dedicated tools do not cover; prefer the specific tool when one exists. Runs in the user's open file and is undoable with Cmd/Ctrl+Z.

NameTypeReqDescription
codestringyesThe code to execute. It runs as an async function body — use `await` and end with a `return`. Use this only for operations the dedicated tools do not cover; prefer the specific tool when one exists.
timeoutMsnumber|nullOptional timeout in milliseconds (1-25000, default 5000). Clipped to keep it under the bridge's 30s deadline.

No output schema declared.

No examples provided.

export_frames_to_pdf ~99

Export multiple frames as a single multi-page PDF file. Each frame becomes one page in order. Ideal for pitch decks, proposals, and slide exports.

NameTypeReqDescription
nodeIdsarrayyesOrdered list of frame node IDs to export as PDF pages, colon format e.g. '4029:12345'
outputPathstringyesFile path to write the PDF to, must end in .pdf (relative to working directory or absolute)

No output schema declared.

No examples provided.

export_tokens ~53

Export all design tokens (variables and paint styles) as JSON or CSS custom properties. Ideal for bridging Figma variables into your codebase.

NameTypeReqDescription
formatstring|nullOutput format: json (default) or css

No output schema declared.

No examples provided.

find_replace_text ~140

Find and replace text content across all TEXT nodes in a subtree. Searches the entire current page if no nodeId is given.

NameTypeReqDescription
findstringyesText string (or regex pattern when useRegex=true) to search for
nodeIdstring|nullRoot node ID to scope the search. Defaults to the entire current page.
regexFlagsstring|nullRegex flags e.g. 'gi' (default 'g'). Only used when useRegex=true.
replacestringyesReplacement string (use empty string to delete matches)
useRegexboolean|nullTreat find as a regular expression (default false)

No output schema declared.

No examples provided.

get_annotations ~87

Get dev-mode annotations in the current document or scoped to a specific node. Returns annotation objects with label text, measurement type, and the ID of the annotated node. Omit nodeId to retrieve all annotations on the current page.

NameTypeReqDescription
nodeIdstring|nullOptional — scope results to annotations on this node and its descendants, colon format e.g. '4029:12345'

No output schema declared.

No examples provided.

get_board_contents ~49

Get all objects and connectors on the current FigJam page. Returns nodes with text content and connection data. FigJam only.

NameTypeReqDescription
includeConnectionsboolean|nullInclude connector information (default true)

No output schema declared.

No examples provided.

get_design_context ~169

Get a depth-limited, token-efficient tree of the current selection or page. Use this instead of get_document when exploring large files. Supports detail levels (minimal/compact/full) and dedupe_components for pages heavy with repeated component instances.

NameTypeReqDescription
dedupe_componentsboolean|nullWhen true, INSTANCE nodes are serialized compactly (mainComponentId + componentProperties + overrides array of differing text/nested content) and unique component definitions are collected once in a…
depthnumber|nullHow many levels deep to traverse (default 2)
detailstring|nullProperty verbosity: minimal (id/name/type/bounds only), compact (+fills/strokes/opacity), full (everything, default)

No output schema declared.

No examples provided.

get_document ~50

Get the full node tree of the current page (not the whole file — only the active page). Returns all nodes recursively and can be very large. Prefer get_design_context for exploration or when token efficiency matters.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_fonts ~32

List all fonts used in the current page, sorted by usage frequency. Useful for understanding typography without scanning all text nodes.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_local_components ~20

Get all components defined in the current Figma file.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_metadata ~25

Get metadata about the current Figma document: file name, pages, current page

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_node ~79

Get a single node by ID with full detail. Use get_nodes_info to fetch multiple nodes in one round-trip instead of calling this repeatedly. Node ID must be colon format e.g. '4029:12345', never hyphens.

NameTypeReqDescription
nodeIdstringyesNode ID in colon format e.g. '4029:12345'

No output schema declared.

No examples provided.

get_nodes_info ~66

Get full details for multiple nodes by ID in one round-trip. Prefer this over calling get_node repeatedly when you need several nodes.

NameTypeReqDescription
nodeIdsarrayyesList of node IDs in colon format e.g. ['4029:12345', '4029:67890']

No output schema declared.

No examples provided.

get_pages ~26

List all pages in the document with their IDs and names. Lightweight alternative to get_document.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_reactions ~99

Get the prototype reactions defined on a node. Returns an array of reaction objects — each has a trigger (e.g. ON_CLICK, ON_HOVER, AFTER_TIMEOUT) and an actions array (navigate to node, open URL, go back, etc.). Use set_reactions to add or replace reactions, remove_reactions to delete them.

NameTypeReqDescription
nodeIdstringyesNode ID in colon format e.g. '4029:12345'

No output schema declared.

No examples provided.

get_screenshot ~113

Export a screenshot of one or more nodes as base64-encoded image data (held in memory). Use save_screenshots instead when you want to write images directly to disk without base64 in the response.

NameTypeReqDescription
formatstring|nullExport format: PNG (default), SVG, JPG, or PDF
nodeIdsarray|nullOptional node IDs to export, colon format. If empty, exports current selection.
scalenumber|nullExport scale for raster formats (default 2)

No output schema declared.

No examples provided.

get_selection ~44

Get the nodes currently selected in Figma. Returns an empty array if nothing is selected. Use get_design_context or get_node to retrieve deeper detail about a specific node by ID.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_status ~47

Check whether the Figma plugin bridge is connected and get setup instructions when it is not. Call this first if any tool fails with 'plugin not connected'. Does not touch the Figma document.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_styles ~65

Get all local styles in the document (paint, text, effect, and grid). Returns each style's ID, name, type, and properties. Use the style ID with apply_style_to_node or update_paint_style. For design tokens (variables), use get_variable_defs instead.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_variable_defs ~31

Get all local variable definitions: collections, modes, and values. Variables are Figma's design token system.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the io.github.jirayusueb/figma-mcp-rs server?

io.github.jirayusueb/figma-mcp-rs is listed in the public MCP registry as io.github.jirayusueb/figma-mcp-rs. Figma/FigJam MCP server with read/write via plugin, no API token, no limits. 78 tools. This page covers its npm package (figma-mcp-rs).

Is the io.github.jirayusueb/figma-mcp-rs server safe to use?

io.github.jirayusueb/figma-mcp-rs scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.jirayusueb/figma-mcp-rs server expose?

io.github.jirayusueb/figma-mcp-rs exposes 84 tools: add_page, add_variable_mode, apply_style_to_node, auto_arrange, batch_rename_nodes, and 79 more. Their descriptions and schemas cost roughly 8,650 tokens of context every time the server is loaded.

Is the io.github.jirayusueb/figma-mcp-rs server still maintained?

io.github.jirayusueb/figma-mcp-rs is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.jirayusueb/figma-mcp-rs server under?

io.github.jirayusueb/figma-mcp-rs declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.