frigate-auth-mcp
What
An MCP server with authentication for Frigate NVR: lets an AI assistant (Claude Code, Claude Desktop, Hermes or any other MCP client) look at your cameras, events and reviews - and nothing more.
It logs in to Frigate's authenticated port as a user with the viewer role, so Frigate itself enforces what the
assistant may see. Tested with Frigate 0.17.x.
Install
Python 3.11+ and uv. Nothing to install by hand: the MCP client starts the server from PyPI with
uvx frigate-auth-mcp
The latest code from GitHub runs with uvx --from git+https://github.com/adel-s/frigate-auth-mcp frigate-auth-mcp.
Setup
- In Frigate, create a user for the assistant (Settings -> Users) with the role
viewer. If the role lets you limit cameras, give it only the cameras the assistant should see. - Add the server to your MCP client. For Claude Code, in
.mcp.json:
{
"mcpServers": {
"frigate": {
"command": "uvx",
"args": ["frigate-auth-mcp"],
"env": {
"FRIGATE_URL": "https://frigate.example.com:8971",
"FRIGATE_USER": "assistant",
"FRIGATE_PASSWD": "${FRIGATE_PASSWD}"
}
}
}
}
Keep the password out of the file: put it in the environment the client runs in.
Tools
| Tool | What it returns | Frigate API |
|---|---|---|
frigate_status |
version, uptime, the cameras this user may see, per-camera fps | /api/stats, /api/profile, /api/version |
list_events |
tracked-object events, filters by camera, label, time, GenAI description | /api/events |
get_event |
one event in detail, with its GenAI description | /api/events/<id> |
event_snapshot |
snapshot of an event with the bounding box, optionally cropped | /api/events/<id>/snapshot.jpg |
latest_frame |
the current frame of a camera | /api/<camera>/latest.jpg |
list_reviews |
review items as in the Frigate UI, last 7 days by default | /api/review |
review_summary |
alert and detection counts for the last 24 hours and per day | /api/review/summary |
Environment
| Variable | Meaning |
|---|---|
FRIGATE_IMAGE_CAMERAS |
cameras allowed to return images, comma-separated; default all |
FRIGATE_PASSWD |
password of the Frigate user, required (secret) |
FRIGATE_TIMEOUT |
seconds per request, default 30 |
FRIGATE_URL |
base URL of the authenticated port, default http://localhost:8971 |
FRIGATE_USER |
Frigate username, required |
Safety
- Talks to the authenticated port (
8971by default) only, never to the unauthenticated internal port5000, which gives full API access to anyone who can reach it. - Logs in as a Frigate user with the role
viewer; the only non-GET call isPOST /api/login. - No tool deletes, exports, edits the config or restarts anything.
- The raw Frigate config is not exposed: it carries camera stream URLs with credentials.
- Optional image filter
FRIGATE_IMAGE_CAMERAS: only these cameras return images (snapshots, frames). This is the second layer of protection, after the camera limit of the Frigate user's role; by default all cameras are allowed. Use it when the MCP client sends images to a third-party model and some frames, such as indoor cameras, must not leave your home.
Why
The Frigate MCP server I found talks to port 5000 without authentication and exposes tools that delete events,
start exports, save the config or restart Frigate. Handing that to an AI model is more trust than a camera system
deserves. This server gives the assistant eyes, not hands.
Notes
- Without
after, Frigate's/api/reviewreturns only the last 24 hours;list_reviewsasks for the last 7 days instead, so "what happened this week" gets a full answer. list_eventswithhas_descriptionfilters on the GenAI description, which the Frigate API cannot do itself.
Tests
uv run python -m unittest discover -s tests
The tests use unittest and a fake Frigate API on httpx.MockTransport, so they need no running Frigate. They
also check that no tool sends anything but GET, apart from the login.
GitHub Actions runs them on Python 3.11 to 3.14 on each push to master and dev/* branches.
Development
I don't accept pull requests, sorry: my code, my rules. But if something doesn't work or you need a new feature, feel free to open an issue and I'll fix it ASAP.
License
MIT, see LICENSE.
Metadata
Release files for frigate-auth-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| frigate_auth_mcp-0.1.1.tar.gz | 58.9 kB | With provenance | Details for frigate_auth_mcp-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| frigate_auth_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for frigate_auth_mcp-0.1.1-py3-none-any.whl |
Total release size: 66.4 kB
Release files / frigate_auth_mcp-0.1.1.tar.gz
| Download URL | frigate_auth_mcp-0.1.1.tar.gz |
|---|---|
| Size | 58.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7ed9d9fbe45421ed57d34b1777f6bde133ea8e0566e7b2e668ea8af0b600d3d0
|
|
BLAKE2b-256 checksum How to use checksums |
61f1bd5dbaf8011d49bac3f251be8c1366901902a9d8ee217577c484f4a7618c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / frigate_auth_mcp-0.1.1-py3-none-any.whl
| Download URL | frigate_auth_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 7.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
04e15aed2289c13ec886eddc747206891472d6ad69d37f5d2e765b89267c2675
|
|
BLAKE2b-256 checksum How to use checksums |
64108ee66acb9f5b157c9bb4a55af54ba59d3fe8985994879b2f4b0a28ebc4db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for frigate-auth-mcp 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for frigate_auth_mcp-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.