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_IMAGE_MAX_HEIGHT upper limit for the image height in pixels; default no limit
FRIGATE_IMAGE_MAX_QUALITY upper limit for the JPEG quality (1-100); default no limit
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.

Skill

skills/frigate-cameras/SKILL.md tells the assistant how to use the tools: which tool answers which question, text before images, small images, what an empty result or an error means. It is a plain Agent Skill: copy the frigate-cameras folder into the skills folder of your client (for Claude Code .claude/skills/, for Hermes ~/.hermes/skills/<category>/).

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. Models tend to ask for more than they need: FRIGATE_IMAGE_MAX_HEIGHT and FRIGATE_IMAGE_MAX_QUALITY cap what they get, larger requests are lowered to the limit.
  • 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.3.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.3.0
File Size Uploaded Provenance Actions
frigate_auth_mcp-0.3.0.tar.gz 62.9 kB With provenance Details for frigate_auth_mcp-0.3.0.tar.gz

Built distribution (wheel)

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

Total release size: 71.8 kB

Release files / frigate_auth_mcp-0.3.0.tar.gz

Download URL frigate_auth_mcp-0.3.0.tar.gz
Size 62.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2594540828f7f4ee3d3f2276635f33e805b90a1060d529d9149a400a95ed65a0
BLAKE2b-256 checksum
How to use checksums
67d1d8961da1cc49b9abd9ca99ad91fafb5679c83249b5557b3bc45a4547c829
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.3.0-py3-none-any.whl

Download URL frigate_auth_mcp-0.3.0-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e790b012a05e93d342e740db621011ae6f53e79041854740ee041cbb17fb2a60
BLAKE2b-256 checksum
How to use checksums
769795f351be67535653e8fdd394f4f3feb846f6d8e7aa12329c2eee35960d2d
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.3.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.3.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