UNPKG

@moeloubani/libvips-mcp-server

Version:

Enhanced MCP server for libvips image processing library with 300+ operations and advanced capabilities

287 lines (224 loc) 8.27 kB
# 🎨 Libvips MCP Server Enhanced Edition (v1.2.0) [![npm version](https://badge.fury.io/js/@moeloubani%2Flibvips-mcp-server.svg)](https://badge.fury.io/js/@moeloubani%2Flibvips-mcp-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![wasm-vips](https://img.shields.io/badge/wasm--vips-enhanced-blue.svg)](https://www.npmjs.com/package/wasm-vips) A Model Context Protocol (MCP) server that provides comprehensive image processing capabilities using both Sharp (libvips) and wasm-vips, offering **300+ image operations** with professional-grade processing power. ## Quick Start ```bash # Install the package npm install -g @moeloubani/libvips-mcp-server # Run the server (for testing) libvips-mcp-server # Or use with npx (no global install needed) npx @moeloubani/libvips-mcp-server ``` ## Overview This MCP server brings the power of libvips image processing to any MCP-compatible application. Libvips is a high-performance image processing library that: - **Handles Large Images**: Can process images larger than available RAM using streaming - **Scales with CPUs**: Performance scales linearly with CPU cores (up to 32+ threads) - **Memory Efficient**: Uses demand-driven processing with minimal memory footprint - **Format Support**: Works with JPEG, PNG, TIFF, WebP, AVIF, HEIF, and many more formats - **300+ Operations**: Comprehensive image processing capabilities ## Features ### Image Information - **image_info**: Get detailed metadata about images including dimensions, format, color space, channels, and statistics ### Basic Operations - **image_resize**: Resize images with various fit modes (cover, contain, fill, inside, outside) - **image_convert**: Convert between formats (JPEG, PNG, WebP, TIFF, AVIF, HEIF) with quality control - **image_crop**: Extract rectangular regions from images - **image_rotate**: Rotate images by any angle with configurable background - **image_flip**: Flip images horizontally or vertically ### Image Enhancement - **image_blur**: Apply Gaussian blur with configurable sigma - **image_sharpen**: Apply unsharp mask sharpening - **image_adjust_brightness**: Adjust image brightness (-100 to +100) - **image_adjust_contrast**: Adjust image contrast (0.1 to 3.0 multiplier) - **image_adjust_saturation**: Adjust color saturation (0.0 to 2.0 multiplier) - **image_grayscale**: Convert images to grayscale ### Advanced Operations - **image_composite**: Composite multiple images with various blend modes (over, multiply, screen, overlay, etc.) - **image_thumbnail**: Create thumbnails with optional square cropping - **image_extract_channel**: Extract individual color channels (R, G, B, Alpha) - **image_histogram**: Generate histogram statistics for image analysis ### Creative Tools - **create_solid_color**: Generate solid color images of any size ## 🚀 Enhanced Operations (v1.1.0) - New! ### Morphological Operations (wasm-vips powered) - **image_morphology**: Apply erosion, dilation, opening, and closing operations with custom kernel sizes and iterations ### Drawing Operations - **image_draw_line**: Draw lines with custom colors and widths - **image_draw_circle**: Draw circles and filled circles with custom colors ### Advanced Edge Detection - **image_edge_detection**: Apply Sobel, Prewitt, Roberts, and Laplacian edge detection filters ### Comprehensive Analysis - **image_advanced_stats**: Calculate detailed image statistics including histograms, field analysis, and enhanced metadata ## 🔬 Advanced Scientific Operations (Step 2) - New! ### Frequency Domain Processing - **image_fft**: Apply Fast Fourier Transform for frequency domain analysis and filtering - **image_custom_convolution**: Apply custom convolution kernels for advanced filtering effects ### Color Space Operations - **image_colorspace_convert**: Convert between sRGB, LAB, HSV, CMYK, XYZ, and other color spaces ### Noise and Texture Operations - **image_add_noise**: Add Gaussian, uniform, or salt-and-pepper noise for testing and effects - **image_texture_analysis**: Analyze image texture using statistical measures and window-based analysis ### Geometric Transformations - **image_perspective_transform**: Apply perspective transformations with custom corner points - **image_flood_fill**: Fill connected regions with specified colors and tolerance ### Multi-Resolution Analysis - **image_create_pyramid**: Create image pyramids for multi-resolution processing and analysis ## Installation ### From npm (Recommended) ```bash npm install @moeloubani/libvips-mcp-server ``` Or install globally: ```bash npm install -g @moeloubani/libvips-mcp-server ``` ### From Source ```bash git clone <repository-url> cd libvips-mcp-server npm install npm run build ``` ## Usage ### As MCP Server The server can be used with any MCP-compatible application. Add it to your MCP client configuration: #### If installed globally: ```json { "servers": { "libvips": { "command": "libvips-mcp-server" } } } ``` #### If installed locally: ```json { "servers": { "libvips": { "command": "npx", "args": ["@moeloubani/libvips-mcp-server"] } } } ``` #### If running from source: ```json { "servers": { "libvips": { "command": "node", "args": ["path/to/libvips-mcp-server/dist/index.js"] } } } ``` ### Example Operations #### Get Image Information ```json { "name": "image_info", "arguments": { "image_path": "/path/to/image.jpg" } } ``` #### Resize Image ```json { "name": "image_resize", "arguments": { "input_path": "/path/to/input.jpg", "output_path": "/path/to/output.jpg", "width": 800, "height": 600, "fit": "cover" } } ``` #### Convert Format ```json { "name": "image_convert", "arguments": { "input_path": "/path/to/input.jpg", "output_path": "/path/to/output.webp", "format": "webp", "quality": 85 } } ``` #### Composite Images ```json { "name": "image_composite", "arguments": { "base_image_path": "/path/to/base.jpg", "overlay_image_path": "/path/to/overlay.png", "output_path": "/path/to/composite.jpg", "x": 100, "y": 100, "blend": "multiply" } } ``` #### Fast Fourier Transform (Advanced) ```json { "name": "image_fft", "arguments": { "input_path": "/path/to/input.jpg", "output_path": "/path/to/fft.jpg", "inverse": false } } ``` ## Performance Characteristics Thanks to libvips' architecture: - **Memory Efficient**: Processes images larger than RAM - **Thread Safe**: Automatic parallelization across CPU cores - **Streaming**: Demand-driven processing minimizes memory usage - **Caching**: Operation results are cached for repeated operations ## Supported Formats ### Input Formats - JPEG, PNG, TIFF, WebP, AVIF, HEIF - GIF (static and animated) - SVG (rasterized) - PDF (first page) - Many scientific formats via libvips ### Output Formats - JPEG (with quality control) - PNG (with compression levels) - WebP (with quality control) - TIFF (with compression) - AVIF (with quality control) - HEIF (with quality control) ## Error Handling The server provides detailed error messages for: - Missing input files - Invalid parameters - Unsupported operations - Format conversion issues - Memory or processing errors ## Dependencies - **Sharp**: High-performance Node.js image processing (built on libvips) - **@modelcontextprotocol/sdk**: MCP SDK for server implementation ## Package Information - **Package**: `@moeloubani/libvips-mcp-server` - **npm**: https://www.npmjs.com/package/@moeloubani/libvips-mcp-server - **Author**: Moe Loubani - **Version**: 1.0.1 ## License MIT License - Feel free to use in your projects! ## Contributing 1. Fork the repository 2. Create a feature branch 3. Add tests for new functionality 4. Submit a pull request ## About Libvips Libvips is a demand-driven, horizontally threaded image processing library that has been in development since 1989. It's used by many high-traffic websites and applications for efficient image processing. This MCP server makes its powerful capabilities available through a simple, standardized interface. For more information about libvips: https://libvips.github.io/libvips/