视频静态捕捉服务

一个基于OpenCV的模型上下文协议(MCP)服务器,用于通过AI助手访问和控制网络摄像头,支持图像捕获、相机设置调整和视频连接管理。

  • by 13rac1
  • Python
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 13rac1/videocapture-mcp

使用说明

视频静止捕获MCP

一种通过OpenCV访问和控制网络摄像头的模型上下文协议服务器

概述

Video Still Capture MCP是模型上下文协议(MCP)的Python实现,它为AI助手提供了通过OpenCV访问和控制网络摄像头和视频源的能力。此服务器公开了一组工具,允许语言模型捕获图像、操纵相机设置和管理视频连接。没有视频捕捉。

例子

以下是一些正在运行的视频静止捕获MCP服务器的示例:

橙色示例

左:克劳德对图像的看法 右:实际网络摄像头捕捉

磁铁示例

左:克劳德对图像的看法 右:实际网络摄像头捕捉

安装

先决条件

从源头安装

git clone https://github.com/13rac1/videocapture-mcp.git
cd videocapture-mcp
pip install -e .

运行MCP服务器:

mcp dev videocapture_mcp.py

与Claude for Desktop集成

macOS/Linux

编辑您的Claude Desktop配置:

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

添加此MCP服务器配置:

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

确保更换 /ABSOLUTE_PATH/videocapture-mcp 项目的绝对路径。

视窗

编辑您的Claude Desktop配置:

nano $env:AppData\Claude\claude_desktop_config.json

添加此MCP服务器配置:

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

确保更换 C:\ABSOLUTE_PATH\videocapture-mcp 项目的绝对路径。

使用安装命令

或者,您可以使用 mcp 安装服务器的CLI:

mcp install videocapture_mcp.py

这将自动配置Claude Desktop以使用您的视频捕获MCP服务器。

一旦集成,Claude将能够在需要时访问您的网络摄像头或视频源。只需让克劳德拍照或执行任何与网络摄像头相关的任务。

特性

  • 快速图像捕捉:无需管理连接即可从网络摄像头捕获单张图像
  • 连接管理:打开、管理和关闭摄像头连接
  • 视频属性:读取并调整相机设置,如亮度、对比度和分辨率
  • 图像处理:基本的图像变换,如水平翻转

工具参考

quick_capture

快速打开相机,拍摄一帧,然后关闭。

quick_capture(device_index: int = 0, flip: bool = False) -> Image
  • 设备索引:摄像头索引(0通常是默认的网络摄像头)
  • 翻转:是否水平翻转图像
  • 退货:捕获的帧作为图像对象

open_camera

打开与相机设备的连接。

open_camera(device_index: int = 0, name: Optional[str] = None) -> str
  • 设备索引:摄像头索引(0通常是默认的网络摄像头)
  • 名字:用于标识此摄像头连接的可选名称
  • 退货:打开的摄像头的连接ID

capture_frame

从指定的视频源捕获一帧。

capture_frame(connection_id: str, flip: bool = False) -> Image
  • connection_id:以前打开的视频连接的ID
  • 翻转:是否水平翻转图像
  • 退货:捕获的帧作为图像对象

get_video_properties

获取视频源的属性。

get_video_properties(connection_id: str) -> dict
  • connection_id:以前打开的视频连接的ID
  • 退货:视频属性字典(宽度、高度、帧率等)

set_video_property

设置视频源的属性。

set_video_property(connection_id: str, property_name: str, value: float) -> bool
  • connection_id:以前打开的视频连接的ID
  • 属性名称:要设置的属性的名称(宽度、高度、亮度等)
  • 价值:要设置的值
  • 退货:如果成功则为True,否则为False

close_connection

关闭视频连接并释放资源。

close_connection(connection_id: str) -> bool
  • connection_id:要关闭的连接的ID
  • 退货:如果成功,则为True

list_active_connections

列出所有活动的视频连接。

list_active_connections() -> list
  • 退货:活动连接ID列表

示例用法

以下是AI助手如何使用网络摄像头MCP服务器:

  1. 快速拍照:

    I'll take a photo using your webcam.
    

    (AI会打电话给 quick_capture() 幕后)

  2. 打开持久连接:

    I'll open a connection to your webcam so we can take multiple photos.
    

    (AI会打电话给 open_camera() 并存储连接ID)

  3. 调整相机设置:

    Let me increase the brightness of the webcam feed.
    

    (AI会打电话给 set_video_property() 具有适当的参数)

高级用法

资源管理

服务器自动管理摄像机资源,确保在服务器关闭时正确释放所有连接。对于长时间运行的应用程序,当不再需要连接时,显式关闭连接是一种很好的做法。

摄影机

如果您的系统有多个摄像头,您可以在打开连接时指定设备索引:

# Open the second webcam (index 1)
connection_id = open_camera(device_index=1)

故障排除

  • 未找到摄像头:确保您的网络摄像头已正确连接,且未被其他应用程序使用
  • 权限问题:某些系统需要明确的权限才能访问摄像头
  • OpenCV安装:如果您遇到OpenCV问题,请参阅 官方安装指南

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

贡献

欢迎投稿!请随时提交拉取请求。