Skip to main content
Glama

figma-vault

English · Русский

npm CI license: MIT node

Pull a Figma frame once. Then Claude Code, Codex or any MCP agent reads it as often as it likes: offline, with no Figma token and no rate limits.

  • 3 Figma requests per screen, spent once when you pull it. After that it's zero, however many times the agent looks.

  • Icons cost nothing. A real screen had 141 icons, and they took no extra requests.

  • Commit the vault and the team needs no Figma access. No licence, no token.

Try it in 30 seconds. You don't need a Figma token for this:

npm i -g figma-vault
figma-vault init && figma-vault demo && figma-vault check

How it works: the pull normalizes the frame and writes it to disk. The agent then reads it over MCP.

one developer:      figma-vault add <link>  →  vault  →  git commit
the rest of the team:  the agent reads it over MCP, no Figma token needed

The problem

Figma's MCP server and REST API are rate-limited, and on some seats the limit is tiny. While building a UI, an agent goes back to the design all the time to check a margin, a colour or a font size. That can mean dozens of calls in one session. You hit the limit fast and the work stops.

With figma-vault, the number of Figma calls doesn't depend on what the agent does. Each design costs a fixed number of calls, spent once when you pull it.

Figma Dev Mode MCP

figma-vault

who calls Figma

the agent, while it works

the CLI, once

how many calls

grows with the agent's work

fixed per design

does every reader need a token

yes

no

works offline

no

yes

There's a side effect: the design becomes a file in your repository. A developer without access to the Figma file (no licence, no permissions, no token) still gets the whole design.

How it compares

Other projects work on the same problem. The Framelink Exporter plugin exports a design to a zip for offline use, and there are caching forks of Framelink's Figma MCP. figma-vault takes a different approach:

  • The vault is meant to be committed. One person pulls a design and the whole team reads it from git. Nobody else needs Figma access.

  • Icons cost zero requests. Vector paths come with the node tree, and the SVGs are built locally. Rendering them through Figma would eat the image-render limit.

  • The format is fixed and validated. doc.json follows a written contract, and a strict validator checks every file.

Related MCP server: ai-ready-ds-auditor

Install

Requires Node.js 22+.

npm i -g figma-vault

Option 1. Per project

figma-vault init

This creates .figma-vault/, registers the server in the project's .mcp.json (other entries are left alone), adds .env to .gitignore and installs a /figma slash command for Claude Code.

Use --no-command to skip the /figma command, so the agent gets only the read-only vault_* tools.

Option 2. Nothing in the repository

figma-vault init --global

The vault lives in ~/.figma-vault/ and the server is registered in the agent's user config. The project repository never learns the tool exists. Use this when you can't add config or dependencies to the project.

Usage

figma-vault add "https://figma.com/design/KEY/Project?node-id=127-4532"

To get the link, right-click a frame in Figma and choose Copy link to selection.

figma-vault limits "<link>"   # check your Figma rate limits BEFORE pulling
figma-vault list              # what has been pulled so far
figma-vault check             # verify the whole chain works
figma-vault demo              # add a demo design, no token needed

CLI output, errors and the MCP tool descriptions are in English by default; the /figma command it installs is in English too. README.ru.md is a translation of the documentation only.

After init, Claude Code has one command:

/figma <frame link>

It pulls the design, reads it over MCP and builds the UI following the project's conventions.

What a pull costs in Figma requests

REST API limits depend on the token, the plan and the seat type, and you can't look them up in advance. Run figma-vault limits "<link>" before your first pull. It makes the same two requests a pull would and tells you whether the pull will go through.

A full pull of one screen costs three requests. We measured this on a real design with 332 nodes:

requests

node tree (/v1/files/:key/nodes)

1

frame screenshot (/v1/images)

1

raster images (/v1/images, in batches of 40)

1 per 40 images

icons and vectors

0

On that design, the 141 icons cost zero requests. So the cost of a pull doesn't depend on how many icons the design has. After the pull, the agent never calls Figma again.

Check the result against the design

figma-vault verify compares the page the agent built with the design. The package ships no browser: the snapshot is taken with whatever the project already uses (Playwright, DevTools, the agent's browser tool).

  1. Mark the root element of the page with data-figma-node-id="<root node id>", and the main blocks with the ids of their nodes.

  2. figma-vault verify <docId> --snippet prints a script. Run it on the page and save what it returns to a file.

  3. figma-vault verify <docId> --snapshot <file> checks it:

    • texts: every visible text of the design must be on the page;

    • geometry: each marked block must match the design's position and size, within 2 px by default (--tolerance).

The result is PASS (exit code 0), FAIL (1, with a list of what is off) or INCOMPLETE (2, when nothing is marked and geometry can't be checked). The /figma command runs this step itself when the project has a browser.

Try it without a Figma token

You only need a token to pull new designs. Reading works without one, which is the normal setup for everyone except the person who pulls. So you can test the whole install without creating a token:

figma-vault init && figma-vault demo && figma-vault check

check starts the real MCP server as a child process and talks to it over the protocol. It exits with code 1 when something is actually broken, so you can use it in CI.

Token

In Figma, go to Settings → Security → Personal access tokens → Generate new token. The token needs only one scope: File content → Read-only.

Put it in a .env file in the directory you run the CLI from, as a line FIGMA_TOKEN=figd_..., or set it as an environment variable. If both are set, the environment variable wins.

What the agent gets

The MCP server exposes six read-only tools:

tool

returns

vault_list

the designs in the vault

vault_get_doc

a design's node tree; maxDepth limits the depth

vault_get_node

the subtree of one node

vault_search

nodes found by name or text

vault_get_tokens

colours, typography, effects

vault_get_asset

an image or an icon

The tree is normalized:

  • auto-layout becomes mode: row|column with gap and padding;

  • coordinates are relative to the parent;

  • styles, gradients and text come in one predictable shape, including differently coloured fragments inside one text (text.runs);

  • nodes hidden in Figma are kept with hidden: true. By default the agent doesn't get them, but a parent reports how many it has (hiddenOmitted). Pass includeHidden: true when building a reusable component whose optional slots are switched off on this screen.

The raw Figma response is saved next to it in raw.json for debugging.

On a real design, normalization shrinks the tree about 7 times:

raw.json   1.9 MB   raw Figma response
doc.json   256 KB   what the agent reads

This saves more than disk space. An agent that reads 256 KB instead of 2 MB rebuilds the UI noticeably more accurately.

Vault layout

<vault>/
  index.json                 list of designs
  <docId>/
    doc.json                 normalized tree, the main artifact
    raw.json                 raw Figma response
    screenshot.png           render of the whole frame
    assets/                  icons and images

The figma-vault/doc@1 schema is described in docs/CONTRACT.md (in Russian). A strict validator checks it. Vaults pulled with 0.1.0 (doc@0) are still read as they are; there is no need to pull them again.

doc.json stands on its own: the MCP server never reads raw.json and never touches the network.

Known limitations

This is an MVP. Here is what it can't do yet.

  • Image-render limit. Figma's /v1/images endpoint runs out sooner than tree reads do, and the block can last for days. Icons no longer depend on it, but the frame screenshot and raster images still do. The client retries up to three times, following Retry-After, and never sleeps for more than a minute. If Figma asks it to wait for days, the pull keeps the node tree, records the reason as a warning and doesn't fail. Run figma-vault limits before pulling.

  • Only colour and weight are kept for fragments inside a text. A gradient, a different font or an underline on part of a text is lost.

  • Designs with many component variants make a large doc.json. Hidden slots are kept now. On a 332-node screen that added 3,400 hidden nodes, and the file grew from 444 KB to 5 MB. The agent still gets about 100 KB by default, but the file goes into your git.

How it was tested

The fixture in the repository is synthetic: 29 nodes, enough to install the tool and confirm the chain works without a Figma token.

We checked accuracy separately, on two real designs whose content isn't published here. Results on a product screen with 332 nodes, 15 levels deep:

check

result

design texts present in the rebuilt markup

41 of 41

icons

15 of 15, 0 broken links

placeholders needed

1 (a raster avatar)

Figma requests to pull

3

doc.json against the contract

passes

Not checked: pixel-perfect match. We compare with Figma's reference render by eye, using npm run dev/compare/<name>. figma-vault verify checks texts and the geometry of marked blocks, but not colours, fonts or pixels.

What it deliberately doesn't do

It isn't a SaaS, a Figma replacement or a real-time sync. There is no auth, billing, teams or users, and no server side. The MCP server runs on the developer's machine as a child process of the agent and talks over stdio. There is nothing to deploy.

More docs (in Russian)

Development

npm install
npm test          # 58 tests
npm run typecheck
npm run dev       # local preview of rebuilt markup and comparison with the design

Two AI agents write this project in parallel, following the protocol in AGENTS.md: separate areas of the code, a task board and a shared log. Each commit is tagged with its author.

License

MIT

Available Tools

6 tools
vault_get_assetDesign assetA
Read-only

An image from the document by the path from node.asset.path (for example assets/logo.svg) or screenshot.png. Raster comes back as an image, svg as its source.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath inside the document directory, for example assets/hero.png
docIdYesDocument id as returned by vault_list

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark it as read-only, and the description adds the useful behavioral distinction that raster files are returned as images while SVG files are returned as source. This goes beyond the annotation coverage without contradicting it.

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

Conciseness4/5

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

The description is compact and contains no fluff; both sentences carry functional information. The opening is slightly awkward ('An image from the document by the path...') but remains quickly scannable.

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?

With only two required parameters and no output schema, the description provides the key missing context: where paths originate and how the response differs by format. It could specify the exact response encoding or error handling, but for a simple read-only asset lookup the definition is largely sufficient.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description enriches the path parameter by explaining that it comes from node.asset.path and that screenshot.png is a valid special value. This is practical information not present in the schema.

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 identifies the resource as an image asset in a document and indicates a path-based lookup, which separates it from sibling tools that return nodes, documents, tokens, or search results. It lacks an explicit retrieval verb like 'returns' or 'fetches,' but the behavior is clear enough from the examples and the raster/SVG contrast.

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?

It gives practical guidance on where to obtain the path (node.asset.path or screenshot.png), so an agent can infer the intended use when it needs an asset for a node. It does not explicitly state when not to use it or name alternatives, leaving the choice to inference.

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

vault_get_docWhole documentA
Read-only

Normalized design tree together with its tokens. maxDepth cuts the tree by depth (0 — the root only); truncated nodes get childrenOmitted. Hidden nodes are not returned without includeHidden.

ParametersJSON Schema
NameRequiredDescriptionDefault
docIdYesDocument id as returned by vault_list
maxDepthNoHow many levels below the root to return. Omit for the whole tree.
includeHiddenNoAlso return nodes hidden in Figma (hidden: true) — optional component slots. Defaults to false: building the screen as it looks does not need them.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only, and the description adds valuable behavioral detail: maxDepth truncates with 'childrenOmitted' and hidden nodes are excluded unless includeHidden is set. This goes beyond the annotation and explains edge cases. No contradiction with readOnlyHint or openWorldHint.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is front-loaded, followed by concise behavior notes on maxDepth and hidden nodes. Every clause contributes meaning.

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?

For a complex tree-returning tool with no output schema, the description gives a high-level view and notes a specific field ('childrenOmitted'), which hints at the return structure. It covers the key behaviors (depth, hidden nodes) but does not detail the full tree/token format. Given readOnlyHint and the sibling tool set, this is reasonably complete.

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

Parameters4/5

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

Schema coverage is 100%, but the description enriches parameter meaning: it explains maxDepth's depth semantics (0 = root only) and the effect on truncated nodes, and clarifies includeHidden's default and purpose. This adds value beyond the schema's field descriptions.

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

Purpose5/5

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

The description clearly states the tool retrieves a 'Normalized design tree together with its tokens' – a specific verb and resource. It distinguishes itself from siblings like vault_get_node (single node) and vault_get_tokens (tokens only) by covering the whole tree. The mention of maxDepth and hidden nodes further clarifies scope.

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?

The description implies when to use it (when you need the whole document tree and its tokens) but does not explicitly contrast with alternatives like vault_get_node or vault_get_tokens. It explains how maxDepth and includeHidden alter the result, giving context, but lacks explicit 'use this when' or 'prefer sibling X for Y' guidance.

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

vault_get_nodeNode subtreeA
Read-only

A node by id with all of its descendants. Use it instead of pulling the whole document.

ParametersJSON Schema
NameRequiredDescriptionDefault
docIdYesDocument id as returned by vault_list
nodeIdYesNode id in Figma format, for example 1:42
includeHiddenNoAlso return nodes hidden in Figma (hidden: true) — optional component slots. Defaults to false: building the screen as it looks does not need them.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context: it returns descendants, and the includeHidden parameter is explained with a practical default rationale ('building the screen as it looks does not need them'). This goes beyond the schema.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose, and the second sentence justifies usage. No wasted words.

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?

For a read-only subtree retrieval tool with 100% schema coverage and no output schema, the description is complete enough. It could mention pagination or response shape, but the readOnlyHint and clear parameter docs make it adequate.

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 100%, so the schema already documents all three parameters. The description adds a bit of context for includeHidden, but docId and nodeId are already well described in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns a node by id with all descendants, and explicitly contrasts it with pulling the whole document. This distinguishes it from siblings like vault_get_doc and vault_search.

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

Usage Guidelines4/5

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

The description says to use it instead of pulling the whole document, which gives clear context for when it is appropriate. It does not explicitly name alternatives or exclusions, but the sibling list and the 'instead of pulling the whole document' guidance are sufficient.

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

vault_get_tokensDesign system tokensA
Read-only

Colors, text styles and effects of the document. Nodes refer to them via text.token.

ParametersJSON Schema
NameRequiredDescriptionDefault
docIdYesDocument id as returned by vault_list

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe read operation. The description adds the useful context that tokens are referenced by nodes via 'text.token', which helps the agent understand the data model. It doesn't describe return format or pagination, but for a read-only token lookup with annotations covering safety, a 3 is appropriate.

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

Conciseness5/5

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

Two short sentences with no waste. The first sentence states the resource and contents; the second explains the relationship to nodes, which is valuable context. Front-loaded and efficient.

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?

For a simple read-only tool with one fully documented parameter and annotations covering safety, the description is nearly complete. It explains what tokens are and how they are referenced, which is enough for an agent to decide to call it. The only minor gap is not describing the return shape, but no output schema exists and the tool is simple enough that this is not critical.

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 100%, so the schema already documents the single docId parameter. The description does not add parameter-level detail beyond the schema, but with full coverage the baseline 3 is correct.

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 states a specific resource ('design system tokens') and clarifies what it contains ('colors, text styles and effects'), which distinguishes it from document content or assets. It doesn't explicitly name a sibling it is not, but the resource is specific enough that an agent can tell it apart from vault_get_doc, vault_get_node, and vault_get_asset.

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?

The description implies usage context by explaining that nodes refer to tokens via 'text.token', which hints that this tool is for resolving token references. However, it does not explicitly state when to use this tool versus alternatives like vault_get_doc or vault_get_asset, nor does it provide exclusions.

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

vault_listList designsA
Read-only

Every exported document: docId, file and node name, export time, node count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds meaningful scope ('Every exported document') and the exact returned fields, which goes beyond the annotations. It does not mention ordering or pagination, but for a parameterless list operation the disclosed behavior is reasonably complete.

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

Conciseness5/5

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

The description is a single compact sentence that front-loads the scope ('Every exported document') and then lists the returned fields. Every word earns its place, with no filler or repetition.

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?

For a zero-parameter, read-only list tool, the description is largely sufficient: it identifies the full scope and the fields returned. It could be more complete by stating ordering, result count, or list shape, but the annotations and field enumeration cover the main needs.

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

Parameters4/5

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

The tool has zero parameters, and schema description coverage is effectively complete. There is no parameter semantics to add, so the baseline score of 4 applies.

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 states a specific verb ('List') and resource ('every exported document') and enumerates the returned fields (docId, file and node name, export time, node count), making the tool's purpose clear. However, it does not explicitly differentiate itself from sibling tools like vault_search or vault_get_doc, and the title 'List designs' introduces slight vocabulary ambiguity versus 'exported document'.

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

Usage Guidelines2/5

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

No guidance is given for when to choose this tool over alternatives such as vault_search, vault_get_doc, or vault_get_node. The phrase 'Every exported document' implies a list-all role, but there are no explicit usage conditions, exclusions, or routing hints. An agent must infer when to use it from sibling names and the fields listed.

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedvault_get_asset
    • First observedvault_get_doc
    • First observedvault_get_node
    • First observedvault_get_tokens
    • First observedvault_list
    • First observedvault_search

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: listing exports, fetching docs, fetching nodes, fetching tokens, searching, and fetching assets. No two tools overlap in purpose, and the descriptions clearly differentiate them.

Naming Consistency4/5

All tools follow a consistent 'vault_' prefix followed by a verb and optional noun (list, get_doc, get_node, get_tokens, search, get_asset). Slight deviation from a strict verb_noun pattern (e.g., 'vault_search' vs 'vault_get_*') but overall consistent and predictable.

Tool Count5/5

With 6 tools, the server is well-scoped and focused on the core needs of browsing and retrieving design data. Each tool serves a distinct purpose and none feel redundant or excessive.

Completeness4/5

The set covers listing, fetching, searching, and asset retrieval, which are essential for design document access. Minor gaps include lacking update/create operations, but since this appears to be a read-only export vault, the surface is largely complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    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
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI IDEs to query Figma design tokens, component specs, and audit issues via MCP tools, without cloud subscriptions.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Open-source, bidirectional Figma agent for MCP clients — a free alternative to Figma's Dev Mode MCP. Reads designs with high-fidelity grounding and writes back to the canvas: frames, text, auto-layout, styles, variables, and components. 92 tools, no API token, no paid Figma seat.
    100
    825
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local MCP server exposing Figma REST API tools to AI agents, enabling file reads, comments, variables, and other resource operations. Works with personal access tokens and integrates with Claude, Cursor, Codex, and more.
    MIT