Skip to main content

Local offline OpenCV-based image-processing MCP server: webcam capture, image transforms, edges, contours, face/QR detection, video, and ~40 tools.

Project description

farshid-mcp-imageProcessing

A comprehensive OpenCV image-processing MCP server for VS Code Copilot Agent Mode (or any MCP client). Exposes ~40 tools across webcam capture, image I/O, transforms, color, filtering, edges, thresholding, morphology, contours/shapes, feature matching, object detection (faces / eyes / bodies / QR), drawing, image arithmetic, template matching, and video processing.

  • PyPI: farshid-mcp-imageProcessing
  • MCP Registry: io.github.pirahansiah/farshid-mcp-imageProcessing
  • Python: 3.14+
  • OS: latest Windows 11, latest macOS, latest mainstream Linux (Ubuntu 24.04+/Fedora 41+)

Install (PyPI)

pip install farshid-mcp-imageProcessing
farshid-mcp-imageprocessing          # runs the stdio MCP server

Register in VS Code

Add this to your user or workspace mcp.json:

{
  "servers": {
    "imageProcessing": {
      "command": "farshid-mcp-imageprocessing",
      "type": "stdio"
    }
  }
}

Or, if you cloned the repo and want to run from source with the local .venv:

git clone https://github.com/pirahansiah/farshid-mcp-imageProcessing
cd farshid-mcp-imageProcessing
# Windows (PowerShell):
py -3.14 -m venv .venv ; .\.venv\Scripts\Activate.ps1
# macOS / Linux:
python3.14 -m venv .venv && source .venv/bin/activate

pip install -U pip
pip install -e .

opencv-contrib-python is used so the bundled Haar cascades and extra algorithms are available.

Quick start: the /cv Copilot prompt

This repo ships a workspace prompt file at .github/prompts/cv.prompt.md. In VS Code Copilot Chat (Agent mode), type:

/cv take image from webcam and save it as gray scale 240 * 240

The agent will call webcam_save, image_to_grayscale, and image_resize from this server to produce the requested file under ./.farshid/cv/.

Tool catalog

Webcam / capture

  • webcam_capture(camera_index=0) → returns a PNG image
  • webcam_save(output_path="", camera_index=0)
  • webcam_preview(camera_index=0, seconds=10) (local desktop window)
  • webcam_record(output_path, seconds=5, camera_index=0, fps=20)

Image I/O & info

  • image_show(path) — return image to chat
  • image_info(path) — shape, dtype, mean, file size
  • image_convert(input_path, output_path, quality=95)

Geometric transforms

  • image_resize(... width|height|scale, interpolation)
  • image_crop(input_path, output_path, x, y, width, height)
  • image_rotate(input_path, output_path, angle, scale=1, keep_size=False)
  • image_flip(input_path, output_path, direction)
  • image_pad(... top, bottom, left, right, border_type, color)

Color

  • image_to_grayscale
  • color_convert(target=gray|hsv|hls|lab|ycrcb|rgb|bgr)
  • adjust_brightness_contrast
  • histogram_equalize(method=clahe|global)
  • histogram_data(bins=32)

Filtering

  • blur_gaussian(ksize, sigma)
  • blur_median(ksize)
  • blur_bilateral(d, sigma_color, sigma_space)
  • sharpen(amount)
  • denoise(strength)

Edges / gradients

  • edges_canny(threshold1, threshold2)
  • edges_sobel(ksize)
  • edges_laplacian(ksize)

Thresholding & morphology

  • threshold(method=otsu|binary|binary_inv|adaptive_mean|adaptive_gaussian)
  • morphology(op=erode|dilate|open|close|gradient|tophat|blackhat)

Contours & shapes

  • find_contours(input_path, output_path?, thresh, min_area)
  • detect_circles(...) — Hough
  • detect_lines(...) — Probabilistic Hough
  • detect_corners(...) — Shi-Tomasi

Feature matching

  • feature_match(image1, image2, output_path?) — ORB + BFMatcher

Object detection (Haar)

  • detect_faces
  • detect_eyes
  • detect_bodies
  • detect_qrcode

Drawing

  • draw_rectangle, draw_circle, draw_line, draw_text

Composition / arithmetic

  • image_blend(image1, image2, output_path, alpha)
  • image_diff(image1, image2, output_path?) → mean/max diff
  • image_concat(images, output_path, direction)
  • template_match(image_path, template_path, output_path?, threshold)

Video

  • video_info(path)
  • video_extract_frames(video_path, output_dir, every_n, max_frames, ext)
  • video_thumbnail(video_path, output_path, time_seconds)

Build & publish

pip install -U build twine mcp-publisher
python -m build
twine upload dist/*
mcp-publisher login github
mcp-publisher publish .mcp/server.json

OS notes

  • Windows 11 (latest): webcam works out of the box; ensure Settings → Privacy & security → Camera → Let desktop apps access your camera is On.
  • macOS (latest): the first webcam call triggers a system Camera permission prompt; grant it to the terminal/VS Code process.
  • Linux (latest): requires a working /dev/video* device. Headless servers without a display cannot use webcam_preview (it opens an OpenCV window).

Notes

  • Never use print() in tool functions: stdout is the MCP protocol channel. Use sys.stderr (the _log helper at the bottom of server.py).
  • webcam_preview opens a real desktop window — only works where the server has a display (not over plain SSH or in a headless container).
  • All paths support ~ expansion. Output directories are created automatically.
  • Tools that return annotated images take an optional output_path; when omitted they only return the JSON metadata.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

farshid_mcp_imageprocessing-0.3.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file farshid_mcp_imageprocessing-0.3.0.tar.gz.

File metadata

File hashes

Hashes for farshid_mcp_imageprocessing-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d14676b82fa8642c9ce7da16ab723ebdee96afcae66f4857ff3303ecd7c2c696
MD5 73a3aa9e543a39971eb3b3b09ddb8579
BLAKE2b-256 0b8925b2b5f04f01cac093e117bd2a47b7b7b4206d911ea44511b42f225c67a5

See more details on using hashes here.

File details

Details for the file farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 904ac57e5e0809f060aa8a1a6de6ddeb83cb6fb1cf7339911ffeb0e9b212450b
MD5 7a17912d8992cc9d050dd20960d51b9f
BLAKE2b-256 65c35401c3eede86b419c9066cfd77896074b30352177f4fe3253fd7272e8941

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page