jfdasher/image-analysis-mcp
If you are the rightful owner of image-analysis-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Image Analysis MCP Server is a read-only server designed to provide detailed image inspection capabilities for Claude, focusing on metadata extraction, histogram analysis, and more.
Image Analysis MCP Server
A comprehensive read-only image analysis MCP (Model Context Protocol) server that provides Claude with detailed image inspection capabilities.
Features
- Metadata & EXIF Extraction: Camera settings, GPS, timestamps, and more
- Histogram Analysis: RGB and luminance histograms with statistics
- Tonal Analysis: Shadows, midtones, highlights, dynamic range, and clipping detection
- Color Analysis: Dominant colors, color temperature, saturation, and color cast detection
- Spatial Properties: Sharpness scoring, noise estimation, edge density, and blur detection
- Frequency Analysis: FFT-based detail level assessment (optional)
- Preview Generation: Base64-encoded preview images (optional)
Supported Formats
Standard Formats
- JPEG (.jpg, .jpeg)
- PNG (.png)
- TIFF (.tif, .tiff)
- WebP (.webp)
RAW Formats
- Canon RAW (.cr2, .cr3)
- Nikon RAW (.nef)
- Sony RAW (.arw)
- Adobe DNG (.dng)
- Fuji RAW (.raf)
- Olympus RAW (.orf)
Installation
Option 1: Docker (Recommended)
The easiest way to get started - no Python setup required!
# Build the Docker image
cd image_analysis
docker build -t image-analysis-mcp:latest .
# Test it works
docker run --rm image-analysis-mcp:latest python -c "import image_analysis_mcp; print('✓ OK')"
See for complete Docker documentation.
Option 2: Poetry
# Prerequisites: Python 3.12+, Poetry
cd image_analysis
# Install dependencies
poetry install
# Activate the virtual environment
poetry shell
Option 3: pip
# Prerequisites: Python 3.12+
cd image_analysis
# Install the package
pip install -e .
Usage
Running the MCP Server
The server can be run directly:
# Using Poetry
poetry run image-analysis-mcp
# Or if in activated virtual environment
image-analysis-mcp
Configuration for Claude Desktop
Add to your Claude Desktop configuration file (claude_desktop_config.json):
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Using Docker (Recommended)
{
"mcpServers": {
"image-analysis": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/path/to/your/images:/images:ro",
"image-analysis-mcp:latest"
]
}
}
}
Then reference images as /images/photo.jpg in Claude.
Using Poetry
{
"mcpServers": {
"image-analysis": {
"command": "poetry",
"args": ["run", "image-analysis-mcp"],
"cwd": "/absolute/path/to/image_analysis"
}
}
}
Using pip (Global Install)
{
"mcpServers": {
"image-analysis": {
"command": "image-analysis-mcp"
}
}
}
Available Tools
1. get_metadata
Fast metadata and EXIF extraction without loading full image data.
Parameters:
filepath(str): Path to image file
Example:
What camera was used for IMG_1234.CR2?
2. get_histogram
Extract RGB and luminance histograms with channel statistics.
Parameters:
filepath(str): Path to image fileprocess_raw(bool, optional): Process RAW files (default: True)
Example:
Show me the histogram for landscape.jpg
3. analyze_image
Comprehensive image analysis including all properties.
Parameters:
filepath(str): Path to image fileinclude_frequency(bool, optional): Include FFT analysis (default: False)include_preview(bool, optional): Generate preview image (default: False)preview_max_dimension(int, optional): Preview max size (default: 1920)preview_format(str, optional): "JPEG", "PNG", or "WEBP" (default: "JPEG")preview_quality(int, optional): Quality 1-100 (default: 85)process_raw(bool, optional): Process RAW files (default: True)
Example:
Analyze photo.jpg and tell me if it's sharp enough for printing
Analyze this RAW file and show me a preview
Architecture
This server follows a fully stateless architecture:
- Each tool call is independent
- Images are loaded, analyzed, and immediately discarded
- No caching or session state
- Predictable and reproducible results
Performance
Typical performance on modern hardware:
| Operation | 2MP Image | 12MP Image | 50MP Image |
|---|---|---|---|
get_metadata | 10ms | 15ms | 25ms |
get_histogram | 50ms | 150ms | 600ms |
analyze_image | 200ms | 800ms | 3000ms |
analyze_image (with preview) | 300ms | 1100ms | 4000ms |
analyze_image (with FFT) | 500ms | 2000ms | 8000ms |
Example Conversations
Check Image Quality
User: Is wedding_photo.jpg sharp enough for a large print?
Claude: [Uses analyze_image to check sharpness, noise, and resolution]
Exposure Analysis
User: Is this sunset photo overexposed?
Claude: [Uses analyze_image to check histogram and clipping]
Color Analysis
User: What are the dominant colors in this landscape?
Claude: [Uses analyze_image to extract dominant colors and temperature]
Metadata Extraction
User: What camera settings were used for IMG_5678.NEF?
Claude: [Uses get_metadata to extract EXIF data]
Error Handling
The server provides clear error messages:
FILE_NOT_FOUND: File doesn't existPERMISSION_DENIED: Cannot read fileUNSUPPORTED_FORMAT: Format not supportedCORRUPTED_FILE: File is corruptedOUT_OF_MEMORY: Image too largeINVALID_PARAMETER: Bad parameter valueRAW_PROCESSING_FAILED: RAW conversion failed
Development
Running Tests
poetry run pytest
Code Formatting
poetry run black src/
Type Checking
poetry run mypy src/
License
This project is provided as-is for use with Claude Desktop and MCP.
Author
Jim Dasher
Version
1.0.0 - October 28, 2025