13rac1
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"VideoCapture ": {
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"numpy",
"--with",
"opencv-python",
"mcp",
"run",
"/ABSOLUTE_PATH/videocapture_mcp.py"
],
"command": "uv"
}
}
}
服务介绍
视频静态捕获 MCP
一个通过 OpenCV 访问和控制网络摄像头的 Model Context Protocol 服务器
概述
视频静态捕获 MCP 是 Model Context Protocol (MCP) 的 Python 实现,它为 AI 助手提供了通过 OpenCV 访问和控制网络摄像头及视频源的能力。该服务器提供了一组工具,允许语言模型捕捉图像、操作摄像头设置以及管理视频连接。请注意,这里没有视频录制功能。
示例
以下是一些视频静态捕获 MCP 服务器的实际应用示例:
橙子示例
| 左:Claude 对图像的视图 | 右:实际网络摄像头捕获 |
|---|---|
![]() |
![]() |
磁铁示例
| 左:Claude 对图像的视图 | 右:实际网络摄像头捕获 |
|---|---|
![]() |
![]() |
安装
前提条件
- Python 3.10+
- OpenCV (
opencv-python) - MCP Python SDK
- UV(可选)
从源代码安装
bash
git clone https://github.com/13rac1/videocapture-mcp.git
cd videocapture-mcp
pip install -e .
运行 MCP 服务器:
bash
mcp dev videocapture_mcp.py
与 Claude for Desktop 集成
macOS/Linux
编辑你的 Claude Desktop 配置文件:
bash
Mac
nano ~/Library/Application Support/Claude/claude_desktop_config.json
Linux
nano ~/.config/Claude/claude_desktop_config.json
添加此 MCP 服务器配置:
json
{
"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 替换为项目的绝对路径。
Windows
编辑你的 Claude Desktop 配置文件:
powershell
nano $env:AppData\Claude\claude_desktop_config.json
添加此 MCP 服务器配置:
json
{
"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 来安装服务器:
bash
mcp install videocapture_mcp.py
这将自动配置 Claude Desktop 以使用你的视频捕获 MCP 服务器。
集成后,当请求时 Claude 将能够访问你的网络摄像头或视频源。只需让 Claude 拍照或执行任何与网络摄像头相关的任务即可。
功能
- 快速图像捕获:无需管理连接即可从网络摄像头捕获单张图像
- 连接管理:打开、管理和关闭摄像头连接
- 视频属性:读取和调整摄像头设置,如亮度、对比度和分辨率
- 图像处理:基本的图像变换,如水平翻转
工具参考
quick_capture
快速打开摄像头,捕获单帧图像并关闭它。
python
quick_capture(device_index: int = 0, flip: bool = False) -> Image
- device_index:摄像头索引(0 通常是默认的网络摄像头)
- flip:是否水平翻转图像
- 返回:捕获的帧作为 Image 对象
open_camera
打开到摄像头设备的连接。
python
open_camera(device_index: int = 0, name: Optional[str] = None) -> str- device_index: 摄像头索引(0 通常是默认的网络摄像头)
- name: 可选名称,用于标识此摄像头连接
- Returns: 打开的摄像头连接 ID
capture_frame
从指定的视频源捕获单帧。
python
capture_frame(connection_id: str, flip: bool = False) -> Image
- connection_id: 之前打开的视频连接的 ID
- flip: 是否水平翻转图像
- Returns: 作为 Image 对象捕获的帧
get_video_properties
获取视频源的属性。
python
get_video_properties(connection_id: str) -> dict
- connection_id: 之前打开的视频连接的 ID
- Returns: 视频属性字典(宽度、高度、帧率等)
set_video_property
设置视频源的属性。
python
set_video_property(connection_id: str, property_name: str, value: float) -> bool
- connection_id: 之前打开的视频连接的 ID
- property_name: 要设置的属性名称(宽度、高度、亮度等)
- value: 设置的值
- Returns: 如果成功则返回 True,否则返回 False
close_connection
关闭视频连接并释放资源。
python
close_connection(connection_id: str) -> bool
- connection_id: 要关闭的连接的 ID
- Returns: 如果成功则返回 True
list_active_connections
列出所有活动的视频连接。
python
list_active_connections() -> list
- Returns: 活动连接 ID 列表
示例用法
以下是一个 AI 助手如何使用 Webcam MCP 服务器的示例:
-
快速拍照:
我将使用您的网络摄像头拍摄一张照片。
(AI 会在幕后调用
quick_capture()) -
打开持久连接:
我将打开一个到您网络摄像头的连接,以便我们可以拍摄多张照片。
(AI 会调用
open_camera()并存储连接 ID) -
调整摄像头设置:
让我增加网络摄像头画面的亮度。
(AI 会使用适当的参数调用
set_video_property())
高级用法
资源管理
服务器自动管理摄像头资源,确保在服务器关闭时正确释放所有连接。对于长时间运行的应用程序,最好在不再需要连接时显式关闭它们。
多个摄像头
如果您的系统有多个摄像头,可以在打开连接时指定设备索引:
python
打开第二个网络摄像头(索引 1)
connection_id = open_camera(device_index=1)
故障排除
- 找不到摄像头:请确保您的网络摄像头已正确连接,并且没有被其他应用程序占用
- 权限问题:某些系统需要明确的权限才能访问摄像头
- OpenCV 安装:如果您遇到 OpenCV 相关的问题,请参考 官方安装指南
许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
贡献
欢迎贡献!请随时提交 Pull Request。



