accueil / serveurs / Médias / io.github.theluckystrike/thumbnails
io.github.theluckystrike/thumbnails
serveur MCP (Model Context Protocol) · mcp-image 0.22.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.theluckystrike/thumbnails est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.theluckystrike/thumbnails » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 15 outils
- image_batch_resize≈ 315 tokens
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.
Paramètres, retour & exemple (5)
Paramètrespaths· array · requis
Names of images uploaded with image_uploadwidth· integer · optionnel
Target width in pixelsheight· integer · optionnel
Target height in pixelsout_dir· string · requis
Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignoredoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_batch_resize", "arguments": {"paths": [], "out_dir": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_compress≈ 398 tokens
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.
Paramètres, retour & exemple (6)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlierquality· integer · optionnel
JPEG quality 1-100, default 80out_path· string · requis
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 keptmax_bytes· integer · optionnel
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 onlymax_width· integer · optionnel
Scale down so the width is at most this, keeping the aspect ratio. Never scales upoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_compress", "arguments": {"path": "texte", "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_convert≈ 332 tokens
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.
Paramètres, retour & exemple (5)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlierformat· string · requis · png | jpeg | bmp | gif | tiff
The output formatquality· integer · optionnel
JPEG quality 1-100, default 80. Ignored for the other formatsout_path· string · requis
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 keptoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_convert", "arguments": {"path": "texte", "format": "png", "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_crop≈ 378 tokens
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.
Paramètres, retour & exemple (7)
Paramètresx· integer · requis
Left edge of the crop, in pixels from the left of the imagey· integer · requis
Top edge of the crop, in pixels from the top of the imagepath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlierwidth· integer · requis
Width of the crop in pixelsheight· integer · requis
Height of the crop in pixelsout_path· string · requis
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 keptoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_crop", "arguments": {"x": 1, "y": 1, "path": "texte", "width": 1, "height": 1, "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_delete_upload≈ 123 tokens
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.
Paramètres, retour & exemple (1)
Paramètresname· string · requis
Exemple d'appel{"name": "image_delete_upload", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_dominant_colors≈ 206 tokens
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.
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earliercount· integer · optionnel
How many colours to report, default 5
Exemple d'appel{"name": "image_dominant_colors", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_files≈ 76 tokens
List the images stored for your token: what you uploaded, and what this server has written, with their sizes.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "image_files", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_info≈ 167 tokens
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.
Paramètres, retour & exemple (1)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlier
Exemple d'appel{"name": "image_info", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_resize≈ 355 tokens
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.
Paramètres, retour & exemple (6)
Paramètresfit· string · optionnel · inside | cover | exact
inside = fit within the box, cover = fill and crop, exact = stretchpath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlierwidth· integer · optionnel
Target width in pixelsheight· integer · optionnel
Target height in pixelsout_path· string · requis
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 keptoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_resize", "arguments": {"path": "texte", "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_strip_metadata≈ 272 tokens
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.
Paramètres, retour & exemple (3)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earlierout_path· string · requis
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 keptoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_strip_metadata", "arguments": {"path": "texte", "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_thumbnails≈ 296 tokens
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.
Paramètres, retour & exemple (4)
Paramètressize· integer · optionnel
Longest side of the thumbnail in pixels, default 256paths· array · requis
Names of images uploaded with image_uploadout_dir· string · requis
Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignoredoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_thumbnails", "arguments": {"paths": [], "out_dir": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_upload≈ 465 tokens
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.
Paramètres, retour & exemple (3)
Paramètresurl· string · optionnel
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 refusedname· string · requis
Name to refer to this image by: 1-64 characters of letters, digits, underscore or dash, e.g. "shot"image_base64· string · optionnel
The image file, base64-encoded
Exemple d'appel{"name": "image_upload", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - image_watermark≈ 419 tokens
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.
Paramètres, retour & exemple (6)
Paramètrespath· string · requis
Name of an image uploaded with image_upload, or one this server wrote earliertext· string · optionnel
The watermark text. Default: the business name from the shared profile. Custom text is Proopacity· number · optionnel
0.05 to 1, default 0.5out_path· string · requis
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 keptposition· string · optionnel · bottom-right | bottom-left | bottom-center | top-right | top-left | top-center | center
Where to draw itoverwrite· boolean · optionnel
Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs
Exemple d'appel{"name": "image_watermark", "arguments": {"path": "texte", "out_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - license_activate≈ 167 tokens
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.
Paramètres, retour & exemple (1)
Paramètreskey· string · requis
License key from checkout, MCPL1.<payload>.<signature>
Exemple d'appel{"name": "license_activate", "arguments": {"key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - license_status≈ 125 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "license_status", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».