返回市场
视频捕获-mcp

视频捕获-mcp

作者:13rac113 星标更新:2025-03-28

项目介绍

视频快照捕获 MCP

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

概述

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

示例

这里有一些视频快照捕获MCP服务器的实际应用示例:

橙子示例

左:Claude对图像的看法右:实际的网络摄像头捕获
Claude对橙子的看法网络摄像头捕获的橙子

磁铁示例

左:Claude对图像的看法右:实际的网络摄像头捕获
Claude对磁铁的看法网络摄像头捕获的磁铁

安装

预备条件

从源码安装

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

运行MCP服务器:

mcp dev videocapture_mcp.py

与桌面Claude集成

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-m-mp为项目的绝对路径。

Windows

编辑你的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就能在请求时访问你的网络摄像头或视频源。只需让Claude拍照或执行任何与网络摄像头相关的任务即可。

功能

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

工具参考

quick_capture

快速打开一个摄像头,捕获一帧,并关闭它。

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

open_camera

打开到摄像头设备的连接。

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

capture_frame

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

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

get_video_properties

获取视频源的属性。

get_video_properties(connection_id: str) -> dict
  • connection_id:之前打开的视频连接ID
  • 返回值:视频属性字典(宽度、高度、FPS等)

set_video_property

设置视频源的属性。

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

close_connection

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

close_connection(connection_id: str) -> bool
  • connection_id:要关闭的连接ID
  • 返回值:如果成功则返回True

list_active_connections

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

list_active_connections() -> list
  • 返回值:活动连接ID列表

示例用法

以下是AI助手如何使用Webcam MCP服务器的一些示例:

  1. 快速拍照

    我会使用你的网络摄像头拍一张照片。
    

    (AI会在后台调用quick_capture()

  2. 打开持久连接

    我会打开一个到你网络摄像头的连接,这样我们可以拍摄多张照片。
    

    (AI会调用open_camera()并存储连接ID)

  3. 调整相机设置

    让我增加网络摄像头馈送的亮度。
    

    (AI会调用set_video_property()并传入适当的参数)

高级用法

资源管理

服务器会自动管理相机资源,确保所有连接在服务器关闭时都被正确释放。对于长时间运行的应用程序,最好在不再需要时显式关闭连接。

多个摄像头

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

# 打开第二个网络摄像头(索引1)
connection_id = open_camera(device_index=1)

故障排除

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

许可证

本项目采用MIT许可证——详情见LICENSE文件。

贡献

欢迎贡献!请随时提交Pull Request。