Skip to main content
Glama

resize_image

Resize images to specific dimensions using scale, fit, cover, or thumb methods. Adjust image width and height while maintaining quality with TinyPNG compression.

Instructions

Resize an image file

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
heightYesThe height to resize the image to
imagePathYesThe ABSOLUTE path to the image file to resize
methodNoThe method describes the way your image will be resized.fit
outputPathNoThe ABSOLUTE path to save the resized image file
widthYesThe width to resize the image to

Implementation Reference

  • The core handler function that loads the image using tinify, applies resize transformation with specified method, width, and height, determines output path if not provided, and saves the resized image.
    async function handleResizeImageTool({ imagePath, outputPath, width, height, method, }: { imagePath: string; outputPath?: string; width: number; height: number; method?: 'scale' | 'fit' | 'cover' | 'thumb'; }) { const source = tinify.fromFile(imagePath); const resized = source.resize({ method: method || 'fit', width, height, }); let dest = outputPath; if (!dest) { const dir = path.dirname(imagePath); const basename = path.basename(imagePath, path.extname(imagePath)); const ext = path.extname(imagePath).slice(1); dest = path.join(dir, `${basename}_${width}x${height}.${ext}`); } await resized.toFile(dest); }
  • Defines the Tool schema for 'resize_image', including name, description, and detailed inputSchema with properties and requirements.
    const RESIZE_IMAGE_TOOL: Tool = { name: 'resize_image', description: 'Resize an image file', inputSchema: { type: 'object', properties: { imagePath: { type: 'string', description: 'The ABSOLUTE path to the image file to resize', example: '/Users/user/Downloads/image.jpg', }, outputPath: { type: 'string', description: 'The ABSOLUTE path to save the resized image file', example: '/Users/user/Downloads/image_thumbnail.jpg', }, method: { type: 'string', description: 'The method describes the way your image will be resized.', enum: ['scale', 'fit', 'cover', 'thumb'], default: 'fit', example: 'fit', }, width: { type: 'number', description: 'The width to resize the image to', example: 1024, }, height: { type: 'number', description: 'The height to resize the image to', example: 1024, }, }, required: ['imagePath', 'width', 'height'], }, };
  • src/tools.ts:117-117 (registration)
    Registers the RESIZE_IMAGE_TOOL schema in the exported TOOLS array, likely used for tool listing in MCP server.
    export const TOOLS = [COMPRESS_LOCAL_IMAGE_TOOL, COMPRESS_REMOTE_IMAGE_TOOL, RESIZE_IMAGE_TOOL];
  • src/tools.ts:280-299 (registration)
    Registers the resize_image handler function in TOOL_HANDLERS object, which wraps the core handler and returns MCP-compliant response.
    resize_image: async (request) => { await handleResizeImageTool( request.params.arguments as { imagePath: string; outputPath?: string; width: number; height: number; method: 'scale' | 'fit' | 'cover' | 'thumb'; }, ); return { content: [ { type: 'text', text: 'Image resized successfully', }, ], metadata: {}, }; },

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