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; 480 px, quality 70 by default /api/events/<id>/snapshot.jpg
latest_frame the current frame of a camera; 480 px, quality 70 by default /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.
  • Every tool carries the MCP annotations readOnlyHint: true and destructiveHint: false, so clients can tell that the server only reads.
  • 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.
  • Images default to 480 px and JPEG quality 70 to keep the model's context small; height and quality raise them when a detail is too small to see.
  • Errors come back as short plain messages (object not found, login rejected, access denied, Frigate unreachable) without the internal Frigate host name.

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

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

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.2.0
File Size Uploaded Provenance Actions
frigate_auth_mcp-0.2.0.tar.gz 60.1 kB With provenance Details for frigate_auth_mcp-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for frigate-auth-mcp 0.2.0
File Interpreter ABI Platform Actions
frigate_auth_mcp-0.2.0-py3-none-any.whl Python 3 none any Details for frigate_auth_mcp-0.2.0-py3-none-any.whl

Total release size: 68.2 kB

Release files / frigate_auth_mcp-0.2.0.tar.gz

Download URL frigate_auth_mcp-0.2.0.tar.gz
Size 60.1 kB
Tags Source
SHA-256 checksum
How to use checksums
998b9a64bc6e32fb1c9f6760337fe20caf03c1037ba16963ca3f3bfc6b0125c6
BLAKE2b-256 checksum
How to use checksums
9cb6995f713d5617f4233b67545f5e78d5d3e8408f082fb0b68bda5b38779376
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 Nov 3, 2026.

Transparency log

Release files / frigate_auth_mcp-0.2.0-py3-none-any.whl

Download URL frigate_auth_mcp-0.2.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
353a14c6e23fc709aaba1c6db28227d63520f24de65db19b6728b85bf6aac79f
BLAKE2b-256 checksum
How to use checksums
a0ac1d9ba4b52f2551c00b7d850c66a1c095fedfe7e7568210fd4cd87651bd72
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 Nov 3, 2026.

Transparency log

Security for frigate-auth-mcp 0.2.0

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.2.0.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 Nov 3, 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.

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