Mcp Frigate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Frigate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server for Frigate NVR, enabling AI assistants to interact with your Frigate security camera system.
git clone https://github.com/yourusername/frigate-mcp.git
cd frigate-mcppython -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activatepip install -e .Create a .env file in the project root:
# Required: URL of your Frigate instance
FRIGATE_FRIGATE_URL=http://localhost:5000
# Optional: API key if authentication is required
# FRIGATE_API_KEY=your_secret_key_here
# Optional: HTTP timeout in seconds (default: 30)
# FRIGATE_TIMEOUT=30The server uses environment variables for configuration. You can set them in:
| Variable | Description | Default | Required |
|---|---|---|---|
FRIGATE_FRIGATE_URL | Base URL of Frigate instance | http://localhost:5000 | No |
FRIGATE_API_KEY | API key for authentication | None | No |
FRIGATE_TIMEOUT | HTTP request timeout (seconds) | 30 | No |
FRIGATE_SERVER_HOST | Server host for SSE/HTTP modes | 0.0.0.0 | No |
FRIGATE_SERVER_PORT | Server port for SSE/HTTP modes | 8000 | No |
Local Frigate instance:
FRIGATE_FRIGATE_URL=http://localhost:5000Remote Frigate with authentication:
FRIGATE_FRIGATE_URL=http://192.168.1.100:5000
FRIGATE_API_KEY=your_secret_key
FRIGATE_TIMEOUT=60The server supports three operational modes:
For direct integration with MCP clients like Claude Desktop:
python -m frigate_mcp.server
# or
frigate-mcpFor web-based clients with real-time updates:
frigate-mcp-sseThe server will start at http://localhost:8000/sse (configurable via environment variables).
Features:
For production deployments and API access:
STDIO Mode (for MCP clients):
python -m frigate_mcp.serverSSE Mode (for web clients):
frigate-mcp-sseHTTP Mode (for REST API):
frigate-mcp-http#### Claude Desktop (STDIO Mode)
Run the included test script to verify your Frigate connection:
python test_connection.pyExpected output:
============================================================
Frigate MCP Server - Connection Test
============================================================
🔧 Frigate Configuration:
URL: http://localhost:5000
API URL: http://localhost:5000/api
Timeout: 30s
📹 Testing /api/config (cameras)...
✅ Found 1 camera(s)
- front_door: enabled
📊 Testing /api/stats...
✅ Frigate version: 0.16.3
✅ Detectors: ['coral']
✅ Active cameras: ['front_door']
...Start the server in stdio mode (for MCP clients):
python -m frigate_mcp.server#### Claude Desktop (STDIO Mode)
Add to your MCP client configuration (e.g., Claude Desktop config.json):
{
"mcpServers": {
"frigate": {
"command": "/path/to/frigate-mcp/.venv/bin/python",
"args": ["-m", "frigate_mcp.server"],
"env": {
"FRIGATE_FRIGATE_URL": "http://localhost:5000"
}
}
}
}#### Web Clients (SSE Mode)
Connect to the SSE endpoint for real-time updates:
const eventSource = new EventSource('http://localhost:8000/sse');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Received:', data);
};#### REST API (HTTP Mode)
Make standard HTTP requests:
# Get cameras
curl http://localhost:8000/tools/get_cameras
# Get events
curl http://localhost:8000/tools/get_events?limit=5
# Get stats
curl http://localhost:8000/tools/get_statsOr use any HTTP client:
import requests
response = requests.post(
'http://localhost:8000/tools/get_events',
json={'camera': 'front_door', 'limit': 10}
)
print(response.json()) "frigate": {
"command": "/path/to/frigate-mcp/.venv/bin/python",
"args": ["-m", "frigate_mcp.server"],
"env": {
"FRIGATE_FRIGATE_URL": "http://localhost:5000"
}
}
}
}The server provides 7 MCP tools for interacting with Frigate:
get_cameras()List all configured cameras with their status and properties.
Returns:
[
{
"name": "front_door",
"enabled": true,
"width": 1920,
"height": 1080,
"fps": 5
}
]get_events(camera, label, limit)Get recent detection events with optional filtering.
Parameters:
camera (optional): Filter by camera namelabel (optional): Filter by object type (person, car, dog, etc.)limit (default: 10): Maximum events to return (1-100)Example:
get_events(camera="front_door", label="person", limit=5)Returns:
[
{
"id": "1234567890.123456-abcdef",
"camera": "front_door",
"label": "person",
"start_time": 1704067200.5,
"end_time": 1704067205.8,
"has_clip": true,
"has_snapshot": true,
"zones": ["entrance"],
"thumbnail": "http://localhost:5000/api/events/1234.../thumbnail.jpg"
}
]get_stats()Get Frigate system statistics and performance metrics.
Returns:
{
"service": {
"uptime": 86400,
"version": "0.16.3",
"storage": {...}
},
"detectors": {
"coral": {
"inference_speed": 8.5,
"detection_start": 1704067200.0
}
},
"cameras": {
"front_door": {
"camera_fps": 5.0,
"process_fps": 5.0,
"detection_fps": 1.2
}
}
}get_event_details(event_id)Get comprehensive details about a specific event.
Parameters:
event_id: Unique event identifierReturns:
{
"id": "1234567890.123456-abcdef",
"camera": "front_door",
"label": "person",
"start_time": 1704067200.5,
"end_time": 1704067205.8,
"duration": 5.3,
"score": 0.87,
"zones": ["entrance"],
"has_clip": true,
"has_snapshot": true,
"media": {
"thumbnail": "http://localhost:5000/api/events/.../thumbnail.jpg",
"snapshot": "http://localhost:5000/api/events/.../snapshot.jpg",
"clip": "http://localhost:5000/api/events/.../clip.mp4"
}
}get_snapshot(camera, timestamp)Get a snapshot URL from a specific camera.
Parameters:
camera: Camera nametimestamp (optional): Unix timestamp for historical snapshotReturns:
{
"camera": "front_door",
"timestamp": "latest",
"url": "http://localhost:5000/api/front_door/latest.jpg",
"description": "Snapshot from front_door (latest)"
}get_recordings(camera, date)Get recording information for a specific camera and date.
Parameters:
camera: Camera namedate (optional): Date in YYYY-MM-DD format (defaults to today)Returns:
{
"camera": "front_door",
"date": "2024-01-01",
"recordings_count": 24,
"total_duration": 86400,
"recordings": [
{
"day": "2024-01-01",
"hour": "10",
"duration": 3600,
"events": 5
}
]
}get_config()Get Frigate configuration summary.
Returns:
{
"cameras": ["front_door", "backyard", "garage"],
"detectors": ["coral"],
"mqtt": {
"enabled": true,
"host": "localhost"
},
"model": "path/to/model.tflite",
"version": "0.16.3"
}frigate-mcp/
├── src/
│ └── frigate_mcp/
│ ├── __init__.py # Package metadata
│ ├── config.py # Configuration management
│ └── server.py # MCP server & tools
├── test_connection.py # Connection test script
├── pyproject.toml # Project dependencies
├── .env # Environment variables (not in git)
└── README.md # This fileMade with ❤️ for the Frigate and MCP communities
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.