thumbnails

Generate image thumbnails, resize, convert and compress photos from your AI chat. Local files.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
97%
Integridad del esquema
89%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,542Tokens (definiciones de herramientas)
~1.8 KBTamaño de respuesta típico
Impacto significativo en la atención (2.77% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "thumbnails": {
      "command": "uvx",
      "args": [
        "https://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/image.mcpb"
      ]
    }
  }
}

Paquetes ejecutables

mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/image.mcpb0.21.0stdio
mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/image.mcpb0.22.0stdio

Puntos de conexión remotos

https://mcp.zovo.one/mcp/thumbnailsstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (15)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢image_info(path)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡image_resize(path, width, height, fit, out_path, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    },
    "width": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "Target width in pixels"
    },
    "height": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "Target height in pixels"
    },
    "fit": {
      "type": "string",
      "enum": [
        "inside",
        "cover",
        "exact"
      ],
      "default": "inside",
      "description": "inside = fit within the box, cover = fill and crop, exact = stretch"
    },
    "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"
    }
  },
  "required": [
    "path",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪image_convert(path, format, quality, out_path, overwrite)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "jpeg",
        "bmp",
        "gif",
        "tiff"
      ],
      "description": "The output format"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "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"
    }
  },
  "required": [
    "path",
    "format",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪image_compress(path, quality, max_width, max_bytes, out_path, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 80,
      "description": "JPEG quality 1-100, default 80"
    },
    "max_width": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "Scale down so the width is at most this, keeping the aspect ratio. Never scales up"
    },
    "max_bytes": {
      "type": "integer",
      "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"
    },
    "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"
    }
  },
  "required": [
    "path",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪image_crop(path, x, y, width, height, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    },
    "x": {
      "type": "integer",
      "minimum": 0,
      "description": "Left edge of the crop, in pixels from the left of the image"
    },
    "y": {
      "type": "integer",
      "minimum": 0,
      "description": "Top edge of the crop, in pixels from the top of the image"
    },
    "width": {
      "type": "integer",
      "minimum": 1,
      "description": "Width of the crop in pixels"
    },
    "height": {
      "type": "integer",
      "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"
    }
  },
  "required": [
    "path",
    "x",
    "y",
    "width",
    "height",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡image_thumbnails(paths, size, out_dir, overwrite)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "Names of images uploaded with image_upload"
    },
    "size": {
      "type": "integer",
      "minimum": 8,
      "maximum": 10000,
      "default": 256,
      "description": "Longest side of the thumbnail in pixels, default 256"
    },
    "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"
    }
  },
  "required": [
    "paths",
    "out_dir"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡image_watermark(path, text, position, opacity, out_path, ...)

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.

Esquema de entrada

{
  "type": "object",
  "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"
    },
    "position": {
      "type": "string",
      "enum": [
        "bottom-right",
        "bottom-left",
        "bottom-center",
        "top-right",
        "top-left",
        "top-center",
        "center"
      ],
      "default": "bottom-right",
      "description": "Where to draw it"
    },
    "opacity": {
      "type": "number",
      "minimum": 0.05,
      "maximum": 1,
      "default": 0.5,
      "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"
    },
    "overwrite": {
      "type": "boolean",
      "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs"
    }
  },
  "required": [
    "path",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡image_strip_metadata(path, out_path, overwrite)

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.

Esquema de entrada

{
  "type": "object",
  "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"
    }
  },
  "required": [
    "path",
    "out_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪image_batch_resize(paths, width, height, out_dir, overwrite)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "Names of images uploaded with image_upload"
    },
    "width": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "Target width in pixels"
    },
    "height": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "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"
    }
  },
  "required": [
    "paths",
    "out_dir"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢image_dominant_colors(path, count)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Name of an image uploaded with image_upload, or one this server wrote earlier"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16,
      "default": 5,
      "description": "How many colours to report, default 5"
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪license_activate(key)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "License key from checkout, MCPL1.<payload>.<signature>"
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴image_upload(name, image_base64, url)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 70,
      "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"
    },
    "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"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢image_files

List the images stored for your token: what you uploaded, and what this server has written, with their sizes.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴image_delete_upload(name)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 70
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada15 herramientas
verificadoversión no registrada15 herramientas