This server provides image compression and manipulation using the TinyPNG API. It supports:
Compress local images: Reduce file size of local image files using absolute file paths while maintaining quality
Compress remote images: Compress images from URLs by downloading and processing them
Resize images: Change dimensions using various methods (scale, fit, cover, thumb) with specified width and height parameters
Format conversion: Convert between formats (JPEG, PNG, WebP, AVIF) during compression
Metadata preservation: Optionally preserve copyright, creation date, and location metadata during local image compression
Custom output paths: Save processed images to specified locations with custom filenames, or use auto-generated default paths
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tinypng-mcp-servercompress this local image at /Users/alex/Pictures/logo.png"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP server for TinyPNG
Usage
Use bun or node to run the server
Install dependencies and build
pnpm i
pnpm buildEdit the
mcp.jsonfile
{
"mcpServers": {
"tinypng": {
"command": "bun", // or "node"
"args": ["/path/to/tinypng-mcp-server/src/index.ts"], // or "dist/index.js"
"env": {
"TINYPNG_API_KEY": "your-tinypng-api-key"
}
}
}
}Installing via Smithery
To install TinyPNG MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @aiyogg/tinypng-mcp-server --client claudeTools
Compress local image
{
name: 'compress_local_image',
description: 'Compress a local image file',
inputSchema: {
type: 'object',
properties: {
imagePath: {
type: 'string',
description: 'The ABSOLUTE path to the image file to compress',
example: '/Users/user/Downloads/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: ['imagePath'],
},
}Compress remote image
{
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'],
},
}