Skip to main content

tests publish

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

  1. 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.
  2. 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 (8971 by default) only, never to the unauthenticated internal port 5000, 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 is POST /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/review returns only the last 24 hours; list_reviews asks for the last 7 days instead, so "what happened this week" gets a full answer.
  • list_events with has_description filters 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)

Source distribution for frigate-auth-mcp 0.1.1
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)

Table of built distributions (wheels) for frigate-auth-mcp 0.1.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page