关于 reolink-mcp
reolink-mcp 是用于在本地网络中查看和控制 Reolink 摄像头的开源 MCP 服务,提供快照、设备状态,以及灯光、警报、变焦和 PTZ 控制。
主要功能
- 01列出摄像头并查看设备详情
- 02获取快照和 AI 检测状态
- 03控制警报、聚光灯、红外灯和 LED
- 04调整变焦并管理 PTZ 预设
- 05限制为只读模式运行
适用场景
- 01通过 MCP 客户端查看摄像头实时快照
- 02检查摄像头状态和近期检测活动
- 03调整摄像头灯光或移动至 PTZ 预设位置
MCP 相关
向 MCP 客户端提供 Reolink 摄像头观察和控制工具。连接仅限本地网络;启动时可移除控制工具以启用只读模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
reolink-mcp
适用于 Reolink 摄像头的开源 MCP(Model Context Protocol)服务:让 Claude — 或任何 MCP 客户端 — 查看和控制本地网络上的 Reolink 摄像头。快照、设备状态、AI 检测状态、PTZ 预设以及 威慑控制(聚光灯、警报器、红外/白光 LED)。仅限本地网络,不使用 云服务。
市场空白(已于 2026-07-08 验证): GitHub、npm 或 PyPI 上都没有专门的 Reolink MCP 服务。
最接近的先例需要中间层:
dedsxc/mcp-frigate(需要 Frigate NVR)、homeassistant-mcp(需要 Home
Assistant)。这是该细分领域首个独立方案。
拥有 Reolink 摄像头的用户将 reolink-mcp 添加到 MCP 客户端配置中,
询问“显示前门摄像头画面”,即可获得实时快照 — 直接连接摄像头,中间无需 NVR
或家庭自动化守护进程。
快速入门
需要一台可在本地网络访问的 Reolink 摄像头及其管理员 用户名/密码。
1. 创建摄像头配置
将 config.example.yaml 复制到
~/.config/reolink-mcp/config.yaml(或者将 RMCP_CONFIG_FILE 指向磁盘上其他位置的副本):
cameras:
front_door:
host: 192.168.1.44
username: admin
密码绝不能写入此文件。为每台摄像头分别设置一个 RMCP_CAMERAS__<name>__PASSWORD
环境变量 — <name> 必须与上方 YAML 中的摄像头键完全一致(小写蛇形命名):
RMCP_CAMERAS__front_door__PASSWORD=<camera-password>
并发会话数限制: Reolink 摄像头允许的同时会话数有限。
reolink-mcp在服务运行期间,会为每台已配置的摄像头保持一个reolink-aio会话 — 若与另一个同样占用这些摄像头会话的系统(NVR、 另一个 MCP 服务等)同时运行,可能会耗尽会话数限制。请参阅下文的 摄像头兼容性与会话数限制。
2. 将其添加到 MCP 客户端
Claude Code:
claude mcp add reolink -- uvx reolink-mcp
Claude Desktop(claude_desktop_config.json — macOS:
~/Library/Application Support/Claude/claude_desktop_config.json,Windows:
%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"reolink": {
"command": "uvx",
"args": ["reolink-mcp"],
"env": {
"RMCP_CAMERAS__front_door__PASSWORD": "<camera-password>"
}
}
}
}
其他任何 MCP 客户端(通用 stdio):
{
"command": "uvx",
"args": ["reolink-mcp"]
}
完成 — 让 MCP 客户端“显示前门摄像头画面”即可。
工具
基于 reolink-aio 和官方 MCP Python SDK 构建。每个工具都带有 readOnlyHint/destructiveHint 注解,以便 MCP 客户端控制审批——Observe 工具为只读,Control 工具会修改摄像头状态,而 set_siren 是唯一标记为具有破坏性的工具。
| 工具 | 类型 | 用途 | 具有破坏性 |
|---|---|---|---|
list_cameras | Observe | 列出所有已配置的摄像头,包括实时连接状态、型号和主机 | 否 |
get_device_info | Observe | 获取摄像头的型号、固件和硬件详情 | 否 |
get_capabilities | Observe | 查看摄像头支持的功能——PTZ、警笛、聚光灯、红外/白色 LED、变焦、AI 检测类型——使用中性的功能术语 | 否 |
get_states | Observe | 查看设备当前状态:日/夜模式、白色 LED/聚光灯、红外灯、警笛功能和移动状态 | 否 |
get_recent_events | Observe | 通过按需轮询获取当前 AI 检测状态(人员/车辆/宠物及摄像头报告的其他项目),以及普通移动标志 | 否 |
get_snapshot | Observe | 获取摄像头的实时静态图像,并以 MCP 图像内容块的形式返回 | 否 |
set_siren | Control | 启动或停止摄像头警笛——默认安全时长约为 5 秒,硬性上限为 60 秒,超过上限的请求会被拒绝而非截断 | 是 |
set_audio_alarm | Control | 启用或禁用摄像头的警笛/音频警报功能——当固件接受 set_siren 却没有发出声音时,需要使用此工具 | 否 |
set_spotlight | Control | 打开或关闭摄像头聚光灯 | 否 |
set_ir_lights | Control | 将摄像头红外灯设为 auto、on 或 off | 否 |
set_white_led | Control | 打开或关闭摄像头白色 LED,并可选择设置亮度 | 否 |
set_zoom | Control | 将摄像头变焦到绝对位置(0-100),或按相对步进放大/缩小 | 否 |
list_presets | Control | 列出摄像头已命名的 PTZ 预设 | 否 |
ptz_move_to_preset | Control | 将摄像头移至已命名(或数字)的 PTZ 预设位置 | 否 |
ptz_position | Control | 读取摄像头当前的水平转动/垂直倾斜/变焦位置;若接近已保存的预设,则显示最近的预设名称 | 否 |
ptz_guard | Control | 配置摄像头的 PTZ 守护点和自动返回(set/goto/enable/disable) | 否 |
安全
RMCP_READ_ONLY=true会在服务器启动时移除全部 10 个 Control 工具——这些工具根本不会注册,而不只是隐藏。服务器会向 stderr 输出一行提示;客户端看到的是干净的只观察服务器,其注册表中完全没有 Control 工具。set_siren在未指定时长时默认鸣响约 5 秒,并会拒绝(绝不静默截断)超过 60 秒硬性上限的请求——清晰的错误信息会要求缩短时长。- 功能检查:每个 Control 工具在发送命令前,都会检查目标摄像头的实际功能;如果不支持,则会直接拒绝(例如“摄像头 'front_door' 不支持警笛”),而不会让原始 API 错误传到客户端。
摄像头兼容性与会话限制
开发期间已在以下设备上进行实时验证:
| 摄像头 | 已验证的功能 |
|---|---|
| P437 | 警报器、聚光灯、变焦 |
| P320 | 红外灯 |
PTZ 工具(list_presets、ptz_move_to_preset、ptz_position、
ptz_guard)仅经过模拟验证,尚待真实 PTZ 硬件验证。
并发会话限制: reolink-aio 会在服务进程的整个生命周期内,为每台摄像头维护一个长期会话。
Reolink 摄像头会限制其可接受的同时会话数量;如果在另一套独立连接同一批摄像头并持有会话的系统(NVR、Reolink 自有应用或另一套自动化系统)运行时启动 reolink-mcp,可能会达到此上限。本项目的开发环境也会连接与另一套独立系统共享的摄像头,并已在这一确切的共存条件下进行过测试——如果遇到登录或会话错误,请先检查当前是否有其他程序占用了摄像头会话。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。