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 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": ["--from", "git+https://github.com/adel-s/frigate-auth-mcp", "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.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.1.0
File Size Uploaded Provenance Actions
frigate_auth_mcp-0.1.0.tar.gz 57.4 kB With provenance Details for frigate_auth_mcp-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 64.8 kB

Release files / frigate_auth_mcp-0.1.0.tar.gz

Download URL frigate_auth_mcp-0.1.0.tar.gz
Size 57.4 kB
Tags Source
SHA-256 checksum
How to use checksums
946104572d159b9becb4fcd30cc85399028c18f69b54f3138c60382d9f8aaed9
BLAKE2b-256 checksum
How to use checksums
15ef935d6a4c0d3c9596ef48a8cc93c83b7ae46b3c8b46d2a06975cda6b89d9e
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.0-py3-none-any.whl

Download URL frigate_auth_mcp-0.1.0-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ad7af977a57f8c5de31e1dab409f19fab14e1a723c4f17082170e6a81b1f31b0
BLAKE2b-256 checksum
How to use checksums
35f6a5cbbe75c0b06285a27e2fd16fe226e45a282e10407fe6363665adc447b3
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.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.1.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 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.0 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