Skip to content

Releases: ezpzfile/ezpzfile-mcp

v0.3.3

Choose a tag to compare

@ezpzfile ezpzfile released this 12 Sep 11:51

Wording and packaging metadata. No tool behaviour changed.

What this reads like to someone new

Every description started with documents (HWP, HWPX, DOCX, PDF, EML). Directories that list MCP servers reproduce that line, and read straight down it says Korean-only tool. DOCX and PDF are what most people arrive with. HWP stays exactly where it was in the code, it just stops going first in the sentence.

The line changed in five places: package.json, server.json, both READMEs, and the tool descriptions themselves. The tool descriptions are the ones that matter most, because a directory reads tools/list off the running server, so the first word of doc_read is the first thing anyone sees on that page.

Node 22.13

engines now says >=22.13.0. pdfjs-dist@6.3.289 requires it, so installing on Node 20 has been printing EBADENGINE. Claiming 20 was wrong rather than generous.

Also in here

0.3.2 was tagged but never published to npm, so its fix arrives with this one: the handshake announces the version that was actually published, injected from package.json at build time instead of typed into the source. test/protocol.mjs now checks that before anything else, and expects six tools rather than the seven it still thought existed.

Install

claude mcp add ezpzfile -- npx -y ezpzfile-mcp

Everything runs on your machine. Background removal fetches a 4.4MB model and a 14MB runtime on the first cut-out and caches them under ~/.cache/ezpzfile-mcp. Nothing else touches the network, and no file ever leaves your computer.

v0.3.2

Choose a tag to compare

@ezpzfile ezpzfile released this 12 Sep 10:24

A fix release. No tool behaviour changed.

The version the server announces

0.3.1 introduced itself as 0.2.2 over the MCP handshake:

{"result":{"serverInfo":{"name":"ezpzfile","version":"0.2.2"}}}

The string was spelled out by hand in src/index.ts and two releases went past it without moving it. build.mjs now reads package.json and injects the value at build time, so there is no longer a place to forget.

Why nothing caught it

test/protocol.mjs still expected seven tools. That has been wrong since archive_extract left in 0.3.0, so the test threw on its first assertion and never reached anything else. Both are fixed, the archive_extract calls are gone, and the test now compares the announced version against package.json before it does anything else.

Background removal downloads 18MB on its first run, so it stays out of the default test run. EZPZ_TEST_MATTE=1 includes it.

Install

claude mcp add ezpzfile -- npx -y ezpzfile-mcp

Everything runs on your machine. Background removal fetches a 4.4MB model and a 14MB runtime on the first cut-out and caches them under ~/.cache/ezpzfile-mcp. Nothing else touches the network, and no file ever leaves your computer.

v0.3.1

Choose a tag to compare

@ezpzfile ezpzfile released this 12 Sep 08:11

No code changed in this release. mcp/dist/index.js is byte for byte what 0.3.0 shipped.

The registry

package.json now carries mcpName: io.github.ezpzfile/ezpzfile. The MCP registry reads that field off the published npm package to confirm the package and the GitHub account are the same hands, so listing is not possible without it, and the prefix has to be io.github.<account>/ for the check to pass. mcp/server.json holds the matching entry for the listing itself.

npm will not take the same version twice, which is the only reason the number moved.

The front page

The repository used to open with the monorepo folder table. That is what someone who has already decided to install wants; it is not what someone still deciding needs. What this is, how to install it and what it saves now come first, with the measured A/B table and the chart from the site.

Those numbers are generated from src/data/mcpBenchmark.ts, the same file the website reads, rather than typed in by hand. One measurement, one place to change it.

Install

claude mcp add ezpzfile -- npx -y ezpzfile-mcp

Everything runs on your machine. Background removal fetches a 4.4MB model and a 14MB runtime on the first cut-out and caches them under ~/.cache/ezpzfile-mcp. Nothing else touches the network, and no file ever leaves your computer.

v0.3.0

Choose a tag to compare

@ezpzfile ezpzfile released this 12 Sep 06:10

image_edit gains a fifth operation, remove_background, running the same U²-Net model the website runs. It writes a PNG with the subject on transparency, or on a colour if you pass background.

archive_extract is gone. An agent already has unzip and tar in its shell, and a tool definition sits in the model's context for every conversation, so spending one on a job the shell already does gives back the tokens this server exists to save. Archives with garbled file names are still worth solving, and ezpzfile.com now opens ZIP, 7z, RAR, tar, gz, xz and bz2 while working out the file name encoding itself.

Six tools remain: doc_read, doc_convert, pdf_edit, pdf_info, image_edit, qr_make.

Fixes

  • Page numbers that do not exist are refused. extract with pages: [99] on a one page PDF used to return success and write an empty file.
  • sharp is loaded on first use. A broken native build used to throw before initialize and take every tool down with it, including the ones that never touch a pixel.
  • Relative paths are refused. The server's working directory belongs to whatever launched it, not to you.
  • qr_make returns the size you asked for. 512 used to come back as 528.
  • protect no longer pays for compiling the qpdf wasm on its first call. 232ms to 88ms.

Install

claude mcp add ezpzfile -- npx -y ezpzfile-mcp

The background removal model (4.4MB) and the onnxruntime wasm (14MB) are downloaded on the first cut-out and cached under ~/.cache/ezpzfile-mcp, once per machine. Nothing else touches the network, and no file ever leaves your computer.