About farshid-mcp-imageProcessing
farshid-mcp-imageProcessing is an OpenCV-based MCP server for VS Code Copilot Agent Mode and other MCP clients. Its tools cover webcam capture, image operations, detection, and video processing.
Key features
- 01Webcam capture and recording
- 02Image conversion and transforms
- 03Color, filtering, and edge operations
- 04Contours and feature matching
- 05Face, eye, body, and QR detection
- 06Video information and frame extraction
Use cases
- 01Capture and resize a webcam image
- 02Apply filters or detect image edges
- 03Find faces or QR codes in images
- 04Extract frames from a video
MCP support
It exposes OpenCV image and video processing capabilities as tools to MCP clients. The server communicates over stdio.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEfarshid-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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.