ring-recap-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | IANA zone used for "a day" and for all displayed times | America/New_York |
| vaultDir | No | Footage, clip JSON, thumbnails, recaps, ledger, logs | ~/RingVault |
| describer | No | Vision describer: grok or ollama | grok |
| grokModel | No | Grok vision model | grok-4 |
| concurrency | No | Clips processed in parallel | 3 |
| ollamaModel | No | Ollama vision model | qwen2.5-vl:7b |
| locationName | No | Ring location to read. Blank means the account's only location. Others are ignored. | |
| whisperModel | No | Whisper model filename in ~/.local/share/ring-recap/models | ggml-large-v3-turbo.bin |
| minFreeDiskGB | No | Refuse to sync below this free disk space | 20 |
| syncHourLocal | No | Hour of the nightly job | 4 |
| maxFramesPerClip | No | Maximum number of sampled frames per clip | 24 |
| RING_RECAP_CONFIG | No | Path to the config file (default: ~/.config/ring-recap/config.json) | |
| frameEverySeconds | No | Frame sampling interval in seconds | 2 |
| silenceDbThreshold | No | Silence threshold in dB used to skip transcription | -45 |
| timePaddingSeconds | No | Pad every time-frame window by this many seconds on both sides | 10 |
| skipTranscriptIfSilent | No | Skip whisper on quiet clips | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Daily recaps of the Ring cameras at one location. Call get_recap (no args) each morning for yesterday. Use search_events to find specific moments, get_clip_detail for one clip, health if something looks off.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_camerasA | Lists the Ring cameras at the configured Ring location (other locations are ignored) with id, name, online state, last event time and model. |
| sync_dayA | Pulls, transcribes, describes and recaps every clip at the configured location for a date (default yesterday). Idempotent: only clips not already done are processed. Returns the run summary, or progress if it is still running (call again to check). |
| healthB | Auth state, last run, offline cameras, failed clips (last 7 days), vault size, free disk and whether end-to-end encryption looks enabled. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: listing cameras, processing daily clips, and reporting system health. There is no meaningful overlap between discovery, pipeline execution, and diagnostics.
list_cameras and sync_day follow a clear verb_noun snake_case convention. health is a bare noun rather than verb_noun, which is a minor but noticeable deviation.
Three tools is well-scoped for a focused camera-recap pipeline. Each tool maps to a necessary phase: discovery, processing, and health/diagnostics.
The surface covers camera discovery, daily ingestion/recap, and operational health. Minor gaps exist around browsing generated recaps or filtering syncs by camera, but core workflows are covered.