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 imagewebcam_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 chatimage_info(path)— shape, dtype, mean, file sizeimage_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_grayscalecolor_convert(target=gray|hsv|hls|lab|ycrcb|rgb|bgr)adjust_brightness_contrasthistogram_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(...)— Houghdetect_lines(...)— Probabilistic Houghdetect_corners(...)— Shi-Tomasi
Feature matching
feature_match(image1, image2, output_path?)— ORB + BFMatcher
Object detection (Haar)
detect_facesdetect_eyesdetect_bodiesdetect_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 diffimage_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 usewebcam_preview(it opens an OpenCV window).
Notes
- Never use
print()in tool functions: stdout is the MCP protocol channel. Usesys.stderr(the_loghelper at the bottom ofserver.py). webcam_previewopens 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.
Metadata
Release files for farshid-mcp-imageprocessing 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| farshid_mcp_imageprocessing-0.3.0.tar.gz | 14.1 kB | Without provenance | Details for farshid_mcp_imageprocessing-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl |
Total release size: 29.9 kB
Release files / farshid_mcp_imageprocessing-0.3.0.tar.gz
| Download URL | farshid_mcp_imageprocessing-0.3.0.tar.gz |
|---|---|
| Size | 14.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d14676b82fa8642c9ce7da16ab723ebdee96afcae66f4857ff3303ecd7c2c696
|
|
BLAKE2b-256 checksum How to use checksums |
0b8925b2b5f04f01cac093e117bd2a47b7b7b4206d911ea44511b42f225c67a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl
| Download URL | farshid_mcp_imageprocessing-0.3.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
904ac57e5e0809f060aa8a1a6de6ddeb83cb6fb1cf7339911ffeb0e9b212450b
|
|
BLAKE2b-256 checksum How to use checksums |
65c35401c3eede86b419c9066cfd77896074b30352177f4fe3253fd7272e8941
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for farshid-mcp-imageprocessing 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.