MCP.Market

Figsnap MCP server

by arimunandar·io.github.arimunandar/figsnap-mcp·v0.2.0

The Figma file you have open, as MCP tools. Extract, edit, and keep a saved set.

B78/100grade B
What users say
No reviews yet
Be the first
Safety scan
B78/100

full report

Adoption
New

0 stars37 downloads/wk

Reviews

Write one

Nobody has reviewed Figsnap yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Figsnap tools (41, 8 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • figma_apply_style

    Applies a paint, text or effect style from this file by id, from figma_list_library. The right way to make something "match": the layer follows the style afterwards, where a copied hex code does not.

  • figma_bind_variable

    Binds a variable from this file to a property, so the value follows the token rather than being a copy of it. Use "fill" or "stroke" for a colour variable; for a number use the property name, like cornerRadius, itemSpacing, paddingLeft, width or opacity.

  • figma_clone_node

    Copies a node, with everything inside it, into the same parent or one you name. The cheapest way to make a second row, card or list item that matches the first exactly.

  • figma_component_properties

    The properties a component, component set or instance has: the variants, and the text, boolean and instance-swap properties, with what this instance currently has them set to.

  • figma_create_ellipsewrite action

    Creates an ellipse. Equal width and height give a circle — an avatar, a dot, a radio button.

  • figma_create_framewrite action

    Creates an empty frame, on the current page or inside a parent you name. Returns the new node’s id so the next call can fill it.

  • figma_create_instancewrite action

    Creates an instance of a component in this file. Get the id from figma_list_library. Naming a variant set places its default variant. Prefer this over drawing a lookalike: an instance keeps its link to the component and updates with it.

  • figma_create_rectanglewrite action

    Creates a rectangle. The workhorse shape: dividers, bars, backgrounds, placeholders. Omit the fill for an empty one.

  • figma_create_svgwrite action

    Turns SVG markup into real Figma vectors — not an image, but editable paths in a frame. This is how to add an icon, a logo or any shape the other create tools cannot express. Extraction returns icons as SVG too, so a shape can be read out of one place and drawn into another unchanged.

  • figma_create_textwrite action

    Creates a TEXT layer with the words you give it. The font is loaded before anything is typed, and a font this machine does not have is refused rather than substituted. Give a width to make it wrap; without one it hugs its text.

  • figma_delete_nodewrite action

    Removes a node and everything inside it. One undo step, so the designer can take it back with a single Cmd-Z — but say what you are deleting before you do it.

  • figma_export_png

    Renders one node and returns the picture itself, so a model that can see gets to look at the design rather than read a description of it. Nothing is stored anywhere.

  • figma_extract

    The full extraction of one node: HTML measured against what Figma draws, byte-exact figmaCss, a React component, plain CSS and CSS modules. Images are inlined and icons come out as real SVG, so the HTML stands on its own. This is the tool that answers "what does this design actually say".

  • figma_find_nodes

    Finds layers by type, by name and by the words in them. Every filter is optional and they narrow together.

  • figma_get_children

    The direct children of one node, by id. The cheap way to explore a page a branch at a time.

  • figma_get_selection

    The layers the designer has selected on the canvas right now, with their ids, names, types and sizes. Start here when the request says "this", "the selected frame", or names nothing at all.

  • figma_get_tree

    The top-level layers of the page the designer is looking at. Increase depth to walk further down, but note that a deep page is thousands of rows: prefer figma_get_children on one branch.

  • figma_group

    group — puts nodeIds in a new group, inside the first one’s own parent. ungroup — dissolves a group or frame and returns the children it let go.

  • figma_insert_imagewrite action

    Places a PNG, JPG or GIF, passed as base64. With nodeId it becomes that layer’s fill, which is how a placeholder gets its picture; without one it arrives as a new rectangle at its own pixel size.

  • figma_ios_spec

    One node and its children as the properties Figma actually holds, in points: per-axis sizing, auto layout with its padding, stroke weight and alignment, corner smoothing, effects, the whole text block, and every fill and stroke marked with whether it is painted.

  • figma_list_library

    The components, styles and variables this file has, with the ids the other tools need. Read this before "make it match our button" or "use our brand colour" — instantiating the real component or binding the real variable is what makes a change survive contact with the design system, rather than a hex code that looks right today.

  • figma_list_saved

    The nodes the designer curated in the panel, by folder. A shortlist of what matters in this file, which is usually a better starting point than the whole page.

  • figma_move_node

    Moves a node into another parent, or to a different position among its siblings. Index 0 is the back of the canvas and the top of a layer list; leaving it out puts the node last.

  • figma_pages

    list — every page in the file, and which is current. open — switch to one, by pageId or by name.

  • figma_resolve_url

    Turns one or more Figma links into the nodes they name, without exporting anything.

  • figma_save_version

    Saves a named point in the file’s version history. Call this before a run that will change several things, so there is one place to fall back to that is not a stack of undos.

  • figma_saved

    Read and change the designer’s shortlist of nodes in this file, and the folders it is grouped into. One action argument:

  • figma_select

    Selects one or more layers and scrolls the canvas to them, so the designer is looking at whatever you are talking about. Use it before describing a node you found by walking the tree — pointing is faster than naming an id — and after an edit, so the change is on screen.

  • figma_set_auto_layout

    Turns auto layout on for a frame and sets its direction, spacing, padding and alignment. Pass mode "NONE" to turn it off. Only the properties you name are changed.

  • figma_set_bounds

    Sets position and size. Position is ignored inside an auto-layout frame, where the parent decides it — use figma_set_layout_sizing and the parent’s spacing there instead.

  • figma_set_corner_radius

    Sets one radius for every corner, or each corner on its own.

  • figma_set_effects

    Replaces a node’s effects with the list you give. An empty list clears them. Elevation in most design systems is a drop shadow, so this is what "make it look raised" means.

  • figma_set_fill

    Replaces a node’s fills with one solid colour, and answers with the colour read back off the node — so a write that did not land is visible without a screenshot. It replaces every fill the node had, which is worth knowing before pointing it at a gradient or a photograph; the answer names what was there. Borders are strokes, not fills: use figma_set_stroke for those. One call is one undo step, so t

  • figma_set_instance_properties

    Sets which variant an instance is, and the text and booleans its component exposes. Take the keys from figma_component_properties; a key given without its id suffix is matched anyway, and one that matches nothing is refused with the list of what does.

  • figma_set_layout_sizing

    How a child behaves inside an auto-layout frame: HUG shrinks to its contents, FILL stretches to the parent, FIXED keeps its size. This, not figma_set_bounds, is how widths are set inside auto layout.

  • figma_set_node_name

    Renames a layer. Layer names are what the generated code turns into class names, so tidying them is a real change and not cosmetic.

  • figma_set_stroke

    Replaces a node’s strokes with one solid colour, and optionally sets the stroke weight. Pass remove: true to take the stroke off entirely. Borders in Figma are strokes, not fills — a row outline or an icon drawn as an outline needs this rather than figma_set_fill.

  • figma_set_text

    Replaces the text of one TEXT node. The font is loaded first; a layer whose font is missing from this machine is refused rather than silently retyped in a substitute.

  • figma_set_text_style

    Font, size, line height, letter spacing, alignment and colour, on a TEXT layer. Only what you name is changed. Prefer figma_apply_style where the file has a text style for it — a named style survives a redesign and a hard-coded 14px does not.

  • figma_set_visibility

    Sets opacity, visibility and lock. Hidden layers are skipped by extraction, which is often the point.

  • figsnap_skill

    Whether this project has the figsnap skill installed, and the skill itself when it does not.

Public scan report

scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it

no findings
  • Code scan15 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 39 days ago12/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 78/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Figsnap compares

Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
78/100
higher than 52% of 866 Scraping and browsing servers
Tools
41
the typical Scraping and browsing server has 6
Tools that change things
20%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
37
more than 18% of 309 Scraping and browsing servers with a package

What its tools let an agent do: 33 read · 8 change

Install Figsnap in Claude Code, Cursor or VS Code

Runs npx -y figsnap-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add figsnap-mcp -- npx -y figsnap-mcp
Add to Cursor

What the publisher says

From the Figsnap repository's README, as published. We do not edit it. Read it on GitHub

Figsnap MCP

The Figma file you have open, as MCP tools — and nothing else.

claude mcp add figsnap-mcp -s user -- npx -y figsnap-mcp

Those install the MCP server. It answers nothing until the daemon is running and the Figma plugin is open — see Getting it running, which is five steps and takes about two minutes.

A Figma plugin, a local daemon, and an MCP server. Your coding agent reads the design, extracts a node as PNG, React, HTML or CSS, edits the canvas when you allow it, and shares a saved set of components with you. No relay, no account, no network beyond loopback.

MCP client              figsnap-mcp              daemon                 the plugin
  (Claude Code)   stdio    (stateless      HTTP :3058       ws         (open in Figma)
       ─────────────────►   proxy)          ──────────►   /panel   ──────────►   figma.*
                                            127.0.0.1 only

Three processes and one rule: figma.* exists only while the plugin is open, so the plugin holds the connection and everything else asks questions down it.

What this is not

This repo is a derivative of Figsnap, cut down to one job. Figsnap ships four products from one package.json — the plugin, a Cloudflare Worker relay with accounts, an ACP chat client, and this MCP server. If all you want is MCP tools and a saved set, you had to clone all of it, build a 4,200-line panel you would never open, and load a plugin whose manifest whitelists a Worker you would never sign in to.

So: no ACP client, no harness discovery, no session store, no relay, no accounts, no chat, no API browser, no code-export UI. What is left is the extraction engine, the 41 tools, and a panel with three panes.

Figsnap is not modified by any of this, and the two can run side by side — this daemon is on port 3058 with its token in ~/.figsnap-mcp/agent-token, where Figsnap's is on 3056 with its token in ~/.figsnap/agent-token.

One caution on that manifest: Figma validates allowedDomains and refuses an IP literal — Invalid value for allowedDomains. 'ws://127.0.0.1:3058' must be a valid URL — and a manifest it refuses is a manifest it does not load, so the plugin quietly keeps running the last good one. Name localhost, and check the console after any change here, because nothing else reports it.

They are kept apart in Figma too. clientStorage is keyed by plugin id, so the manifest carries an id of its own rather than Figsnap's REPLACEONPUBLISH, and every key this plugin writes is prefixed figsnap-mcp: on top of that. Sharing either one means sharing the stored daemon address, and a panel that inherits ws://localhost:3056 is then blocked by its own manifest's CSP — with a console error the designer never sees. The panel also refuses any stored or typed address outside the port its manifest allows, and drops the token that came with it.

Install

npm install -g figsnap-mcp

Two commands come with it:

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Figsnap: common questions

Is Figsnap MCP server safe?
Mostly: it is graded B (78/100). Read the Figsnap safety report
How do I install Figsnap?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Figsnap need an API key?
Yes. The registry entry asks for FIGSNAP_MCP_TOKEN.
Is Figsnap maintained?
The last commit was 58 days ago (2026-09-07). The latest release is v0.2.0.
What can I use instead of Figsnap?
Servers from other publishers that do the same job: Nutrient Document Engine MCP Server, Plumb MCP server and Numbers-LE MCP server.
How does Figsnap compare with other Scraping and browsing MCP servers?
safety score 78/100 (higher than 52% of 866 Scraping and browsing servers); tools 41 (the typical Scraping and browsing server has 6); tools that change things 20% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Figsnap

Same job from other publishers: the closest match first, then the best rated.

  • Nutrient Document Engine MCP Server
    MCP server for self-hosted Nutrient Document Engine: extract, edit, redact, and annotate documents.
    B
  • Plumb
    Two-way Figma MCP: extract + verify design-to-code, or generate on-brand Figma pages from a prompt.
    C
  • Numbers-LE
    Extract numeric values from config files, data files and plain text.
    A
  • Next AI Draw.io
    draw.io diagrams your AI agent draws on a live browser canvas that you can also edit by hand
    A
  • Brightdata
    Bright Data's Web MCP server enabling AI agents to search, extract & navigate the web
    B