npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@scalably-io/figma-mcp

v1.0.1

Published

Figma MCP: list frames in a file and fetch one frame's JSON and image safely. 2 tools.

Readme

Figma MCP

Figma REST API MCP server. 2 tools list the top-level frames in a file and fetch one frame's rendered PNG plus its node JSON and image-fill map into a local output directory.

Install

Claude Code:

claude mcp add figma -e FIGMA_TOKEN=your-token -- npx -y @scalably-io/figma-mcp

Codex:

codex mcp add figma --env FIGMA_TOKEN=your-token -- npx -y @scalably-io/figma-mcp

Claude Desktop: download figma-mcp.mcpb from the latest GitHub release and open it.

Setup

  1. Create a personal access token at figma.com under account settings, with file_content:read scope.
  2. Find the file key in any Figma file URL: it is the segment after /design/ or /file/, for example https://www.figma.com/design/AbC123xyz/My-file gives AbC123xyz. Both tools take it as file_key.
  3. If FIGMA_TOKEN is not set the server still starts and lists its tools; every call then fails with FIGMA_NOT_CONFIGURED until the token is provided.
  4. fetch_frame is the only tool that writes files (so it is not marked read-only); it writes frame.png, node.json, and fills.json into a directory below the configured output root (default ./figma-output). The other tool is fully read-only.

Tools (2)

| Tool | What it does | |---|---| | list_frames | List and optionally filter all top-level FRAME nodes in a Figma file, with exact page/name/node-id data, dimensions, and file metadata | | fetch_frame | Fetch one Figma frame and transactionally write frame.png, node.json, and a normalized image-fill map into a directory below the output root |

Configuration

| Variable | Required | Purpose | |---|---|---| | FIGMA_TOKEN | yes | Figma personal access token with file_content:read | | FIGMA_API_BASE_URL | no | Override the Figma REST API base URL (default https://api.figma.com/v1) | | FIGMA_REQUEST_TIMEOUT_MS | no | Per-request timeout in milliseconds (default 60000) | | FIGMA_MAX_JSON_BYTES | no | Upper bound on a Figma JSON response, in bytes (default 104857600) | | FIGMA_MAX_FRAME_BYTES | no | Upper bound on a downloaded frame PNG, in bytes (default 104857600) | | FIGMA_OUTPUT_ROOT | no | Directory that every fetch_frame output directory must stay below (default ./figma-output, created on first use) | | FIGMA_ALLOW_HTTP_FOR_TESTS | no | Test suite only: 1 allows a plain-HTTP loopback API base. Never set it in normal use |

Reply shape

Every tool returns plain JSON with status (succeeded, partial, no_op), summary, target, result, proof, warnings, recovery. Failures throw a plain error string: <code>: <message> <hint>.

Limits

fetch_frame renders through Figma's image API, so very large frames or extreme scale values can exceed the configured JSON or frame byte limits; lower scale or split the frame if that happens. fills.json URLs are temporary and expire within 14 days.

Verify

Each release lists the package version, the .mcpb sha256 and the production commit it was derived from in CHANGELOG.md. CI runs the tests and a clean install of the packed tarball on every push.

Privacy Policy

This server runs locally, on your machine, under your own credentials. It collects no personal data, contains no telemetry, stores nothing persistently beyond the frame bundles you explicitly fetch, and talks only to the vendor API it wraps. No third party, including Scalably, receives your data. Contact: [email protected]. Canonical copy: https://scalably.io/connector-privacy.html

License

MIT. Copyright Scalably.