Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.6.10 instead.
Reason given by maintainers: Broken dependency metadata (unpinned shared/core dep); install fails. Use @latest.

UniFi Access MCP Server

UniFi Access MCP Server

MCP server exposing UniFi Access tools for LLMs, agents, and automation platforms. Manage doors, credentials, access policies, visitors, events, and devices -- with safe-by-default permissions and preview-before-confirm for all mutations.

License: MIT Python 3.13+

Install

The plugin installs the MCP server, an agent skill for tool discovery, and a guided setup command:

/plugin marketplace add sirkirby/unifi-mcp
/plugin install unifi-access@unifi-plugins

Then run the interactive setup to configure your controller connection:

/unifi-access:setup

This walks you through connecting to your Access controller, explains the dual-auth system (API key for reads, username/password for mutations), and configures permissions — then writes everything to .claude/settings.json. If you already have other UniFi plugins configured on the same controller, the setup will detect and reuse those credentials. Restart Claude Code after setup to connect.

PyPI / Docker

# PyPI
uvx unifi-access-mcp@latest
# or: pip install unifi-access-mcp

# Docker
docker pull ghcr.io/sirkirby/unifi-access-mcp:latest

# From source
git clone https://github.com/sirkirby/unifi-mcp.git
cd unifi-mcp && uv sync

Usage Examples

Once connected, just ask your AI agent in natural language:

"Who badged into the office today? Show me a timeline of all door access events"

"List all access credentials that expire in the next 30 days"

"Show me failed badge attempts at the server room this week — any patterns?"

"Which doors had the most access events today?"

"Create a visitor pass for John Smith with access to the main entrance from 9 AM to 5 PM tomorrow"

"Audit door policies — which doors allow access outside business hours?"

All queries are read-only by default. Mutations (visitor passes, credential changes, door controls) use a preview-then-confirm flow.

Configure

Set these environment variables (or create a .env file). If you used /unifi-access:setup, this is already done.

# Server-specific variables (recommended)
UNIFI_ACCESS_HOST=192.168.1.1      # Controller IP or hostname
UNIFI_ACCESS_USERNAME=admin         # Local admin username
UNIFI_ACCESS_PASSWORD=your-password # Admin password
# Optional:
# UNIFI_ACCESS_API_KEY=             # Official UniFi API key (dual auth)
# UNIFI_ACCESS_PORT=443             # Controller HTTPS port
# UNIFI_ACCESS_VERIFY_SSL=false     # SSL certificate verification

Fallback: The shared UNIFI_* variables (e.g., UNIFI_HOST) also work. The server checks for UNIFI_ACCESS_* first and falls back to UNIFI_* if the server-specific variable is not set. For single-controller setups, the shared variables are all you need.

Dual Authentication

The Access server supports two independent auth paths:

  1. API key -- Uses py-unifi-access on the dedicated Access API port (default 12445). Best for read-only queries and device listing.
  2. Local proxy session -- Logs in via /api/auth/login on the UniFi OS Console (port 443) and proxies requests through /proxy/access/api/v2/.... Required for door lock/unlock, credential management, policies, visitors, and events.

At least one path must be configured. When both are available, each tool selects the most appropriate path. Most mutating tools require the local proxy session.

Run

# stdio transport (default -- for Claude Desktop, LM Studio, etc.)
unifi-access-mcp

# Docker
docker run -i --rm \
  -e UNIFI_ACCESS_HOST=192.168.1.1 \
  -e UNIFI_ACCESS_USERNAME=admin \
  -e UNIFI_ACCESS_PASSWORD=secret \
  ghcr.io/sirkirby/unifi-access-mcp:latest

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "unifi-access": {
      "command": "uvx",
      "args": ["unifi-access-mcp"],
      "env": {
        "UNIFI_ACCESS_HOST": "192.168.1.1",
        "UNIFI_ACCESS_USERNAME": "admin",
        "UNIFI_ACCESS_PASSWORD": "your-password"
      }
    }
  }
}

Features

  • Doors -- list, inspect, lock/unlock, door groups, real-time status
  • Policies -- list, inspect, update access policies and schedules
  • Credentials -- list, inspect, create, revoke NFC cards, PINs, mobile credentials
  • Visitors -- list, inspect, create, delete visitor passes with time-bounded access
  • Events -- query historical events, real-time websocket buffer, activity summaries
  • Devices -- list, inspect, reboot access hubs, readers, relays, intercoms
  • System -- controller info, health metrics, user listing

Agent Skills

The Claude Code plugin ships with agent skills that teach AI assistants how to work with Access effectively:

  • UniFi Access — core skill for door control, credentials, visitors, access policies, and event monitoring. Includes guidance on the dual-auth system, real-time event streaming via WebSocket buffer, and the preview-confirm flow for physical door operations.
  • Setup — interactive configuration wizard that walks through controller connection, credential setup, and permission configuration.

Skills are automatically available when the plugin is installed.

Cross-Product Skills

When the Access plugin is installed alongside the Protect plugin, the security-digest skill can incorporate door events into its analysis. Badge-ins, access-denied events, and after-hours access are correlated with camera motion and alerts from Protect to produce a richer security summary across your full UniFi deployment.

No additional configuration is required — if both plugins are active, the skill automatically pulls from both servers.

Documentation

  • Configuration -- Full env var reference, YAML config, Access-specific options
  • Permissions -- Permission system, category defaults, how to enable mutations
  • Tool Catalog -- All 29 tools organized by category
  • Event Streaming -- Real-time event architecture, WebSocket buffer, polling
  • Troubleshooting -- Connection issues, dual auth debugging, missing tools

Development

cd apps/access
make test         # Run tests
make lint         # Lint
make format       # Format
make manifest     # Regenerate tools_manifest.json
make console      # Start interactive dev console
make pre-commit   # All of the above

See the root CONTRIBUTING.md for the full monorepo workflow.

License

MIT

Metadata

Release files for unifi-access-mcp 0.2.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 unifi-access-mcp 0.2.1
File Size Uploaded
unifi_access_mcp-0.2.1.tar.gz 36.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for unifi-access-mcp 0.2.1
File Interpreter ABI Platform
unifi_access_mcp-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 91.4 kB

Release files / unifi_access_mcp-0.2.1.tar.gz

Download URL unifi_access_mcp-0.2.1.tar.gz
Size 36.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8ea5a4f45f8c4bb9934e65ec4be9e576eaadc8e748a36e69dda60e1e8da9ade1
BLAKE2b-256 checksum
How to use checksums
04be8930456b631090409a703ef04b66071b4c80a17a5bf04b4b7750d2ed1586
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 12, 2026.

Transparency log

Release files / unifi_access_mcp-0.2.1-py3-none-any.whl

Download URL unifi_access_mcp-0.2.1-py3-none-any.whl
Size 54.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40559f7e85bb7e117d225e9497d2e2686a400da50c29f3baecfb3e59ef19c9cf
BLAKE2b-256 checksum
How to use checksums
c742c4775181365d1804c5c1cf47cbe9d8dc2d6d7bdc1e61f73ce8b01ff55676
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

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