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.

Last checked 16 Oct 2026.

Manage UniFi Access doors, credentials, policies, visitors, and events via MCP.

Publisher's description

io.github.sirkirby/unifi-access-mcp · version 0.1.6

Tool capability partly scored. Access partly scored. 2 of 4 factors scored.

Not hands-on tested. No test date, notes, or observed write behavior.

Can it change or delete things?

Yes. The extracted tools include at least one destructive tool, so it can change or delete things.

Classified from the tool name, or from the description when the name has no listed verb. Tools were counted in apps/access only. Hand-checked 16 Oct 2026: Access tools come from apps/access (the package manifest). Network and Protect live in other folders and are not this server.

37 tools

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.

OpsMCP rubric 2026-10-16.3. Checked 16 Oct 2026.
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

PartValuePointsWhere 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

PartValuePoints
Last commit 0 days 8 of 8
Releases 0 days 6 of 6
Issues 214 closed / 234 issues (0.91) 6 of 6

Publisher

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

How the rubric works

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

VariableRequiredSecretDefaultDescription
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

Source: registry. This is the published command, not a rewritten one.

# requires UNIFI_HOST: Controller IP/hostname
# requires UNIFI_USERNAME: Admin username
# requires UNIFI_PASSWORD: Admin password
uvx unifi-access-mcp==0.1.6

Badge

The SVG is generated for this server. The embed links to this server page.

OpsMCP grade B, 76 out of 100, provisional

Sources for this listing

Official registry server io.github.sirkirby/unifi-access-mcp (status active).