视频静止捕获MCP
一种通过OpenCV访问和控制网络摄像头的模型上下文协议服务器
概述
Video Still Capture MCP是模型上下文协议(MCP)的Python实现,它为AI助手提供了通过OpenCV访问和控制网络摄像头和视频源的能力。此服务器公开了一组工具,允许语言模型捕获图像、操纵相机设置和管理视频连接。没有视频捕捉。
例子
以下是一些正在运行的视频静止捕获MCP服务器的示例:
橙色示例
| 左:克劳德对图像的看法 | 右:实际网络摄像头捕捉 |
|---|---|
| Claude's view of orange | Webcam capture of orange |
磁铁示例
| 左:克劳德对图像的看法 | 右:实际网络摄像头捕捉 |
|---|---|
| Claude's view of magnet | Webcam capture of magnet |
安装
先决条件
- Python 3.10+
- OpenCV (
opencv-python) - MCP Python SDK
- 紫外线的 (可选)
从源头安装
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服务器:
- 快速拍照:
I'll take a photo using your webcam.(AI会打电话给 quick_capture() 幕后)
- 打开持久连接:
I'll open a connection to your webcam so we can take multiple photos.(AI会打电话给 open_camera() 并存储连接ID)
- 调整相机设置:
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许可证获得许可-有关详细信息,请参阅许可证文件。
贡献
欢迎投稿!请随时提交拉取请求。
