theluckystrike McpStamp Image Tools MCP
An MCP server providing image manipulation capabilities including resizing, converting formats, compressing, cropping, generating thumbnails, stripping EXIF/GPS metadata, and adding watermarks. It supports both local installation via npm and hosted access via a token-based URL, operating without requiring account creation or email for the free tier.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.zovo.one/mcp/imageWhat its tools do
15 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Resize product photos to specific dimensions for online shops
- Compress and convert images to JPEG to reduce file size
- Strip GPS and camera metadata from images before posting
- Generate thumbnails for web-ready image batches
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- mcp-image 0.22.6
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 15 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
15 advertised
image_info — Inspect an image
Call this tool to inspect an image: format, pixel dimensions, megapixels, file size in bytes, and whether it carries an alpha channel. Read-only, never modifies the file. Free tier: unlimited, any size.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_resize — Resize an image
Call this tool to write a resized copy. fit inside keeps aspect; cover fills and crops; exact stretches. One of width/height alone keeps aspect. Input untouched. Free: sources up to 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"out_path"
],
"properties": {
"fit": {
"enum": [
"inside",
"cover",
"exact"
],
"type": "string",
"default": "inside",
"description": "inside = fit within the box, cover = fill and crop, exact = stretch"
},
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"width": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Target width in pixels"
},
"height": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Target height in pixels"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_convert — Convert an image to another format
Call this tool to re-encode an image as PNG, JPEG, BMP, GIF or TIFF. quality is JPEG-only. Transparency converted to JPEG flattens onto white; the answer says so. Free tier: sources up to 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"format",
"out_path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"format": {
"enum": [
"png",
"jpeg",
"bmp",
"gif",
"tiff"
],
"type": "string",
"description": "The output format"
},
"quality": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "JPEG quality 1-100, default 80. Ignored for the other formats"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_compress — Compress an image
Call this tool to re-encode an image smaller and report byte counts before/after. quality (default 80) applies to JPEG; for PNG only max_width shrinks it, and the answer names which one worked. Free: sources up to 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"out_path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"quality": {
"type": "integer",
"default": 80,
"maximum": 100,
"minimum": 1,
"description": "JPEG quality 1-100, default 80"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"max_bytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1024,
"description": "Largest the output may be, in bytes. The server searches JPEG quality down from `quality` until it fits and reports the quality it used. JPEG output only"
},
"max_width": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Scale down so the width is at most this, keeping the aspect ratio. Never scales up"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_crop — Crop an image
Call this tool to cut a rectangle out of an image. x, y are the top-left corner in pixels from the image's top-left. A rectangle past an edge is refused with the image's real size, not clamped. Free: sources up to 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"x",
"y",
"width",
"height",
"out_path"
],
"properties": {
"x": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Left edge of the crop, in pixels from the left of the image"
},
"y": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Top edge of the crop, in pixels from the top of the image"
},
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"width": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Width of the crop in pixels"
},
"height": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Height of the crop in pixels"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_thumbnails — Make thumbnails
Call this tool to write one thumbnail per input into out_dir as <name>-thumb.<ext>, fit inside size by size, aspect kept. Paths are reserved before writing, so a collision leaves nothing half-done. Free: 5/call, 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"paths",
"out_dir"
],
"properties": {
"size": {
"type": "integer",
"default": 256,
"maximum": 10000,
"minimum": 8,
"description": "Longest side of the thumbnail in pixels, default 256"
},
"paths": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Names of images uploaded with image_upload"
},
"out_dir": {
"type": "string",
"description": "Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignored"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_watermark — Watermark an image with text
Not available on this hosted endpoint: the watermark is drawn with bitmap font files loaded from a filesystem, which this endpoint does not have. Watermark on a local install instead - download image.mcpb from https://github.com/theluckystrike/mcp-servers/releases/latest and open it in Claude Desktop - or upload an image you have already watermarked.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"out_path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"text": {
"type": "string",
"description": "The watermark text. Default: the business name from the shared profile. Custom text is Pro"
},
"opacity": {
"type": "number",
"default": 0.5,
"maximum": 1,
"minimum": 0.05,
"description": "0.05 to 1, default 0.5"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"position": {
"enum": [
"bottom-right",
"bottom-left",
"bottom-center",
"top-right",
"top-left",
"top-center",
"center"
],
"type": "string",
"default": "bottom-right",
"description": "Where to draw it"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_strip_metadata — Strip metadata from an image
Call this tool to write a copy carrying pixels and nothing else: it decodes and re-encodes from raw pixels, so EXIF, GPS, camera, capture time, XMP and colour-profile data are dropped. Free tier: sources up to 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"out_path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"out_path": {
"type": "string",
"description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_batch_resize — Resize several images at once
Call this tool to resize every image in paths at once, keeping aspect ratio, each named <name>-<W>x<H>.<ext>. One of width/height lets the other follow; with both, each fits inside the box. Free: 5 files a call, 4 MP.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"paths",
"out_dir"
],
"properties": {
"paths": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Names of images uploaded with image_upload"
},
"width": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Target width in pixels"
},
"height": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Target height in pixels"
},
"out_dir": {
"type": "string",
"description": "Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignored"
},
"overwrite": {
"type": "boolean",
"description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_dominant_colors — Read the dominant colours of an image
Call this tool to read the colours covering most of an image, as hex codes with each one's pixel share. Sampled from a 200 px copy, so cost is fixed. Read-only. Free gives the top 3; Pro up to 16.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
},
"count": {
"type": "integer",
"default": 5,
"maximum": 16,
"minimum": 1,
"description": "How many colours to report, default 5"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}license_status — License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_activate — Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "License key from checkout, MCPL1.<payload>.<signature>"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}image_upload — Upload an image to work on
Send an image to this hosted endpoint. There is no filesystem here, so instead of a path you upload the file once with image_upload and then pass its name as `path` (or inside `paths`) to image_info, image_resize, image_convert, image_compress, image_crop, image_thumbnails, image_batch_resize and image_dominant_colors. PNG, JPEG, BMP, GIF and TIFF are accepted and the format is read from the file's magic bytes, not from the name. Give exactly one of image_base64 or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): writing out a real photo as base64 is a long tool call and 50 KB or more can stall the turn before the upload is sent, while a url costs one line and the fetch happens here (10 second timeout, at most 3 redirects, public http(s) hosts only, 2 MB cap). Uploads are kept for your token between calls; image_files lists them and image_delete_upload removes one. A file this server writes is named the same way and comes back as a download link valid for one hour, served with the real image content type. The request body cap is 256 KB, which is about 190 KB of image once base64-encoded.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"url": {
"type": "string",
"description": "url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused"
},
"name": {
"type": "string",
"maxLength": 70,
"minLength": 1,
"description": "Name to refer to this image by: 1-64 characters of letters, digits, underscore or dash, e.g. \"shot\""
},
"image_base64": {
"type": "string",
"description": "The image file, base64-encoded"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}image_files — List uploaded and generated images
List the images stored for your token: what you uploaded, and what this server has written, with their sizes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}image_delete_upload — Delete a stored image
Delete one image stored for your token, uploaded or generated: name is the name it is stored under. image_files lists them. A name nothing is stored under is refused and nothing is deleted.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 70,
"minLength": 1
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}Prompts
2 advertised
prepare_for_web — Prepare an image for the web
Take a camera-sized image down to a page-sized JPEG, drop the metadata that came with it, and report the bytes saved.
- path
- The image to prepare (required)
- max_width
- Longest width to allow, default 1600
upgrade_to_pro — Explain the upgrade
Explain what Pro on the image server costs and exactly what the user has to do, without leaving the conversation.
- feature
- The capped feature that prompted this, if there was one
Resources
2 advertised
recent-operations — Recent image operations
What this server has done, newest first: the operation, the input files, the files written and when.
image://recentpricing — Pricing and upgrade
What image costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.
pricing://image90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1914 ms
- 95th percentile latency
- 1914 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1914 ms · metadata changed · 15 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mcpstamp-image-tools-mcp https://mcp.zovo.one/mcp/imageCodex
codex mcp add mcpstamp-image-tools-mcp --url https://mcp.zovo.one/mcp/imageCursor
{
"mcpServers": {
"mcpstamp-image-tools-mcp": {
"url": "https://mcp.zovo.one/mcp/image"
}
}
}Cline
{
"mcpServers": {
"mcpstamp-image-tools-mcp": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/image",
"disabled": false
}
}
}VS Code
{
"servers": {
"mcpstamp-image-tools-mcp": {
"type": "http",
"url": "https://mcp.zovo.one/mcp/image"
}
}
}Gemini CLI
gemini mcp add --transport http mcpstamp-image-tools-mcp https://mcp.zovo.one/mcp/imageClaude Desktop
https://mcp.zovo.one/mcp/imageWindsurf
{
"mcpServers": {
"mcpstamp-image-tools-mcp": {
"serverUrl": "https://mcp.zovo.one/mcp/image"
}
}
}Let your agent find its tools
Find servers like theluckystrike McpStamp Image Tools MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.