摄像头控制服务

一个用于控制和捕获IP/RTSP摄像头的模型上下文协议(MCP)服务器,支持从Claude Desktop、Cursor或任何MCP兼容客户端直接访问和分析摄像头。

  • by mamorett
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mamorett/mcp_camsnap

使用说明

📸 camsnap mcp

MCP(模型上下文协议)服务器 照相机 --直接从Claude Desktop、Cursor或任何兼容MCP的客户端控制、捕获和分析您的IP/RTSP摄像机。

[!注意] 此MCP服务器是围绕 照相机 项目。

graph TD
    Client[MCP Client e.g., Claude, Cursor] <-->|MCP JSON-RPC| Server[camsnap-mcp Server]
    Server <-->|Subprocess Exec| Camsnap[camsnap CLI]
    Camsnap <-->|FFmpeg / RTSP| Cameras[IP / RTSP Cameras]
    Camsnap -->|Saves Assets| Disk[Local Disk / Temporary Directory]

📂 存储库结构

camsnap-mcp/
├── [pyproject.toml](file:///gorgon/ia/mcp_camsnap/pyproject.toml)
└── src/
    └── camsnap_mcp/
        ├── __init__.py
        └── [server.py](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py)

🛠️ 先决条件

在使用此MCP服务器之前,您必须 camsnap 在您的系统上安装和配置。

[!重要]

  1. 安装凸轮卡扣:按照以下说明操作 steipete/camsnap 安装二进制文件及其依赖项(如FFmpeg)。
  2. 配置摄像头:确保您有一个有效的配置文件。默认情况下, camsnap 在里面找 $XDG_CONFIG_HOME/camsnap/config.yaml 或 ~/.camsnap.yaml。您可以通过运行以下命令来验证您的设置 camsnap list 在你的终端。

自定义配置和温度路径

您可以使用以下环境变量配置服务器:

  • CAMSNAP_CONFIG:如果您的配置文件位于非标准位置,请指定其绝对路径。
  • CAMSNAP_TMP_DIR:保存本地文件(快照、剪辑)的路径。默认为 ~/.camsnap/tmp.
  • CAMSNAP_RESIZE_MAX:将其设置为像素值(例如。, 1024 或 768)自动缩减内联返回的快照。这有助于节省LLM提示中的令牌使用,同时保持足够的详细信息以供分析。

🚀 安装

将以下内容添加到MCP客户端配置中(例如。, claude_desktop_config.json):

{
  "mcpServers": {
    "camsnap": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/mamorett/mcp_camsnap.git",
        "mcp-camsnap"
      ],
      "env": {
        "CAMSNAP_CONFIG": "/path/to/your/camsnap.yaml",
        "CAMSNAP_TMP_DIR": "/path/to/a/safe/tmp/dir",
        "CAMSNAP_RESIZE_MAX": "1024"
      }
    }
  }
}

[!提示] 使用 uvx 自动处理Python服务器的下载和隔离。无手册 pip install 是必需的。


🔧 可用工具

此MCP服务器公开了以下工具:

工具 签名 描述 返回类型
[列表_相机](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py#L68-L73) list_cameras() -> str 列出camsnap配置文件中配置的所有摄像头。 str (摄像机列表)
[捕捉快照](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py#L113-L170) capture_snap(camera_name: str) -> Image 捕获快照并将其直接内联返回给客户端。 Image (内联图像块)
[保存快照](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py#L75-L111) save_snap(camera_name: str, target_path: str | None = None) -> str 捕获快照并将其直接保存到 target_path。如果未指定,则保存到临时目录中带时间戳的文件中。 str (带路径的确认消息)
[捕获_链接](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py#L172-1200) capture_clip(camera_name: str, duration: int = 10) -> str 将短MP4视频剪辑录制到临时文件中,并返回其在主机系统上的绝对路径。 str (带路径的确认消息)
[capture_raw_clip](file:///gorgon/ia/mcp_camsnap/src/camsnap_mcp/server.py#L202-L248) capture_raw_clip(camera_name: str, duration: int = 10) -> dict 录制一个简短的MP4视频片段,并返回其base64编码的原始二进制内容。 dict (MIME类型和base64字符串)

💻 本地开发

如果要在本地运行或修改服务器:

# Clone the repository
git clone https://github.com/mamorett/mcp_camsnap
cd mcp_camsnap

# Install with development dependencies
uv pip install -e .

# Run the MCP server locally
mcp-camsnap