摄像头MCP服务器
一个MCP(模型上下文协议)服务器,为克劳德等人工智能助手提供网络摄像头访问。这使得AI能够通过计算机的摄像头看到和监控物理世界。
特性
- 列出可用摄像头:检测所有连接的网络摄像头
- 捕获图像:从任何相机拍摄单张快照
- 捕获序列:随着时间的推移拍摄多张图像进行监控或延时拍摄
- 相机控制:调整亮度、对比度、曝光和其他设置
- 高质量:可配置的分辨率和图像质量
- 摄影机:支持多个同时运行的摄像头
用例
- 机器人学:监控机器人位置和图形输出(例如iRobot Root)
- 科学实验:观察化学反应、植物生长或物理演示
- 硬件项目:检查电路板、3D打印或CNC操作
- 质量控制:验证物理输出是否与预期结果匹配
- 数据收集:收集视觉数据进行分析或培训
安装
先决条件
- Python 3.10或更高版本
- 连接到计算机的网络摄像头
- Claude Desktop应用程序(或其他MCP客户端)
安装服务器
- 导航到项目目录:
cd "E:\SolSync\Projects\code stuff\camera_mcp"- 在开发模式下安装:
pip install -e .这将安装所需的依赖项:
mcp-模型上下文协议SDKopencv-python-摄像头接入和图像处理numpy-数组操作pillow-图像编码
配置Claude桌面
将此添加到您的Claude Desktop配置文件中:
视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"camera": {
"command": "python",
"args": [
"-m",
"camera_mcp.server"
]
}
}
}更新配置后重新启动Claude Desktop。
可用工具
list_cameras
列出系统上所有可用的摄像头设备。
No parameters required返回有关每个相机的信息,包括ID、分辨率和帧率。
capture_image
从网络摄像头捕获单张图像。
参数:
camera_id(整数,默认值:0):相机索引(默认相机为0)width(整数,可选):图像宽度(像素)height(整数,可选):图像高度(像素)format(字符串,默认值:“jpeg”):图像格式(“jpeg”或“png”)quality(整数,默认值:95):JPEG质量(1-100)warmup_frames(整数,默认值:5):捕获前要跳过的帧(有助于自动曝光)
例子:
Can you capture an image from my webcam to see if the robot is still on the table?捕获序列
随着时间的推移拍摄多张图像。
参数:
camera_id(整数,默认值:0):相机索引num_frames(整数,默认值:5):要捕获的帧数(最大30)interval(数字,默认值:1.0):捕获间隔(秒)width(整数,可选):图像宽度height(整数,可选):图像高度format(字符串,默认值:“jpeg”):图像格式quality(整数,默认值:85):JPEG质量
例子:
Capture 10 frames over 30 seconds so I can see how the chemical reaction progresses.get_camera_info
获取有关相机当前设置和功能的信息。
参数:
camera_id(整数,默认值:0):相机索引
返回分辨率、FPS、亮度、对比度、饱和度和曝光设置。
set_camera_property
调整相机设置以获得更好的图像质量。
参数:
camera_id(整数,默认值:0):相机索引property_name(string):要调整的属性:
- brightness:亮度级别 - contrast:对比度 - saturation:颜色饱和度 - hue:色调 - exposure:暴露时间 - gain:信号放大 - focus:焦距 - auto_exposure:启用/禁用自动曝光 - auto_focus:启用/禁用自动对焦
value(数字):属性值(范围取决于属性)
例子:
The image is too dark - can you increase the brightness to 0.7?release_camera
释放/关闭相机以释放资源。
参数:
camera_id(整数,默认值:0):相机索引
如果您需要切换摄像头或其他应用程序需要访问摄像头,则很有用。
用法示例
基本图像捕捉
"Can you take a picture from my webcam so I can see what's on my desk?"Claude将捕获一张图像并在对话中显示。
监控机器人
"I'm running my Root robot to draw a square. Can you capture an image
every 10 seconds for the next minute to make sure it's working correctly?"克劳德将拍摄6张照片,并向您展示机器人的进展。
调整相机设置
"The images are coming out too dark. Can you check the camera settings
and increase the exposure?"Claude将检查当前设置并根据需要进行调整。
质量控制
"I'm 3D printing a part. Can you take a high-resolution photo so I can
check if the layers are printing correctly?"克劳德将拍摄一张高质量的图像进行详细检查。
技术细节
图像编码
图像被捕获为OpenCV帧(BGR格式),转换为RGB,并编码为JPEG或PNG。然后,它们被base64编码并在MCP响应中返回,这样克劳德就可以在对话中直接看到它们。
摄像头管理
服务器保持持久的摄像头连接,以避免重新打开开销。在摄像机之间切换或服务器退出时,摄像机会自动释放。
演出
- 预热框架:默认情况下,在拍摄前跳过5帧,以使相机自动曝光和白平衡稳定
- 质量与尺寸:质量为85-95的JPEG格式在保持视觉质量的同时提供了良好的压缩
- 决心:大多数网络摄像头支持640x480(VGA)、1280x720(HD)或1920x1080(全高清)
故障排除
未找到摄像头
- 检查您的网络摄像头是否已物理连接
- 确保没有其他应用程序正在使用该摄像头
- 尝试拔下并重新连接网络摄像头
- 检查Windows设备管理器以验证摄像头是否被识别
未能捕获图像
- 另一个应用程序可能正在使用该摄像头
- 尝试拨打电话
release_camera先捕获,然后再捕获 - 检查摄像头索引是否正确(使用
list_cameras)
图像质量低
- 增加
quality参数(最多100) - 使用PNG格式进行无损压缩
- 使用指定更高的分辨率
width和height - 通过以下方式调整相机属性
set_camera_property
图像太暗/太亮
- 使用
set_camera_property调整brightness和exposure - 增加
warmup_frames给自动曝光更多时间 - 检查房间照明条件
发展
项目结构
camera_mcp/
├── camera_mcp/
│ ├── __init__.py
│ └── server.py # Main MCP server implementation
├── pyproject.toml # Package configuration
└── README.md # This file依赖项
- opencv python:摄像头接入和图像处理
- 数值Python:图像数据的数组操作
- 枕头:图像编码(JPEG/PNG)
- 主控程序:模型上下文协议SDK
测试
您可以直接测试摄像头服务器:
python -m camera_mcp.server或使用MCP检查器:
mcp inspect python -m camera_mcp.server未来的增强功能
潜在补充:
- 带音频的视频录制
- 人脸/物体检测
- 运动检测警报
- 图像比较/差异
- 光学字符识别(OCR)
- 二维码/条形码扫描
- 颜色分析和直方图
- 与计算机视觉模型集成
许可证
这是一个为教育和研究目的而创建的个人项目。
作者
Josh Koets-美国国家遗产学院首席人工智能开发人员
旨在使人工智能助手能够通过网络摄像头观察物理世界并与之互动,支持机器人项目、科学实验和实践学习活动。
