Back to Browse

Imageport MCP Server

Developer ToolsUse Caution4.6MCP RegistryLocal
Free

Server data from the Official MCP Registry

Local image tools via ImageMagick: metadata, resize, convert, crop, rotate.

About

Local image tools via ImageMagick: metadata, resize, convert, crop, rotate.

Security Report

4.6
Use Caution4.6High Risk

imageport is a local ImageMagick wrapper with no network calls, no hardcoded secrets, and no shell execution; it uses execFile with argument arrays and validates the convert format against an allowlist. The main concern is that input and output paths are passed to ImageMagick without validation, so a path beginning with a dash or using ImageMagick's special syntax could be interpreted as an option or coder rather than a file, and the tools can read or write any path the user can access. Supply chain analysis found 4 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.

8 files analyzed · 9 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

process_spawn

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cloudcorprecords-imageport": {
      "args": [
        "-y",
        "@reneturcios/imageport"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

imageport

imageport does local image work with ImageMagick. It reads an image file's metadata — format, dimensions, color space, file size — resizes an image while preserving its aspect ratio, converts between the common web and print formats (png, jpg, webp, gif, avif, bmp, tiff), crops a rectangle out of an image, and rotates by an angle in degrees. Every operation is plain local file processing: there is no image generation, no hosted AI, and no network call anywhere in this package.

All five tools build ImageMagick argument arrays and run them through one injectable executor. The default executor spawns convert and identify with node:child_process execFile — argument arrays, never a shell string — so a host needs ImageMagick installed. When the binaries are absent, the spawn error (for example ENOENT) is surfaced as the tool error, honestly; nothing is faked. The unit tests exercise the same core through a fake executor that records the argument arrays, so they need no ImageMagick at all.

One behaviour worth knowing up front: ImageMagick decides the output format from the output file's extension, so convert_image replaces the requested output path's extension with the target format whenever the two differ (converting photo.png to webp writes photo.webp), and the result reports that effective path.

Install

npx -y @reneturcios/imageport mcp

Or run the container image (note: the container bundles no ImageMagick, so it passes MCP initialize / CLI usage smoke only — run on a host with ImageMagick installed for real work):

docker run -i ghcr.io/cloudcorprecords/imageport

CLI

imageport metadata <input>
imageport resize <input> <output> [--width n] [--height n]
imageport convert <input> <output> <format>
imageport crop <input> <output> <width> <height> <x> <y>
imageport rotate <input> <output> <angle>
imageport mcp
imageport --version

Examples:

imageport metadata photo.png
imageport resize photo.png photo-small.png --width 800
imageport convert photo.png photo-out.png webp   # writes photo-out.webp
imageport crop photo.png tile.png 200 200 40 60
imageport rotate photo.png photo-upright.png 90

Each command prints its result as JSON. Exit codes: 0 on success, 1 when ImageMagick fails (including when it is not installed), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

npx -y @reneturcios/imageport mcp

MCP client configuration:

{
  "mcpServers": {
    "imageport": {
      "command": "npx",
      "args": ["-y", "@reneturcios/imageport", "mcp"]
    }
  }
}

Tools

ToolInputWhat it does
get_image_metadatainput (required)Reads format, width, height, color space, and file size via identify.
resize_imageinput, output (required); width, height (at least one)Resizes preserving aspect ratio via convert -resize.
convert_imageinput, output, format (required)Converts to png, jpg, webp, gif, avif, bmp, or tiff; the output extension is replaced with the format when it differs.
crop_imageinput, output, width, height, x, y (required)Crops a width x height region at offset x, y via convert -crop ... +repage.
rotate_imageinput, output, angle (required)Rotates by angle degrees via convert -rotate.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, fake executor, no ImageMagick needed
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!