CCTV VMS MCP Server for Live and Playback
Access CCTV VMS with an MCP server to stream live and recorded video and control channel playback at specified times.
npx -y @jyjune/mcp_vmsOverview
This MCP (Model Context Protocol) server provides a bridge between CCTV Video Management Systems (VMS) and clients that consume video via the MCP interface. It exposes MCP-style endpoints to request live streams, request time-based playback on a specific channel, and send playback control commands (play, pause, seek, speed). The server acts as a translator and proxy: it talks to a VMS (RTSP, vendor API, or stream URLs) and exposes simplified, consistent MCP HTTP/JSON endpoints for downstream clients.
This is useful when you need to integrate CCTV streams into analytics pipelines, UI dashboards, or third‑party tools that already speak MCP. Instead of implementing many vendor-specific integrations, clients can call the MCP server to get a live feed or replay recorded footage at a specified wall-clock time and control playback programmatically.
Features
- Proxy live CCTV streams through MCP-compatible endpoints
- Request recorded playback by specifying channel and time range
- Playback control: play, pause, seek, change speed
- Configurable per-channel mappings to VMS streams or API endpoints
- Authentication and TLS support for secure VMS access
- Lightweight deployment: binaries or container image (Docker)
- Simple JSON REST API that fits MCP request/response patterns
- Optional WebSocket or chunked HTTP for streaming data to clients
Installation / Configuration
Below are general installation and configuration examples. Adjust for the language/build system in the repository (build steps are typical but may vary).
Clone and build from source
# If the project uses Go (example)
# Or use a provided Makefile
Run with a configuration file (YAML)
# config.yml
server:
listen: "0.0.0.0:8080"
tls: false
vms:
# If your VMS has an API, put base URL and credentials
api_base: "https://vms.example.local/api"
username: "admin"
password: "changeme"
channels:
cam-entrance:
type: rtsp
url: "rtsp://vms.example.local/stream/1"
cam-lobby:
type: rtsp
url: "rtsp://vms.example.local/stream/2"
Start the server (binary)
Docker (recommended for quick runs)
Configuration options (summary table)
| Option | Example | Description | |||
|---|---|---|---|---|---|
| server.listen | 0.0.0.0:8080 | Bind address for MCP endpoints | |||
| server.tls | false | Enable TLS termination (if supported) | |||
| vms.api_base | https://vms.example.local/api | VMS API base for recordings/controls | |||
| vms.username / vms.password | admin / changeme | VMS credentials (or token) | |||
channels.| rtsp | Channel transport (rtsp, url, api) | channels. | rtsp://… | Stream URL or VMS identifier | API (Available Resources)The server exposes a small set of HTTP JSON endpoints that implement MCP-style operations. Example endpoints:
Example: request live stream Response (example) Example: request playback by wall-clock time Playback control (seek / pause / speed) Notes:
Use Cases
Developer Tips
|