pictor-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PICTOR_GPU | No | GPU acceleration mode: auto, off, or torch. | off |
| U2NET_HOME | No | Directory where background removal models are stored or pre-seeded. | |
| PICTOR_HOST | No | Host interface to bind for HTTP transports. | 127.0.0.1 |
| PICTOR_PORT | No | Port for HTTP transports. | 8077 |
| PICTOR_BG_MODEL | No | Background removal model to use with the ML image (e.g., u2net). Downloaded on first use if not baked in. | |
| PICTOR_TRANSPORT | No | Transport protocol: stdio, streamable-http, or sse. Defaults to streamable-http in Docker. | stdio |
| PICTOR_AUTH_TOKEN | No | Bearer token for HTTP authentication. Required for HTTP once reachable off-host. Minimum 16 characters. | |
| PICTOR_MAX_PIXELS | No | Per-frame decompression-bomb ceiling in pixels. | 64000000 |
| PICTOR_URL_SECRET | No | Secret for signing generated file URLs. Required if PICTOR_SERVE_OUTPUTS=true and PICTOR_AUTH_TOKEN is not set. | |
| PICTOR_ENABLE_HSTS | No | Enable HTTP Strict Transport Security when behind TLS termination. | false |
| PICTOR_INPUT_ROOTS | No | Comma-separated list of allowed read roots (absolute paths). | /data |
| PICTOR_OUTPUT_ROOT | No | The only writable directory for outputs. Must not overlap an input root. | /data/output |
| PICTOR_ALLOWED_HOSTS | No | Comma-separated list of allowed Host headers when exposed beyond localhost. | |
| PICTOR_JSON_RESPONSE | No | Use JSON responses instead of SSE streams for better compatibility with some clients. | false |
| PICTOR_SERVE_OUTPUTS | No | Enable signed URLs for generated files. | false |
| PICTOR_STATELESS_HTTP | No | Use stateless HTTP mode for best client compatibility. | true |
| PICTOR_STRIP_METADATA | No | Strip EXIF/GPS/ICC metadata from outputs. | true |
| PICTOR_ALLOWED_ORIGINS | No | Comma-separated list of allowed Origin headers for browser-based clients. | |
| PICTOR_ALLOW_NET_FETCH | No | Enables URL inputs, with SSRF guard. | false |
| PICTOR_HTTP_ACCESS_LOG | No | Enable uvicorn access log. Off so signed URLs are not written to logs. | false |
| PICTOR_MAX_CONCURRENCY | No | Maximum number of concurrent operations. | 4 |
| PICTOR_PUBLIC_BASE_URL | No | External base URL for generated file links when behind a reverse proxy. | |
| PICTOR_URL_TTL_SECONDS | No | Lifetime of signed generated file URLs. | 3600 |
| PICTOR_OP_TIMEOUT_SECONDS | No | Cooperative timeout for operations, checked between pipeline steps. | 120 |
| PICTOR_MAX_ANIMATION_PIXELS | No | Ceiling on width × height × frames for animations. | 128000000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| image_capabilitiesA | Report what this image server can do: supported formats, available operations, resource limits, security posture, and whether GPU acceleration is active. Call this first when you are unsure which formats or features are available. |
| image_infoA | Read an image's metadata without modifying it: dimensions, format, colour mode, animation frames, EXIF, perceptual hashes and dominant colours. |
| image_convertB | Convert an image between formats (JPEG, PNG, WebP, AVIF, TIFF, GIF, BMP, ICO, JPEG 2000, QOI, PPM), controlling quality, losslessness and metadata. |
| image_resizeB | Resize by width, height, percentage, or to fit a box. Supports contain, cover, fill, inside, outside and pad fit modes, all resampling filters, and optional format change. |
| image_compressA | Reduce an image's file size, either by a quality level or by searching for the best quality that stays under a target size. Reports the exact saving achieved. |
| image_cropA | Crop by explicit pixel box, by aspect ratio with a gravity anchor, or auto-trim a uniform border. |
| image_rotateA | Rotate by any angle, mirror horizontally or vertically, and/or apply the EXIF orientation so the pixels match what a viewer shows. |
| image_thumbnailB | Produce a thumbnail of an exact size, choosing the crop by saliency (attention or entropy) instead of blindly taking the centre. |
| image_transformA | Run several operations in one call, in order. Prefer this over chaining single-step tools: it transfers the image once and applies every step server-side. Operations: auto_orient, resize, crop, rotate, flip, sharpen, blur, smart_crop, watermark_text, watermark_image, background_remove, feather. |
| image_watermarkA | Add a text or image watermark with position, opacity, rotation and optional tiling. Supply either 'text' or 'watermark_path'. |
| image_background_removeA | Make the background transparent. method='color' keys out a flat border colour (instant, offline, best for product/logo shots); method='ml' uses a U^2-Net model for arbitrary backgrounds; method='auto' picks ML when the model is installed. |
| image_batchA | Run the same operation list across every image in a directory, a glob, or an explicit list of paths. Each file is independent: a failure is reported per file and does not abort the run. Use a {name} placeholder in output_name for per-file suffixes. |
| image_compareA | Measure how different two images are: SSIM, RMSE, PSNR, mean and max pixel difference, the fraction of changed pixels, and perceptual-hash distance. Use it to verify a transform or to spot duplicate images. |
| image_optimize_webA | Turn one source image into a set of web-ready variants at several widths, each optionally constrained to a maximum file size, plus a tiny blurred placeholder and a ready-to-paste srcset. This is the one call to use for 'make this web-ready'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Several single-step tools overlap heavily with image_transform, which already supports resize, crop, rotate, watermark, and background removal. An agent deciding between image_resize and image_transform with a resize operation, or between image_thumbnail and image_resize, will face real ambiguity. A few tools like image_info and image_compare are distinct, but the manipulation subset is not clearly delineated.
All tools share the image_ prefix and use lower_snake_case, giving the set a coherent visual pattern. The second part is usually a verb (resize, convert, compress, crop, rotate, compare), though a few nouns appear (capabilities, info, thumbnail, watermark, batch). This is a minor deviation rather than a chaotic mix.
Fourteen tools is on the higher end but still believable for a general-purpose image manipulation server. The count is justifiable given the range of operations, batch processing, web optimization, and comparison features. It is not bloated, though the redundancy with image_transform makes the number feel slightly larger than necessary.
The surface covers a full image lifecycle: inspect, resize, crop, rotate, convert, compress, watermark, remove backgrounds, batch-process, compare, and produce web-ready output. It also includes capabilities reporting and metadata extraction, so there are no obvious dead ends or missing core operations. The composite transform fills in extra operations like sharpen, blur, and feather.