Skip to main content
Glama

compress_image

Reduce image file size while maintaining quality using configurable compression settings for JPEG, PNG, WebP, and AVIF formats.

Instructions

Compress an image with quality settings

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to input image
outputPathYesPath to save compressed image
qualityNoCompression quality (1-100)
progressiveNoUse progressive encoding (for JPEG)

Implementation Reference

  • Handler for the 'compress_image' tool. Extracts arguments, creates output directory, detects image format using Sharp metadata, applies format-specific compression (JPEG, PNG, WebP, AVIF) with specified quality and progressive option, saves the compressed image, calculates and reports size reduction percentage.
    case 'compress_image': { const { inputPath, outputPath, quality = 80, progressive = true } = args; await fs.mkdir(path.dirname(outputPath), { recursive: true }); const metadata = await sharp(inputPath).metadata(); let pipeline = sharp(inputPath); // Apply compression based on format if (metadata.format === 'jpeg') { pipeline = pipeline.jpeg({ quality, progressive }); } else if (metadata.format === 'png') { pipeline = pipeline.png({ quality }); } else if (metadata.format === 'webp') { pipeline = pipeline.webp({ quality }); } else if (metadata.format === 'avif') { pipeline = pipeline.avif({ quality }); } await pipeline.toFile(outputPath); const originalSize = (await fs.stat(inputPath)).size; const compressedSize = (await fs.stat(outputPath)).size; const savings = ((originalSize - compressedSize) / originalSize * 100).toFixed(1); return { content: [ { type: 'text', text: `Image compressed successfully. Saved to: ${outputPath}\nSize reduction: ${savings}% (${originalSize} → ${compressedSize} bytes)` } ] }; }
  • src/index.ts:93-116 (registration)
    Registration of the 'compress_image' tool in the listTools handler, including name, description, and input schema for validation.
    { name: 'compress_image', description: 'Compress an image with quality settings', inputSchema: { type: 'object', properties: { inputPath: { type: 'string', description: 'Path to input image' }, outputPath: { type: 'string', description: 'Path to save compressed image' }, quality: { type: 'number', minimum: 1, maximum: 100, description: 'Compression quality (1-100)', default: 80 }, progressive: { type: 'boolean', description: 'Use progressive encoding (for JPEG)', default: true } }, required: ['inputPath', 'outputPath'] } },
  • Input schema definition for the compress_image tool, specifying parameters like inputPath, outputPath, quality, and progressive.
    inputSchema: { type: 'object', properties: { inputPath: { type: 'string', description: 'Path to input image' }, outputPath: { type: 'string', description: 'Path to save compressed image' }, quality: { type: 'number', minimum: 1, maximum: 100, description: 'Compression quality (1-100)', default: 80 }, progressive: { type: 'boolean', description: 'Use progressive encoding (for JPEG)', default: true } }, required: ['inputPath', 'outputPath'] }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/flowy11/imagician'

If you have feedback or need assistance with the MCP directory API, please join our Discord server