Labsco
13rac1 logo

Video Still Capture MCP

β˜… 17

from 13rac1

An MCP server for accessing and controlling webcams using OpenCV.

πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

Video Still Capture MCP

A Model Context Protocol server for accessing and controlling webcams via OpenCV

Overview

Video Still Capture MCP is a Python implementation of the Model Context Protocol (MCP) that provides AI assistants with the ability to access and control webcams and video sources through OpenCV. This server exposes a set of tools that allow language models to capture images, manipulate camera settings, and manage video connections. There is no video capture.

Examples

Here are some examples of the Video Still Capture MCP server in action:

Orange Example

Left: Claude's view of the imageRight: Actual webcam capture
Claude's view of orangeWebcam capture of orange

Magnet Example

Left: Claude's view of the imageRight: Actual webcam capture
Claude's view of magnetWebcam capture of magnet

Integrating with Claude for Desktop

macOS/Linux

Edit your Claude Desktop configuration:

# Mac
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Linux
nano ~/.config/Claude/claude_desktop_config.json 

Add this MCP server configuration:

{
  "mcpServers": {
    "VideoCapture ": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "--with",
        "numpy",
        "--with",
        "opencv-python",
        "mcp",
        "run",
        "/ABSOLUTE_PATH/videocapture_mcp.py"
      ]
    }
  }
}

Ensure you replace /ABSOLUTE_PATH/videocapture-mcp with the project's absolute path.

Windows

Edit your Claude Desktop configuration:

nano $env:AppData\Claude\claude_desktop_config.json

Add this MCP server configuration:

{
  "mcpServers": {
    "VideoCapture": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "--with",
        "numpy",
        "--with",
        "opencv-python",
        "mcp",
        "run",
        "C:\ABSOLUTE_PATH\videocapture-mcp\videocapture_mcp.py"
      ]
    }
  }
}

Ensure you replace C:\ABSOLUTE_PATH\videocapture-mcp with the project's absolute path.

Using the Installation Command

Alternatively, you can use the mcp CLI to install the server:

mcp install videocapture_mcp.py

This will automatically configure Claude Desktop to use your videocapture MCP server.

Once integrated, Claude will be able to access your webcam or video source when requested. Simply ask Claude to take a photo or perform any webcam-related task.

Features

  • Quick Image Capture: Capture a single image from a webcam without managing connections
  • Connection Management: Open, manage, and close camera connections
  • Video Properties: Read and adjust camera settings like brightness, contrast, and resolution
  • Image Processing: Basic image transformations like horizontal flipping

Tools Reference

quick_capture

Quickly open a camera, capture a single frame, and close it.

quick_capture(device_index: int = 0, flip: bool = False) -> Image
  • device_index: Camera index (0 is usually the default webcam)
  • flip: Whether to horizontally flip the image
  • Returns: The captured frame as an Image object

open_camera

Open a connection to a camera device.

open_camera(device_index: int = 0, name: Optional[str] = None) -> str
  • device_index: Camera index (0 is usually the default webcam)
  • name: Optional name to identify this camera connection
  • Returns: Connection ID for the opened camera

capture_frame

Capture a single frame from the specified video source.

capture_frame(connection_id: str, flip: bool = False) -> Image
  • connection_id: ID of the previously opened video connection
  • flip: Whether to horizontally flip the image
  • Returns: The captured frame as an Image object

get_video_properties

Get properties of the video source.

get_video_properties(connection_id: str) -> dict
  • connection_id: ID of the previously opened video connection
  • Returns: Dictionary of video properties (width, height, fps, etc.)

set_video_property

Set a property of the video source.

set_video_property(connection_id: str, property_name: str, value: float) -> bool
  • connection_id: ID of the previously opened video connection
  • property_name: Name of the property to set (width, height, brightness, etc.)
  • value: Value to set
  • Returns: True if successful, False otherwise

close_connection

Close a video connection and release resources.

close_connection(connection_id: str) -> bool
  • connection_id: ID of the connection to close
  • Returns: True if successful

list_active_connections

List all active video connections.

list_active_connections() -> list
  • Returns: List of active connection IDs