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.

Figme

NPM · FIGME-MCP · SCANNED SEP 25

MCP server that reads local Figma .fig files, fully offline

Available components

68 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 Security98
  • 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
  • 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability67
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2844 tokens (~237/item across 12 items; 12 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 Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the Figme MCP server?

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

npm · figme-mcp

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

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 21 Sept 26 68

    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 25 Sept 2026 · Analysed npm/figme-mcp@1.1.1

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 96 packages
Packages resolved 96
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 12 exposed · ~2,447 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
fig_blob ~179

Return the raw bytes of one entry in the file's blob table. Vector geometry, glyph outlines and similar bulk payloads are stored there and referenced by index from fields such as `vectorData.vectorNetworkBlob` and `Path.commandsBlob` (fig_node reports these as `vector.networkBlob` / `vector.fillBlobs`). This server does not decode the vector-network format — you get the bytes, base64 or hex, truncated to maxBytes with a flag when longer.

NameTypeReqDescription
encodingstring–Default "base64".
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
indexintegeryesBlob index, as reported by fig_node `vector.*`.
maxBytesinteger–Bytes to return before truncating (default 65536).

No output schema declared.

No examples provided.

fig_components ~176

List the components (SYMBOL nodes) defined in the file: guid, name, description, the component-set it belongs to when it is a variant, its property definitions with defaults, and how many instances of it exist. Filter with `query` (case-insensitive substring of the name). Sorted by instance count, most-used first, so the load-bearing parts of the design system come back before one-off symbols. Follow up with fig_instance on a specific INSTANCE guid.

NameTypeReqDescription
cursorstring–Opaque nextCursor from a previous truncated response; resumes where it stopped.
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
limitinteger–Default 50.
querystring–Case-insensitive substring of the component name.

No output schema declared.

No examples provided.

fig_find ~206

Search a file for nodes by name and by text content (case-insensitive substring), optionally restricted to node types and/or a subtree. Each hit comes back with the page it lives on, a breadcrumb of ancestor names, and which field matched — so you can jump straight to a guid and then call fig_node / fig_style. Omit `query` to list every node of the given types.

NameTypeReqDescription
cursorstring–Opaque nextCursor from a previous truncated response; resumes where it stopped.
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
limitinteger–Default 50.
querystring–Case-insensitive substring matched against layer names AND text content.
scopestring–Only search inside this guid subtree. A Figma node-id or link works too.
typesarray–Restrict to node types, e.g. ["TEXT"].

No output schema declared.

No examples provided.

fig_image ~238

Fetch a bitmap stored inside the .fig: pass `hash` (the 40-hex image id reported by fig_node / fig_style on an image paint), or `guid` to take the image(s) used by that node, or hash:"thumbnail" for the document preview. Small images come back as viewable image content; larger ones come back as metadata (mime, byte size, pixel dimensions) — give `savePath` to write the exact bytes to disk instead. NOTE: a .fig contains no rendered pictures of frames, only the bitmaps placed in image fills plus thumbnail.png, so this cannot screenshot a design.

NameTypeReqDescription
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
guidstring–Node guid; uses the image fills on that node. A Figma node-id or link works too.
hashstring–40-hex image hash, or the literal "thumbnail" for thumbnail.png.
savePathstring–Write the bytes to this path (parent directories are created) instead of inlining.

No output schema declared.

No examples provided.

fig_instance ~132

Explain one component INSTANCE: which SYMBOL it points at, its component-property assignments with the property names resolved, and every override it applies — each with the path down into the component, the node that path addresses, and the fields it changes. Use it to see how an instance differs from its component without diffing two subtrees.

NameTypeReqDescription
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
guidstringyesGuid of an INSTANCE node, e.g. "2:1329". A Figma node-id or link works too.

No output schema declared.

No examples provided.

fig_node ~187

Inspect one node by guid (e.g. "2:1339"). detail:"full" (default) gives geometry, fills/strokes/effects as hex colours, corner radii, auto-layout, text basics, component and variable links, plus child summaries. detail:"raw" returns the decoded Figma record verbatim — the escape hatch for fields this server does not map yet; it is limited to one node per call and can be large.

NameTypeReqDescription
detailstring–Default "full".
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
guidstringyesNode guid, "sessionID:localID", e.g. "2:1339". A Figma node-id or link works too.
includeChildrenboolean–Include summaries of direct children (default true).

No output schema declared.

No examples provided.

fig_overview ~115

Open a local Figma .fig file and summarise it: document name, export date, node counts by type, the page list, and how many components / variables / images it holds. START HERE. Then fig_tree a page, then fig_node / fig_style on interesting guids; fig_find jumps straight to a name or a piece of text. Everything is read-only and offline.

NameTypeReqDescription
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).

No output schema declared.

No examples provided.

fig_render ~350

Render a node — frame, component, instance, group, shape, text, or a whole page — to a PNG the model can look at, or to SVG. Fully offline: geometry, text outlines and images all come from the file. Rendering is best-effort: read `approximated` and `unsupported` in the report before trusting fine details; exact values remain available from fig_node / fig_style / fig_text. Default output is PNG at 2x, capped to 1568 px on the longest edge; use `savePath` to write a file instead of inlining it.

NameTypeReqDescription
backgroundstring–Default "transparent". "page" fills with the page background colour.
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
formatstring–Default "png". Falls back to SVG text when the optional rasterizer is not installed.
guidstringyesNode to render, e.g. "2:1339"; a Figma node-id or link works too. A page guid renders the whole page, downscaled to fit maxSize.
maxNodesinteger–Refuse subtrees larger than this. Default 20000.
maxSizeinteger–Longest edge in pixels. Default 1568.
savePathstring–Write the PNG/SVG to this path (directories are created) instead of inlining it. Required when the PNG exceeds 2097152 bytes or the SVG exceeds 50000 characters.
scalenumber–Device scale factor. Default 2. Lowered automatically to respect maxSize.

No output schema declared.

No examples provided.

fig_style ~165

The flattened style of one node, shaped for writing code: hex fills / strokes / effects, corner radii, typography, and auto-layout translated into CSS flexbox terms (display, direction, gap, padding, justifyContent, alignItems, sizing) plus how the node behaves inside its parent layout (flexGrow, alignSelf, margin). Shared styles and variable bindings are named whenever they resolve inside this file.

NameTypeReqDescription
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
guidstringyesNode guid, e.g. "2:1339". A Figma node-id or link works too.
includeRunsboolean–For TEXT nodes, also return styled runs (default false).

No output schema declared.

No examples provided.

fig_text ~238

Extract every string of copy in the file (or in one subtree via `scope`), in document order: guid, layer name, the characters, the page, and the base typography (font, size, line-height, colour). With includeRuns:true each node also carries its styled runs — the mixed-format spans Figma stores per UTF-16 code unit — with only the fields each run overrides. Use this for copy audits and translation passes rather than walking the tree.

NameTypeReqDescription
cursorstring–Opaque nextCursor from a previous truncated response; resumes where it stopped.
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
includePathboolean–Include the ancestor breadcrumb per node (default false; costs tokens).
includeRunsboolean–Include per-run style overrides (default false; costs many more tokens).
includeStyleboolean–Include font / size / line-height / colour per node (default true).
scopestring–Only collect text inside this guid subtree. A Figma node-id or link works too.

No output schema declared.

No examples provided.

fig_tree ~258

List the layers under a node, breadth-limited by depth (default 2, max 6). Returns a FLAT list in document order; each entry carries `depth` (relative to the requested root) and `parent`, so the hierarchy is reconstructable, and `children` (count) so you can see where to deepen. format:"outline" returns indented text lines instead of JSON and is roughly 4x denser for browsing. Large subtrees are truncated with truncated:true and a nextCursor you can pass back to continue.

NameTypeReqDescription
cursorstring–Opaque nextCursor from a previous truncated response; resumes where it stopped.
depthinteger–Levels below the root to include (default 2, max 6).
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
formatstring–Default "json".
rootstring–Guid to start from, e.g. "2:1339"; a Figma node-id or link works too. Defaults to the DOCUMENT node.
typesarray–Only include these node types, e.g. ["FRAME","TEXT"]. Depth still applies.

No output schema declared.

No examples provided.

fig_variables ~203

List the design tokens in the file: every variable collection (VARIABLE_SET) with its modes, and every variable with its value per mode — colours as hex, numbers and strings verbatim. Aliases are followed when the target variable lives in this file; a variable published from another library is returned as its opaque assetRef instead. Filter with `set` (collection name or guid) or `query` (substring of the variable name).

NameTypeReqDescription
cursorstring–Opaque nextCursor from a previous truncated response; resumes where it stopped.
filestringyesPath to the .fig / .figma file (absolute, or relative to the server CWD).
includeSetsboolean–Include the collection list with their modes (default true).
limitinteger–Default 100.
querystring–Case-insensitive substring of the variable name.
setstring–Only variables from this collection (name or guid).

No output schema declared.

No examples provided.

Common questions

What is the Figme MCP server?

Figme is an MCP server listed in the public MCP registry as io.github.ntson9p/figme-mcp. MCP server that reads local Figma .fig files, fully offline. This page covers its npm package (figme-mcp).

Is the Figme MCP server safe to use?

Figme scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 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 Figme MCP server expose?

Figme exposes 12 tools: fig_overview, fig_tree, fig_node, fig_find, fig_text, and 7 more. Their descriptions and schemas cost roughly 2,447 tokens of context every time the server is loaded.

Is the Figme MCP server still maintained?

Figme is still listed as active in the MCP registry. We last reached this channel on 25 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 Figme MCP server under?

Figme declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.