返回 MCP 目录
public公开dns本地运行

webcam_mcp

Webcam MCP是一个MCP服务器,为LLM智能体提供网络摄像头访问功能,支持拍照和录制视频,使AI代理能够自主观察物理环境并与之交互。

article

README

🚀 Webcam MCP 📸

Webcam MCP 是一个模型上下文协议(MCP)服务器,它能让大语言模型(LLM)代理直接访问你的网络摄像头。它使自主代理能够拍摄照片和录制视频序列,从而可以在无需人工干预的情况下调试网络物理系统、监控环境以及与现实世界进行交互。

[![PyPI](https://img.shields.io/pypi/v/webcam-mcp)](https://pypi.org/project/webcam-mcp/) [![CI](https://github.com/pavel-kirienko/webcam_mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/pavel-kirienko/webcam_mcp/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Webcam MCP 演示

🚀 快速开始

Webcam MCP 是一个模型上下文协议(MCP)服务器,它能让大语言模型(LLM)代理直接访问你的网络摄像头。它使自主代理能够拍摄照片和录制视频序列,从而可以在无需人工干预的情况下调试网络物理系统、监控环境以及与现实世界进行交互。

✨ 主要特性

  • 📸 高分辨率照片:拍摄静态图像
  • 🎥 视频录制:在指定时间段内录制一系列帧
  • 🌐 远程访问:支持 SSE 传输,便于网络访问部署
  • ⚙️ 可配置:可调整分辨率、摄像头索引和质量设置
  • 🔌 跨平台:支持 Linux、macOS 和 Windows 系统
  • 🚀 易于集成:MCP 客户端配置简单

📦 安装指南

pip install webcam-mcp

启动 MCP 服务器:

webcam-mcp

默认情况下,服务器将在 http://0.0.0.0:8000/sse 上启动。

你可以使用任何 MCP 客户端来测试服务器,例如 MCP Inspector(通过 npx @modelcontextprotocol/inspector 安装)。

CLI 选项

| 选项 | 类型 | 默认值 | 描述 | |--------|------|---------|-------------| | --host | 字符串 | 0.0.0.0 | 服务器主机地址 | | --port | 整数 | 8000 | 服务器端口 | | --camera-index | 整数 | 0 | 网络摄像头设备索引 | | --photo-width | 整数 | 1920 | 默认照片宽度(像素) | | --photo-height | 整数 | 1080 | 默认照片高度(像素) | | --video-width | 整数 | 640 | 默认视频帧宽度(像素) | | --video-height | 整数 | 480 | 默认视频帧高度(像素) | | --version | - | - | 显示版本并退出 |

💻 使用示例

基础用法

# 在自定义端口启动
webcam-mcp --port 9000

# 使用不同的摄像头(例如,外部 USB 网络摄像头)
webcam-mcp --camera-index 1

# 自定义照片分辨率
webcam-mcp --photo-width 1280 --photo-height 720

📚 详细文档

MCP 客户端配置

Claude Desktop

将以下内容添加到你的 claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "webcam": {
      "url": "http://localhost:8000/sse"
    }
  }
}

配置文件位置:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json

其他 MCP 客户端

任何支持 SSE 传输的 MCP 客户端都可以连接到:

http://<主机>:<端口>/sse

MCP 工具

take_photo

从网络摄像头拍摄一张高分辨率照片。 参数:返回值: JPEG 图像 在 Claude 中的使用示例:

你能拍张照片并描述你看到的内容吗?

record_video

在指定时间段内录制视频帧。 参数:

  • duration_seconds(浮点数,可选):录制时长(秒)
    • 最小值:1.0 秒
    • 最大值:60.0 秒
    • 默认值:5.0 秒 返回值: JPEG 帧列表 在 Claude 中的使用示例:
录制一段 10 秒的视频,并分析你检测到的任何运动。

🔧 技术细节

故障排除

摄像头权限被拒(macOS)

在 macOS 系统上,你需要授予摄像头权限:

  1. 打开 系统设置隐私与安全摄像头
  2. 终端(或你的终端应用程序)启用摄像头访问权限
  3. 重启终端并再次尝试

摄像头已在使用中

如果你看到 “摄像头不可用” 错误:

  1. 关闭其他使用网络摄像头的应用程序(如 Zoom、Skype 等)
  2. 检查是否有另一个 webcam-mcp 实例正在运行
  3. 尝试使用不同的摄像头索引:webcam-mcp --camera-index 1

摄像头索引错误

要查找可用的摄像头:

import cv2
for i in range(10):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f"摄像头 {i}: 可用")
        cap.release()
    else:
        print(f"摄像头 {i}: 不可用")

然后使用正确的编号设置 --camera-index

分辨率不支持

如果你的摄像头不支持请求的分辨率,服务器将:

  • 记录一条警告信息,显示实际达到的分辨率
  • 继续使用摄像头支持的最大分辨率运行 检查日志中是否有类似以下的消息:
WARNING: Requested resolution 1920x1080, but camera provided 1280x720

开发

# 以可编辑模式安装并包含开发依赖项
pip install -e ".[dev]"

# 运行所有测试
pytest

# 以详细输出模式运行
pytest -v

# 运行特定的测试文件
pytest tests/test_camera.py

所有测试都使用模拟的摄像头硬件,因此测试时无需物理网络摄像头。

发布

要标记并发布新版本,请将包含新 __version__ 字符串的新提交推送到 main 分支。这将触发一个新的标签,并将新版本推送到 PyPI。

📄 许可证

本项目采用 MIT 许可证

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端