FitFileSize

io.github.GautamstarPublished by GitHub account Gautamstarv0.2.1Updated Oct 24, 2026

Compress PDFs and images, iPhone HEIC too, to fit an upload limit or a form's rules.

VerifiedSTDIODesktop onlyFiles & StorageMedia & Design

Overview

AI-generated overview

Local MCP server that lets an assistant compress PDFs and images (including iPhone HEIC) to fit an upload limit or a form's exact rules.

What you can do
  • Compress a single PDF or image to a target size limit, or to an exact pixel size with crop or pad
  • Batch-fit up to 10 files that share the same limit, saving each result beside its original
  • Apply form presets such as visa photos, exam and bank uploads, IRCC documents or Discord emoji, including minimum sizes
  • List the available form presets with their rules and official sources
  • Keep each file's format unless JPEG output is explicitly allowed; HEIC photos come back as JPEG
When to use it
Useful when a document or photo must be uploaded to a portal, form or chat service with a strict size or pixel requirement, and you want the assistant to resize and compress it locally without manual editing.
Requirements
Node.js 20.10 or newer; runs locally via npx with no account or API key. Network access is needed because files are uploaded to the FitFileSize service for compression. Files up to 50 MB.
Before you install
Files are sent over HTTPS to FitFileSize's server for compression and deleted after the result is saved, so private documents leave the machine. Uploads count against a free limit of 30 per hour. Results are written as new files next to the originals, and batch runs can process up to 10 files at once.

Installation

In SourceWeft

  1. Open FitFileSize in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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, RRB, SSC, NEET, JEE Main, CUET and GATE uploads, IRCC documents, and Discord emoji, profile banners and message uploads. 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. Step-by-step setup with copy buttons: fitfilesize.com/claude.html.

Claude Code

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

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

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

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

VS Code (.vscode/mcp.json):

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

Tools

fit_file

Argument
pathFull path to the file (~/ works). PDF, JPEG, PNG, WebP, TIFF, BMP or HEIC (returned as JPEG), up to 50 MB.
pathsInstead 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.
limitThe upload limit, like "200KB" or "1.5MB". KB and MB are 1000-based, so the result passes a check done either way.
formInstead of limit: a form preset from list_forms, like "ibps-photo".
width, heightOptional exact pixel size, images only.
fit"crop" (default) or "pad" with white, when the pixel size changes the shape.
minimumOptional smallest size, like "10KB". A small JPEG is padded up to it; the picture is unchanged.
jpeg_okOptional. 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.
outputOptional 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.1), 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

bash
npm installnpm test          # the tools through an MCP client, against a stand-in APInpm 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.

Source: mcp/README.md at commit 307987b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v0.2.1LatestOct 18, 2026
  2. v0.2.0Sep 27, 2026
  3. v0.1.1Sep 26, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.