Skip to main content
Glama

compress_remote_image

Compress remote images by URL to reduce file size while maintaining quality. Save compressed images in formats like JPEG, PNG, WebP, or AVIF to specified paths.

Instructions

Compress a remote image file by giving the URL of the image

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
imageUrlYesThe URL of the image file to compress
outputPathNoThe ABSOLUTE path to save the compressed image file
outputFormatNoThe format to save the compressed image file

Implementation Reference

  • Core handler function that compresses a remote image from URL using Tinify: sets API key, loads image, optionally converts format, determines output path, saves compressed file, fetches original size via fetch, computes and returns compression statistics.
    async function handleCompressRemoteImageTool({ imageUrl, outputPath, outputFormat, }: { imageUrl: string; outputPath?: string; outputFormat?: SupportedImageTypes; }) { tinify.key = config.apiKey!; const source = tinify.fromUrl(imageUrl); let ext = path.extname(imageUrl).slice(1); if (outputFormat) { source.convert({ type: outputFormat, }); ext = outputFormat.split('/')[1]; } let dest = outputPath; if (!dest) { const dir = path.dirname(imageUrl); const basename = path.basename(imageUrl, path.extname(imageUrl)); dest = path.join(dir, `${basename}.${ext}`); } await source.toFile(dest); const originalSize = (await fetch(imageUrl).then((res) => res.arrayBuffer())).byteLength; const compressedSize = fs.statSync(dest).size; const compressionRatio = (originalSize - compressedSize) / originalSize; return { originalSize, compressedSize, compressionRatio, }; }
  • Tool schema definition for 'compress_remote_image' including name, description, and inputSchema with properties imageUrl (required), outputPath, outputFormat (enum from SUPPORTED_IMAGE_TYPES).
    const COMPRESS_REMOTE_IMAGE_TOOL: Tool = { name: 'compress_remote_image', description: 'Compress a remote image file by giving the URL of the image', inputSchema: { type: 'object', properties: { imageUrl: { type: 'string', description: 'The URL of the image file to compress', example: 'https://example.com/image.jpg', }, outputPath: { type: 'string', description: 'The ABSOLUTE path to save the compressed image file', example: '/Users/user/Downloads/image_compressed.jpg', }, outputFormat: { type: 'string', description: 'The format to save the compressed image file', enum: SUPPORTED_IMAGE_TYPES, example: 'image/jpeg', }, }, required: ['imageUrl'], }, };
  • src/tools.ts:262-279 (registration)
    MCP tool handler registration for 'compress_remote_image': extracts arguments, calls handleCompressRemoteImageTool, returns JSON stringified result as text content.
    compress_remote_image: async (request) => { const result = await handleCompressRemoteImageTool( request.params.arguments as { imageUrl: string; outputPath?: string; outputFormat?: SupportedImageTypes; }, ); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], metadata: {}, }; },
  • src/tools.ts:117-117 (registration)
    Exports the list of tools including COMPRESS_REMOTE_IMAGE_TOOL for MCP server registration.
    export const TOOLS = [COMPRESS_LOCAL_IMAGE_TOOL, COMPRESS_REMOTE_IMAGE_TOOL, RESIZE_IMAGE_TOOL];

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/aiyogg/tinypng-mcp-server'

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