Skip to main content
Glama
README.md
## MCP server for TinyPNG
[![smithery badge](https://smithery.ai/badge/@aiyogg/tinypng-mcp-server)](https://smithery.ai/server/@aiyogg/tinypng-mcp-server)

### Usage

### Use `bun` or `node` to run the server

1. Install dependencies and build

```bash
pnpm i
pnpm build
```

2. Edit the `mcp.json` file

```json
{
  "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](https://smithery.ai/server/@aiyogg/tinypng-mcp-server):

```bash
npx -y @smithery/cli install @aiyogg/tinypng-mcp-server --client claude
```

### Tools

1. Compress local image

```js
{
  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'],
  },
}
```

2. Compress remote image

```js
{
  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'],
  },
}
```

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation4/5

The tools are mostly distinct with clear purposes: compress_local_image and compress_remote_image handle compression for different image sources, while resize_image performs a different operation. However, the two compression tools could potentially be confused by an agent since they serve similar functions (compression) but differ only in input source, which might lead to misselection if the agent doesn't carefully parse the descriptions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, with clear action-object naming: compress_local_image, compress_remote_image, and resize_image. The naming is predictable and readable throughout the set.

Tool Count3/5

With only 3 tools, the server feels somewhat thin for an image processing domain, as it covers only compression and resizing. While the tools are focused, the count is borderline low, potentially missing other common operations like format conversion, cropping, or filtering that agents might expect.

Completeness3/5

The tool surface covers basic image operations (compression and resizing) but has notable gaps for a complete image processing workflow. Missing operations include format conversion, cropping, filtering, or metadata handling, which could cause agent failures when trying to perform common image tasks beyond the provided scope.

Maintenance

ActivityInactive
ResponsivenessNo issues