trackmcp
Back to directory
mhe8mah

webp-batch-mcp

View on GitHub

MCP server for batch WebP conversion with cross-platform support. Converts PNG, JPG, JPEG to WebP format with Google cwebp + Sharp fallback.

6 stars TypeScriptOthers Updated May 11, 2026

Documentation

WebP Batch Converter

A Model Context Protocol (MCP) server for batch converting images to WebP format with cross-platform support. Works seamlessly with MCP-aware IDEs like Cursor.

๐ŸŒŸ Features

  • ๐Ÿ–ผ๏ธ Batch conversion of PNG, JPG, and JPEG files to WebP
  • ๐ŸŒ Cross-platform support (macOS, Linux, Windows)
  • โšก Multi-threaded processing for fast conversions
  • ๐ŸŽ›๏ธ Flexible options including quality control, lossless mode, and metadata preservation
  • ๐Ÿ“Š Detailed reporting with file sizes and savings statistics
  • ๐Ÿ”ง Dual engine support - prefers Google's cwebp, falls back to Sharp
  • ๐ŸŽฏ MCP integration for use in AI-powered development environments

๐Ÿ“ฆ Installation

Global Installation

bash
npm install -g webp-batch-mcp

Local Development

bash
git clone https://github.com/mhe8mah/webp-batch-mcp.git
cd webp-batch-mcp
npm install
npm run build

Docker

bash
docker build -t webp-batch .
docker run -v /path/to/images:/data webp-batch

๐Ÿš€ Usage

Command Line Interface

bash
node dist/cli.js [options]

Options

  • `--src ` - Source directory to scan (default: current directory)
  • `--quality ` - WebP quality setting (default: 75)
  • `--lossless` - Use lossless encoding (recommended for PNG)
  • `--overwrite` - Replace original files with WebP versions
  • `--threads ` - Number of concurrent conversions (default: CPU count)
  • `--preserve-meta` - Preserve EXIF and ICC metadata
  • `--flat ` - Output all WebP files to specified directory

Examples

bash
# Convert all images in current directory
node dist/cli.js

# High quality conversion of specific directory
node dist/cli.js --src ./photos --quality 95 --preserve-meta

# Lossless conversion with overwrite
node dist/cli.js --src ./images --lossless --overwrite

# Batch process to output directory
node dist/cli.js --src ./input --flat ./output --threads 8

MCP Server

The MCP server exposes a single tool: `convert_to_webp`

Tool Parameters

json
{
  "src": "string",          // Source directory (default: ".")
  "quality": "number",      // Quality 0-100 (default: 75)
  "lossless": "boolean",    // Lossless mode (default: false)
  "overwrite": "boolean",   // Replace originals (default: false)
  "threads": "number",      // Concurrent threads (default: CPU count)
  "preserveMeta": "boolean", // Keep metadata (default: false)
  "flat": "string"          // Output directory (optional)
}

โš™๏ธ How to Add This Server in Cursor

1. Clone and build the project:

bash
git clone https://github.com/mhe8mah/webp-batch-mcp.git
cd webp-batch-mcp
npm install
npm run build

2. Open Cursor Settings

3. Navigate to Features โ†’ MCP

4. Add a new server configuration:

json
{
  "mcpServers": {
    "webp-batch": {
      "command": "node",
      "args": ["/path/to/webp-batch-mcp/dist/server.js"]
    }
  }
}

5. Restart Cursor

6. The `convert_to_webp` tool will be available in your AI conversations

๐Ÿ”ง Technical Details

Conversion Strategy

1. Primary Engine: Google's `cwebp` tool (included in libwebp-tools)

    2. Fallback Engine: Sharp (Node.js)

      Output Behavior

      • Default: Creates `.webp` files alongside originals
      • Overwrite mode: Replaces originals with WebP versions
      • Flat mode: Outputs all WebP files to specified directory
      • Metadata preservation: Maintains EXIF and ICC profiles when requested

      Performance

      • Utilizes all CPU cores by default
      • Processes images concurrently using p-limit
      • Provides real-time progress feedback
      • Reports detailed conversion statistics

      ๐Ÿ› ๏ธ Development

      Building

      bash
      npm run build

      Testing

      bash
      npm test

      Development Mode

      bash
      npm run dev

      ๐Ÿ“Š Test Results

      Verified with real web images:

      • JPEG (35KB โ†’ 17KB): 51% space savings
      • PNG (7.9KB โ†’ 2.8KB): 65% space savings
      • Overall: 53% average compression

      ๐Ÿ“‹ Dependencies

      Runtime

      • `@modelcontextprotocol/sdk` - MCP server framework
      • `sharp` - Image processing fallback
      • `chalk` - Colorized terminal output
      • `commander` - CLI argument parsing
      • `glob` - File pattern matching
      • `p-limit` - Concurrency control

      Development

      • `typescript` - Type safety
      • `tsup` - Fast TypeScript bundler
      • `jest` - Testing framework

      ๐Ÿ“„ License

      MIT License - see LICENSE file for details.

      ๐Ÿค Contributing

      1. Fork the repository

      2. Create a feature branch

      3. Add tests for new functionality

      4. Ensure all tests pass

      5. Submit a pull request

      ๐Ÿ†˜ Support

      For issues and feature requests, please use the GitHub issue tracker.

      Frequently asked questions

      What is webp-batch-mcp?

      webp-batch-mcp is MCP server for batch WebP conversion with cross-platform support. Converts PNG, JPG, JPEG to WebP format with Google cwebp + Sharp fallback.

      How do I install webp-batch-mcp?

      Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

      Is webp-batch-mcp open source?

      Yes โ€” it is hosted on GitHub at https://github.com/mhe8mah/webp-batch-mcp and has 6 stars.

      Related MCP tools

      Run your own MCP server? See who uses it and what to fix.

      Measure it with TrackMCP