# reolink-mcp [Health: Active]

**Category:** 🏠 Home Automation  
**Repository:** https://github.com/ed-dryha/reolink-mcp  
**GitHub Stars:** 3  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/reolink-mcp

## Description
MCP server for Reolink cameras: snapshots, device state, AI detection, PTZ, and deterrence controls

## Tools
Capabilities this server exposes over MCP:

- **list_cameras** — Enumerate every configured camera with live connection status, model, and host
- **get_device_info** — Model, firmware, hardware details for a camera
- **get_capabilities** — What a camera supports — PTZ, siren, spotlight, IR/white LED, zoom, AI detection types — in neutral feature vocabulary
- **get_states** — Current device state: day/night mode, white LED/spotlight, IR lights, siren capability, and motion
- **get_recent_events** — Current AI detection state (person/vehicle/pet plus any camera-reported extras) from an on-demand poll, plus the plain motion flag
- **get_snapshot** — Live still image from a camera, returned as an MCP image content block
- **set_siren** — Sound or stop a camera's siren — ~5s safe default, 60s hard cap, over-cap requests refused not clamped
- **set_audio_alarm** — Enable or disable a camera's siren/audio-alarm feature — needed when `set_siren` is accepted by the firmware but produces no sound
- **set_spotlight** — Turn a camera's spotlight on or off
- **set_ir_lights** — Set a camera's IR lights to `auto`, `on`, or `off
- **set_white_led** — Turn a camera's white LED on or off, with optional brightness
- **set_zoom** — Zoom a camera to an absolute position (0-100) or a relative in/out step
- **list_presets** — List a camera's named PTZ presets
- **ptz_move_to_preset** — Move a camera to a named (or numeric) PTZ preset
- **ptz_position** — Read a camera's current pan/tilt/zoom position, naming the nearest saved preset when close
- **ptz_guard** — Configure a camera's PTZ guard point and auto-return (`set`/`goto`/`enable`/`disable`)

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "reolink-mcp": {
    "command": "uvx",
    "args": ["reolink-mcp"],
    "env": {
      "RMCP_CONFIG_FILE": "",
      "RMCP_CAMERAS__NAME__PASSWORD": "",
      "RMCP_READ_ONLY": ""
    }
  }
}
```

**Requires environment variables:** `RMCP_CONFIG_FILE`, `RMCP_CAMERAS__NAME__PASSWORD`, `RMCP_READ_ONLY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What reolink-mcp MCP server does

The reolink-mcp MCP server exposes local Reolink camera operations through the Model Context Protocol. It can enumerate configured cameras, report connection status and hardware information, inspect supported features, and retrieve current device states. Detection polling includes plain motion plus camera-reported AI categories such as person, vehicle, and pet.

The server also returns live still images through MCP image content blocks. For cameras with the relevant hardware, agents can control the siren, audio-alarm setting, spotlight, IR lights, white LED, zoom, and PTZ functions. PTZ operations include listing presets, moving to a preset, reading the current position, and configuring a guard point with automatic return behavior.

## How it works

Communication goes directly from the server to cameras on the local network. No cloud service, NVR, Home Assistant instance, or other intermediary is described as required. The implementation uses the `reolink-aio` library and the official MCP Python SDK, and maintains one long-lived session for each configured camera while the process runs.

Tools are divided into observation and control operations. Observation tools read information without changing the camera. Control tools can mutate camera state, while `set_siren` is specifically marked destructive. MCP clients can use the tool annotations to manage approval prompts.

Control requests are checked against the camera's reported capabilities before being sent. Unsupported functions should produce a clear refusal rather than a raw device API error. Siren activation defaults to about five seconds and rejects durations above 60 seconds instead of reducing them automatically.

## Setup and configuration

Install the server with a generic stdio MCP configuration, commonly using `uvx reolink-mcp`. Create a YAML file at `~/.config/reolink-mcp/config.yaml`, or provide another path through `RMCP_CONFIG_FILE`. Each camera entry needs a key, host, and username. Passwords are supplied separately through an environment variable named `RMCP_CAMERAS__<name>__PASSWORD`, where the name matches the YAML key exactly.

Claude Code and Claude Desktop configuration examples are provided in the project material. Other MCP clients can use the same command and arguments through stdio. `RMCP_READ_ONLY=true` removes all control tools when the server starts, leaving only observation tools registered.

## Limitations and notes

The reolink-mcp MCP server requires a reachable Reolink camera and valid administrator credentials. Camera session capacity is a practical deployment constraint: the server keeps one session per configured camera, so another NVR, app, automation system, or MCP process may cause login or session errors if the camera's limit is exceeded.

Live development validation covered siren, spotlight, and zoom on a P437, and IR lights on a P320. PTZ operations were mock-validated only, so real PTZ hardware validation remains pending. Feature availability also depends on each camera's capabilities; the server checks those capabilities before issuing control commands.

_Full upstream README: https://allmcps.com/mcp/reolink-mcp/readme_

