Convert, resize, crop, filter & composite images via the imgcli CLI (lightweight, no deps)
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
ImageMagick's power, ffmpeg's syntax, zero dependencies. A tiny C binary that converts, resizes, crops, filters, and composites images β PNG, JPEG, BMP, TGA, GIF, PPM, QOI β driven by an ffmpeg-style filtergraph. No system libraries; compiles anywhere a C11 compiler exists.
β‘ ~8Γ faster than ImageMagick on common resize/filter ops, in a 232 KB single binary (~470Γ smaller) β see the benchmarks. A lightweight alternative to ImageMagick
convertorffmpegfor still images.

What it does: format conversion Β· resize / scale Β· crop Β· pad Β· rotate Β· flip Β· brightness / contrast / saturation / gamma / hue Β· grayscale Β· sepia Β· invert Β· threshold Β· box & Gaussian blur Β· sharpen Β· Sobel edge detect Β· emboss Β· custom convolution kernels Β· alpha-composite overlay Β· draw boxes Β· solid fills.
Design: the same paradigm as ffmpeg β decode β normalize to one common frame format (RGBA) β run a comma-separated filtergraph β encode by output extension.
imgcli vs ImageMagick on an Apple Silicon Mac (single-threaded, warm cache).
Reproduce with make && bench/bench.sh β see bench/RESULTS.md
for the full method and caveats.
| Operation | imgcli | ImageMagick | speedup |
|---|---|---|---|
| PNGβJPEG + resize (one-shot) | 1.6 ms | 4.7 ms | 2.9Γ |
| Resize 1200Γ1200 β 300w | 6.0 ms | 51.6 ms | 8.6Γ |
| Grayscale 1200Γ1200 | 48.4 ms | 389 ms | 8.0Γ |
| Footprint | imgcli | ImageMagick |
|---|---|---|
| Install size | 232 KB | ~109 MB (β470Γ larger) |
| Dependencies | 0 (libc only) | 17 packages |
ImageMagick is a far broader 16-bit/HDRI toolkit with 200+ formats; imgcli is a lean 8-bit pipeline that wins on speed, size, and startup β the shape that matters when an agent or script spawns one process per task.
The default build is dependency-free β a single binary that links only the
system C library (libc). Decoding/encoding is handled by the bundled,
public-domain stb and
qoi single-header libraries, compiled
directly in. Nothing to apt install, no shared libraries, no version hell.
make WEBP=1) that link those libraries.The "zero dependencies" claim applies to the default build, and always will β opt-in format libraries are never compiled into it. A build that enables such a flag is, by definition, no longer dependency-free, and that trade-off is stated at the point you opt in.
| ffmpeg concept | imgcli equivalent |
|---|---|
AVFrame / pixfmt | every image is normalized to packed 8-bit RGBA (Image) |
| demuxer/decoder | img_load via vendored stb_image (PNG/JPEG/BMP/TGA/GIF/β¦) |
-vf filtergraph | name=a:b:c, name, β¦ chain parsed in filters.c |
AVFilter | each filter mutates or replaces the current frame |
| muxer (by extension) | img_save (png/jpg/bmp/tga + a hand-written PPM writer) |
lavfi test sources | testsrc=, color=, gradient=, checker= generators |
Codecs come from the public-domain stb
single-header libraries (third_party/). They're bundled, not linked, so the
tool stays portable and self-contained while still reading/writing the formats
the world actually uses β the same trade-off ffmpeg makes by leaning on codec
libraries instead of reinventing them.
An MCP server wraps imgcli so AI agents can
call convert_image, probe_image, and list_filters directly β see
mcp/.
Colours accept #rgb, #rrggbb, #rrggbbaa, 0xβ¦, r-g-b[-a], or names
(red, white, transparent, β¦). No commas, so they're safe inside a graph.
Geometry β scale=W:H[:nearest|bilinear|bicubic|lanczos] (-1 keeps aspect;
bicubic/lanczos are high-quality separable resamplers that anti-alias on
downscale and stay sharp on upscale β bilinear is the default),
crop=W:H[:X:Y], pad=W:H[:X:Y[:color]], hflip, vflip,
transpose=90|180|270, rotate=DEG[:color] (arbitrary angle, canvas expands).
Colour β grayscale, invert, sepia, solarize, brightness=V, temperature=V,
contrast=V, saturation=V, gamma=V, hue=DEG, threshold=V, opacity=V, tint=color.
Convolution β blur=R (box), gblur=SIGMA (separable Gaussian),
sharpen[=AMOUNT], edge (Sobel), emboss, convolution=K[:DIV:BIAS]
(custom NΓN kernel, e.g. convolution=0 -1 0 -1 5 -1 0 -1 0).
Composite / draw β overlay=X:Y[:INDEX] (alpha "over" compositing of
another -i input), fill=color, drawbox=X:Y:W:H:color[:fill|thickness].
imgcli is built to be a reliable tool in an automated pipeline: one self-contained binary, no dependencies, deterministic, non-interactive, and machine-readable. See AGENTS.md for a token-economical recipe sheet.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/imgcli)<a href="https://allmcps.com/mcp/imgcli"><img src="https://allmcps.com/api/badge/imgcli?style=directory" alt="Imgcli on AllMCPs" /></a>