UniFi Access MCP for UniFi: safety score
B 76 Provisional Not reviewed Not tested read-only mode
UniFi Access MCP is a community MCP server for UniFi with 23 read, 5 write and 8 destructive tools. It has a read-only mode and needs to run locally and a secret in an environment variable; its provisional OpsMCP grade is B (76%), last checked 16 Oct 2026.
Manage UniFi Access doors, credentials, policies, visitors, and events via MCP.
Tool capability partly scored. Access partly scored. 2 of 4 factors scored.
Can it change or delete things?
Yes. The extracted tools include at least one destructive tool, so it can change or delete things.
| Tool | Class |
|---|---|
access_batch Execute multiple UniFi Access tools in parallel through the indirect execution wrapper. Returns job IDs; use access_batch_status to check progress.
from the description (execute) | Destructive |
access_batch_status Check status of UniFi Access batch operations. Returns status, result (if done), or error (if failed).
from the name | Unknown |
access_create_credential Create a new access credential (NFC card, PIN, or mobile credential) and assign it to a user. Requires confirm=true to execute. Only available via local proxy session.
from the name (create) | Write |
access_create_visitor Create a visitor pass in the UniFi Access Developer API. The returned UUID is scoped to the Access Developer API visitor tool family — use it only with access_get_visitor and access_delete_visitor. Requires a UniFi Access API token and confirm=true to execute.
from the name (create) | Write |
access_delete_visitor Delete a visitor pass through the UniFi Access Developer API, revoking its access; the controller retains a cancelled historical record. The UUID must come from access_list_visitors and is scoped to this visitor tool family — do not pass IDs from other Access user or credentia...
from the name (delete) | Destructive |
access_execute Execute a UniFi Access tool (door locks, access readers, credentials, visitors, access policies, and entry events) by name for lazy/meta-only workflows.
from the name (execute) | Destructive |
access_get_activity_summary Get an aggregated activity summary for Access events over a time period. Shows event counts, breakdowns by type, and trends. Optionally scope to a single door. Only available via local proxy session.
from the name (get) | Read |
access_get_credential Returns detailed information for a single access credential including type, status, assigned user, and creation date.
from the name (get) | Read |
access_get_device Returns detailed information for a single Access device including name, type, connection state, firmware version, MAC, and IP address.
from the name (get) | Read |
access_get_device_configs Returns a device's settings (its configs[] array) — the per-device settings the Access web UI edits, such as the reader voice greeting. Each entry is a {key, value, tag} record; tags group entries by category (device_setting, device_extra, hub_action, hub_power, wiring_state, ...
from the name (get) | Read |
access_get_door Returns detailed information for a single door including lock state, configuration, and connected devices.
from the name (get) | Read |
access_get_door_status Returns the current lock and position status for a single door. Lightweight alternative to access_get_door when you only need state info.
from the name (get) | Read |
access_get_event Returns detailed information for a single access event including event type, door, user, timestamp, and result.
from the name (get) | Read |
access_get_health Returns Access system health summary including API client and proxy session status. Use to verify connectivity and diagnose auth path issues.
from the name (get) | Read |
access_get_policy Returns detailed information for a single access policy including assigned doors, schedule, user groups, and configuration.
from the name (get) | Read |
access_get_support_bundle Generate sanitized UniFi Access support evidence for user review. Summary is local/cache-only; live probes are bounded and explicitly allowlisted.
from the name (get) | Read |
access_get_system_info Returns Access controller model, firmware version, uptime, and connected device counts. Use for basic health checks and capacity overview.
from the name (get) | Read |
access_get_visitor Return one visitor pass from the UniFi Access Developer API. The visitor UUID must come from access_list_visitors and is scoped to this visitor tool family — do not pass IDs from other Access user or credential tools.
from the name (get) | Read |
access_list_credentials Lists all access credentials (NFC cards, PINs, mobile credentials) with their type, status, and assigned user.
from the name (list) | Read |
access_list_devices Lists all Access hardware devices (hubs, readers, relays, intercoms) with their name, type, connection state, and firmware version.
from the name (list) | Read |
access_list_door_groups Lists all door groups configured on the Access controller. Door groups organize doors for policy assignment. Only available via local proxy session.
from the name (list) | Read |
access_list_doors Lists all doors managed by the Access controller with their name, lock state, and connection status. Use to get an overview of all doors.
from the name (list) | Read |
access_list_events Query access events from the controller with optional filters. Returns events such as door unlocks, access denials, and system events. Supports filtering by time range, door, user, and result limit. For real-time buffer events use access_recent_events.
from the name (list) | Read |
access_list_policies Lists all access policies configured on the Access controller. Shows policy name, assigned doors, schedules, and user groups.
from the name (list) | Read |
access_list_schedules Lists all access schedules configured on the Access controller.
from the name (list) | Read |
access_list_users Lists all users registered in the Access controller with their access credentials and groups. Use to audit who has physical access or to look up a specific user.
from the name (list) | Read |
access_list_visitors List visitor passes from the UniFi Access Developer API. Returned UUIDs are scoped to the Access Developer API visitor tool family — pass them only to access_get_visitor and access_delete_visitor; do not pass them to other Access user or credential tools.
from the name (list) | Read |
access_load_tools Load UniFi Access tools (door locks, access readers, credentials, visitors, access policies, and entry events) for direct MCP access. Advanced lazy-mode extension that emits notifications/tools/list_changed when tools are loaded.
from the description (list) | Read |
access_lock_door Lock a door immediately. This is a physical real-world action. Requires confirm=true to execute. Uses the Access API client when available, with local proxy fallback.
from the description (execute) | Destructive |
access_reboot_device Reboot an Access hardware device (hub, reader, relay, intercom). The device will be temporarily offline during reboot. Requires confirm=true to execute. Only available via local proxy session.
from the description (execute) | Destructive |
access_recent_events Get recent events from the in-memory websocket buffer. Fast (no API call). Supports filtering by event type and door. Use for real-time monitoring; use access_list_events for historical queries.
from the description (get) | Read |
access_revoke_credential Revoke (delete) an access credential. This permanently removes the credential from the system. Requires confirm=true to execute. Only available via local proxy session.
from the description (delete) | Destructive |
access_subscribe_events Returns instructions for subscribing to real-time Access events. Provides the MCP resource URI for the event stream and guidance on polling intervals. Use this to set up continuous event monitoring.
from the description (set) | Write |
access_tool_index Discover UniFi Access tools (door locks, access readers, credentials, visitors, access policies, and entry events) through the compact tool index. The catalog is manifest-backed in lazy mode; in meta-only mode it starts with registered meta-tools and expands after domain modul...
from the description (execute) | Destructive |
access_unlock_door Unlock a door for a specified duration. This is a physical real-world action. Requires confirm=true to execute. Default duration is 2 seconds.
from the description (execute) | Destructive |
access_update_device_config Update a device's settings (its configs[] entries), e.g. the reader voice greeting. Pass 'updates' as a {key: value} map; only keys the device already exposes may be set (call access_get_device_configs first to discover them), and credential/secret keys are refused. Requires c...
from the name (update) | Write |
access_update_policy Update an access policy's configuration. Supported fields include name, door_ids, schedule_id, user_group_ids, and enabled. Requires confirm=true to apply. Only available via local proxy session.
from the name (update) | Write |
Score
76 of 100 points (76%). A factor that was not scored counts as 0 of its full weight.
| Factor | Points | Full weight | Status |
|---|---|---|---|
| Tool capability | 29 | 35 | Partly scored |
| Access | 12 | 25 | Partly scored |
| Maintenance | 20 | 20 | Scored |
| Publisher | 15 | 20 | Scored |
Tool capability
23 read, 5 write, 8 destructive, 1 unknown.
The repository mentions a read-only mode. View the repository.
Access
| Part | Value | Points | Where this came from |
|---|---|---|---|
| Scope | unknown | unknown | unknown |
| Where it runs | Local process | 6 of 8 | Registry package transport is stdio. |
| Credentials | Secret in an environment variable | 6 of 7 | Registry marked isSecret true for UNIFI_PASSWORD, UNIFI_API_KEY |
Maintenance
| Part | Value | Points |
|---|---|---|
| Last commit | 0 days | 8 of 8 |
| Releases | 0 days | 6 of 6 |
| Issues | 214 closed / 234 issues (0.91) | 6 of 6 |
Publisher
| Part | Value | Points | Where this came from |
|---|---|---|---|
| Who publishes it | Individual | 3 of 8 | GitHub owner type is User (sirkirby). |
| Registry listing | Listed | 5 of 5 | Official registry server io.github.sirkirby/unifi-access-mcp (status active). |
| License | MIT | 4 of 4 | GitHub SPDX license MIT. |
| Stars | 906 | 2 of 2 | 906 GitHub stars. |
| Repository age | 543 days | 1 of 1 | Repository created 2025-04-21T18:41:43Z. |
What this score does not cover
This score is not a code audit and it is not a human review. It has not been hands-on tested. Nothing on this page is a certification.
Access needed
| Variable | Required | Secret | Default | Description |
|---|---|---|---|---|
UNIFI_HOST | yes | unknown | unset | Controller IP/hostname |
UNIFI_USERNAME | yes | yes | unset | Admin username |
UNIFI_PASSWORD | yes | yes | unset | Admin password |
UNIFI_API_KEY | unknown | yes | unset | API key (optional, experimental) |
UNIFI_PORT | unknown | unknown | 443 | Controller HTTPS port |
UNIFI_VERIFY_SSL | unknown | unknown | false | SSL certificate verification |
Maintenance
- Archived
- no
- Last commit
- 15 Oct 2026 · e269b2b
- Latest release
- protect/v0.9.3 · 15 Oct 2026
- Issues
- 20 open · 214 closed
- Stars
- 906
- License
- MIT
- Repository created
- 21 Apr 2025
npm and PyPI
- npm
- No npm package in the registry entry.
- PyPI
- unifi-access-mcp · version 0.6.15 · downloads last month 3,607 · published 14 Oct 2026
- Maintainers
- unknown
Install
# requires UNIFI_HOST: Controller IP/hostname
# requires UNIFI_USERNAME: Admin username
# requires UNIFI_PASSWORD: Admin password
uvx unifi-access-mcp==0.1.6 Badge
Sources for this listing
registry:unifigithub:unifi mcp in:name