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

fitfilesize-mcp

v0.2.0

Published

MCP server for FitFileSize: compress PDFs and images (including iPhone HEIC photos) to fit an upload limit, or a form's exact rules (US visa photo, Indian e-Visa, IBPS, SBI, RRB, IRCC).

Readme

FitFileSize MCP server

Let your AI assistant make a PDF or image fit an upload limit, or a form's exact rules, with FitFileSize.

"Make ~/Downloads/signature.jpg fit the IBPS signature rules"

Saved ~/Downloads/signature.fit.jpg for IBPS signature (JPEG, 140 × 60 pixels, 10 KB to 20 KB): 10,240 bytes (10.0 KB), under the 20,000 bytes limit.

  • Any limit: "get this scan under 300 KB", "this photo under 50 KB".
  • Form presets: US visa photo (DS-160), Indian e-Visa passport page and photo, IBPS, SBI and RRB uploads, IRCC documents. The preset sets the size limit, the minimum size and the exact pixels. Ask for list_forms to see them all.
  • Several files at once: "fit these five documents under 2 MB each".
  • Keeps as much quality as the limit allows, and saves the result next to the original as <name>.fit.<ext>. Every file keeps its format (a PNG stays a PNG) unless you say a JPEG is fine; iPhone HEIC photos come back as JPEG.
  • Free, no account, no API key. Files up to 50 MB.

Setup

Needs Node.js 20.10 or newer.

Claude Code

claude mcp add fitfilesize -- npx -y fitfilesize-mcp

Claude Desktop, Cursor, Windsurf and other clients that use an mcpServers config file:

{
  "mcpServers": {
    "fitfilesize": {
      "command": "npx",
      "args": ["-y", "fitfilesize-mcp"]
    }
  }
}

(Claude Desktop: Settings → Developer → Edit Config. Cursor: ~/.cursor/mcp.json.)

VS Code (.vscode/mcp.json):

{
  "servers": {
    "fitfilesize": { "command": "npx", "args": ["-y", "fitfilesize-mcp"] }
  }
}

Tools

fit_file

| Argument | | |---|---| | path | Full path to the file (~/ works). PDF, JPEG, PNG, WebP, TIFF, BMP or HEIC (returned as JPEG), up to 50 MB. | | paths | Instead of path: up to 10 files that share the same limit. Each is saved beside its original; one that fails is reported without stopping the rest. | | limit | The upload limit, like "200KB" or "1.5MB". KB and MB are 1000-based, so the result passes a check done either way. | | form | Instead of limit: a form preset from list_forms, like "ibps-photo". | | width, height | Optional exact pixel size, images only. | | fit | "crop" (default) or "pad" with white, when the pixel size changes the shape. | | minimum | Optional smallest size, like "10KB". A small JPEG is padded up to it; the picture is unchanged. | | jpeg_ok | Optional. true lets a PNG, WebP, TIFF or BMP come back as a JPEG when that is what fits. Off by default; when it would have helped, the result says so. | | output | Optional path for the result, with path only. |

list_forms

The form presets, each with its rules and the official source they come from. The list is read from fitfilesize.com/forms.json, so new forms appear without an update; a copy is bundled for when the site cannot be reached.

Privacy

The file is sent to FitFileSize's server over HTTPS, compressed there, and deleted as soon as the result is saved on your computer. Requests name the package and its version (fitfilesize-mcp/0.2.0), nothing about you. Nothing else leaves your machine. See the privacy page. Uploads count against the site's free limit of 30 an hour.

Development

npm install
npm test          # the tools through an MCP client, against a stand-in API
npm run build     # bundles the form presets from the website's data

FITFILESIZE_API points the server at another API, such as a local one (http://127.0.0.1:8000).

Licence

MIT, see LICENSE. This covers the MCP server in this folder; the rest of the FitFileSize repository is not open source.