imagefeatures-mcp

imagefeatures-mcp

An MCP server that provides classic computer vision feature extraction tools (color, texture, shape) for image analysis, enabling LLMs to perform precise mathematical image comparisons and quality assessments.

Category
Visit Server

README

imagefeatures-mcp 🖼️

MCP License

Give LLMs "mathematical eyes" for image analysis.

An MCP (Model Context Protocol) server that wraps the imagefeatures library, exposing classic computer vision features as tools that Claude and other LLMs can use.

Why This Exists

LLM Vision imagefeatures MCP
"A sunset photo with warm colors" #FF6B35 (45.2%), #2D3436 (30.1%) — exact hex codes
"Looks sharp to me" (often wrong) Texture entropy: 1.2 → blur score: 0.78
Slow on 10,000 images Extract once, query instantly

LLMs see semantics ("a dog on a beach"). imagefeatures sees statistics (color histograms, texture patterns, edge orientations). Combine them for agents that reason about both content AND composition.

What You Can Build

1. Visual Similarity Search

Find images similar by color, texture, or combined features:

Visual Similarity Search

Same query image returns different results based on which feature you prioritize — CEDD finds structural matches, Color Histogram finds palette matches, LBP finds texture matches.

2. Color-Based Organization

Sort images by dominant hue for color-organized galleries:

Color Sorting

Images automatically sorted: grayscale → warm tones → greens → blues → reds

3. Vibe-Based Filtering

Filter by visual "mood" categories derived from mathematical features:

Vibe Filtering

"Blue/Water" and "Green/Nature" tags computed from color + texture analysis, not AI labeling

Installation

# Install the MCP server
pip install imagefeatures-mcp

# Or install from source
pip install git+https://github.com/kelkalot/imagefeatures-mcp.git

Dependencies:

  • imagefeatures — the underlying feature extraction library
  • mcp — Model Context Protocol SDK
  • numpy, pillow

Quick Start

Claude Desktop

Add to your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "imagefeatures": {
      "command": "python",
      "args": ["-m", "imagefeatures_mcp"]
    }
  }
}

Restart Claude Desktop. You can now ask:

"What are the dominant colors in this photo?"
"Find similar images in my ~/Photos folder"
"Sort these images by color"
"Which of these photos are blurry?"

Programmatic Usage

# Run the server directly
python -m imagefeatures_mcp

# Test with MCP Inspector
npx @modelcontextprotocol/inspector python -m imagefeatures_mcp

Available Tools

analyze_image

Analyze an image's visual composition using mathematical features.

analyze_image(image_path, preset="quick")

Presets:

Preset Features Dimensions Use Case
quick ColorHistogram, EdgeHistogram 144 Fast overview
color ColorHistogram, ColorMoments, DominantColors, OpponentHistogram 605 Color analysis
texture LBP, Tamura, Haralick, Gabor 328 Texture analysis
shape EdgeHistogram, HOG, HuMoments 231 Shape/edge analysis
combined CEDD, FCTH, JCD 504 Best for similarity
full All 22 features 3,058 Comprehensive

compare_images

Compare two images mathematically.

compare_images(image_a, image_b, feature="CEDD", metric="cosine")

Features: Any of the 22 available (CEDD, JCD, ColorHistogram, PHOG, etc.)
Metrics: cosine, euclidean, l1, jsd, tanimoto

find_similar_in_folder

Find visually similar images in a folder.

find_similar_in_folder(query_image, folder_path, top_k=5, feature="JCD")

get_dominant_colors

Extract dominant colors with exact hex codes.

get_dominant_colors(image_path, num_colors=5)

check_image_quality

Detect blur and quality issues using texture analysis.

check_image_quality(image_path)

sort_by_color

Sort all images in a folder by dominant hue.

sort_by_color(folder_path)

filter_by_vibe

Filter images by visual category.

filter_by_vibe(folder_path, vibe="blue_water")

Vibes: blue_water, green_nature, warm_sunset, cool_moody, high_contrast, soft_minimal, grayscale, vibrant

extract_features

Get raw feature vectors for ML pipelines.

extract_features(image_path, features="CEDD,PHOG,DominantColors")

list_features

List all 22 available features with descriptions.

Available Features

The imagefeatures library provides 22 classic computer vision descriptors totaling 3,058 dimensions:

Color Features (741 dims)

Feature Dims Description
ColorHistogram 64 RGB/HSV/Luminance histogram
ColorMoments 9 Mean, std, skewness per channel
OpponentHistogram 512 Opponent color space histogram
FuzzyColorHistogram 72 Fuzzy HSV quantization
DominantColors 20 K-means extracted dominant colors
ScalableColor 64 MPEG-7 Haar-based color descriptor

Texture Features (620 dims)

Feature Dims Description
LocalBinaryPatterns 256 Classic LBP histogram
RotationInvariantLBP 36 Rotation-invariant LBP
Gabor 48 Multi-scale Gabor wavelets
Tamura 18 Coarseness, contrast, directionality
Haralick 6 GLCM texture features
Centrist 256 Census transform histogram

Shape Features (861 dims)

Feature Dims Description
EdgeHistogram 80 MPEG-7 edge directions
PHOG 630 Pyramid histogram of oriented gradients
HOG 144 Histogram of oriented gradients
HuMoments 7 Shape-invariant Hu moments

Layout Features (76 dims)

Feature Dims Description
ColorLayout 12 MPEG-7 DCT color layout
LuminanceLayout 64 DCT luminance descriptor

Combined Features (760 dims)

Feature Dims Description
CEDD 144 Color + edge directivity
FCTH 192 Fuzzy color + texture
JCD 168 Joint CEDD + FCTH
AutoColorCorrelogram 256 Spatial color correlation

Recommended for Common Tasks

Task Recommended Feature
General similarity search JCD or CEDD
Color matching DominantColors + ColorHistogram
Texture analysis Gabor + Tamura
Shape matching PHOG or HuMoments
Duplicate detection JCD (fast, effective)

Example Workflows

"Vibe-Based" Asset Search

User: "Find marketing images that feel calm and professional"

Claude's strategy:
1. filter_by_vibe(folder, "blue_water") → narrows to ~200 images
2. get_dominant_colors() → filters for brand palette match
3. check_image_quality() → removes blurry images
4. Uses native vision on finalists to confirm content

Brand Compliance Checker

User: "Do these product photos match our brand colors?"

Claude's strategy:
1. get_dominant_colors() on each image
2. Compare hex codes to brand palette (#1a73e8, #ffffff)
3. Report images that deviate > 10%

Photo Library Deduplication

User: "Find duplicate or near-duplicate photos"

Claude's strategy:
1. extract_features() with JCD for all images
2. compare_images() pairwise
3. Group images with > 90% similarity

LLM Vision vs imagefeatures

Task LLM Vision imagefeatures Winner
"What's in this image?" ✅ Excellent ❌ Can't do LLM
Exact color hex codes ❌ Guesses ✅ Precise imagefeatures
Blur detection ❌ Often wrong ✅ ~90% accurate imagefeatures
Search 10,000 images Slow, expensive Fast, free imagefeatures
"What emotion does this convey?" ✅ Excellent ❌ Can't do LLM
Consistent, reproducible ❌ Variable ✅ Deterministic imagefeatures

Best approach: Use both. imagefeatures for precision/scale, LLM vision for understanding.

Development

# Clone the repo
git clone https://github.com/kelkalot/imagefeatures-mcp.git
cd imagefeatures-mcp

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run the server locally
python -m imagefeatures_mcp

Related Projects

  • imagefeatures — The underlying feature extraction library
  • MCP — Model Context Protocol specification
  • LIRE — Java library that inspired imagefeatures

License

MIT

Citation

If you use this in research, please cite:

@software{imagefeatures_mcp,
  title = {imagefeatures-mcp: MCP Server for Classic Image Features},
  author = {Michael A. Riegler},
  url = {https://github.com/kelkalot/imagefeatures-mcp},
  year = {2025}
}

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured