UniFi MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UniFi MCP show me all devices on my network"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UniFi MCP
An MCP server that lets Claude interact with your UniFi infrastructure. Covers four UniFi APIs with 146 tools:
Site Manager API (cloud) — hosts, sites, devices, ISP metrics, SD-WAN.
Mobility API (cloud) — UMR mobile routers: workspaces, admins, devices, clients, and device name/network/WiFi updates.
Network API — devices, clients, networks, WiFi, firewall, ACL rules, DNS, switching, traffic-matching lists, vouchers, and more.
Protect API — cameras (incl. PTZ, RTSPS, snapshots, talkback), lights, sensors, sirens, speakers, fobs, relays, bridges, link stations, alarm hubs, arm profiles, events, users.
The Network and Protect APIs can be reached either through the cloud connector (a single unifi.ui.com key proxied through api.ui.com — no LAN access needed) or by connecting directly to a local console. See Reaching a console.
Features
Site Manager API (cloud)
Read-only access to your UniFi account via https://api.ui.com:
Tool | Description |
| List all consoles/gateways |
| Get detailed host information |
| List all sites |
| List all network devices |
| Get ISP performance metrics (latency, bandwidth, uptime) |
| Query ISP metrics for specific sites |
| List or inspect SD-WAN configurations |
Mobility API (cloud)
UniFi Mobile Router (UMR) management via https://api.ui.com/v1/mobility (requires the mobility scope on your key):
Tool | Description |
| List mobility workspaces (cloud sites) |
| List a workspace's admins and permissions |
| List UMR devices in a workspace |
| Full device detail (WAN, cellular, WiFi, VPN, GPS) |
| List clients connected to a device |
| Rename a device (write scope, Admin) |
| Update LAN / DHCP settings (Admin) |
| Replace WiFi SSID + password (Admin) |
Network API
Full CRUD access to a UniFi console (UDM, UCG, etc.), via the cloud connector or a local connection:
Tool | Description |
Info | |
| Application info and site discovery |
Devices | |
| List all adopted devices |
| Get device details and statistics |
| Restart, locate, or adopt a device |
Clients | |
| List all connected clients |
| Get client details |
| Block or reconnect a client |
Networks | |
| List configured networks (VLANs) |
| Get network details |
| Create a network |
| Update a network |
| Delete a network |
WiFi | |
| List WiFi broadcasts (SSIDs) |
| Get WiFi broadcast details |
| Create a WiFi broadcast |
| Update a WiFi broadcast |
| Delete a WiFi broadcast |
Firewall | |
| List firewall zones |
| List firewall policies |
| Create a firewall policy |
| Update a firewall policy |
| Delete a firewall policy |
| Get a firewall policy |
| Firewall zone CRUD |
| Get/set firewall policy ordering |
ACL rules | |
| ACL rule CRUD |
| Get/set ACL rule ordering |
DNS | |
| DNS policy CRUD |
Traffic matching lists | |
| IP/port list CRUD |
Switching | |
| Link Aggregation Groups |
| MC-LAG domains |
| Switch stacks |
Adoption | |
| List devices pending adoption |
| Adopt a device |
| Remove (unadopt) a device |
| Port action (e.g. PoE power-cycle) |
Vouchers | |
| List hotspot vouchers |
| Create hotspot vouchers |
| Delete a hotspot voucher |
Supporting | |
| List WAN interfaces |
| List site-to-site VPN tunnels |
| List VPN servers |
| List RADIUS profiles |
| What references a network |
| List device tags |
| List ISO country codes |
| List DPI applications |
| List DPI categories |
Protect API
Access to UniFi Protect devices, via the cloud connector or a local connection:
Tool | Description |
Info | |
| Application info and NVR status |
Cameras | |
| List all cameras |
| Get camera details |
| Update camera settings |
| Get a JPEG snapshot from a camera |
| Move a PTZ camera to a preset |
| Start/stop a PTZ patrol |
| Get/create/delete RTSPS stream URLs |
| Create a talkback session |
| Permanently disable the mic |
Lights | |
| List all lights |
| Get light details |
| Update light settings |
Sensors | |
| List all sensors |
| Get sensor details |
| Update sensor settings |
Chimes | |
| List all chimes |
| Get chime details |
| Update chime settings |
Sirens | |
| Siren info & settings |
| Play / stop / test a siren |
Speakers | |
| Speaker info & settings |
| Test speaker sound |
Fobs | |
| Key fob info & settings |
Relays | |
| Relay info & settings |
| Control a relay output (on/off/pulse) |
Bridges & Link Stations | |
| Bridge info & settings |
| Link station info & settings |
Alarm Hubs | |
| Alarm hub info & settings |
| Trigger an alarm hub output |
Arm Profiles & Alarm Manager | |
| Arm profile CRUD |
| Enable/disable arm alarm, set profile |
| Trigger alarms via webhook |
Events | |
| List recent events (motion, detections) |
Liveviews | |
| Liveview info & CRUD |
Viewers | |
| Viewer info & settings |
Users | |
| Protect users |
| UniFi Identity users |
Related MCP server: UnifiyMe
Prerequisites
UniFi API key — generate at unifi.ui.com → API. Enable the Site Manager and UniFi Applications (Network, Protect) scopes; add mobility if you use UMR routers. The same key drives every API.
Reaching a console
Site Manager and Mobility are always available (they are cloud APIs). The Network and Protect tools need to reach a specific console, in one of two ways:
Cloud connector (recommended). Set
UNIFI_CONSOLE_IDto the console (host) ID. Requests are proxied throughapi.ui.comwith yourunifi.ui.comkey — nothing needs LAN access. Find the ID via thelist_hoststool (theidfield, e.g.900A6F…:123456789).Local console. Set
UNIFI_NETWORK_HOST/UNIFI_PROTECT_HOSTto the console IP/hostname to connect directly over the LAN (self-signed certs, verification off by default).
If neither is configured for an application, its tools are simply not registered.
Quick start
Docker Compose (recommended — remote HTTP endpoint)
Runs the server as a streamable-HTTP service reachable from other machines:
cp .env.example .env # set UNIFI_API_KEY and UNIFI_CONSOLE_ID
docker compose up -d --build
# MCP endpoint: http://<this-host>:8000/mcpPut a TLS-terminating reverse proxy in front before exposing it publicly.
Docker (one-off / stdio)
docker build -t unifi-mcp .
# Cloud connector: one key drives all four APIs
docker run --rm -i \
-e UNIFI_API_KEY=your-key \
-e UNIFI_CONSOLE_ID=900A6F...:123456789 \
unifi-mcpLocal (with uv)
uv sync
# stdio (default)
UNIFI_API_KEY=your-key UNIFI_CONSOLE_ID=... uv run unifi-mcp
# remote HTTP
UNIFI_API_KEY=your-key uv run unifi-mcp --transport streamable-http --host 0.0.0.0 --port 8000Configuration
Variable | Required | Default | Description |
| Yes | — | UniFi cloud API key (shared across all APIs) |
| No |
| Site Manager API base URL |
| No |
| HTTP timeout in seconds |
| No | — | Console (host) ID for Network + Protect via the cloud connector |
| No |
| Console ID override for Network only |
| No |
| Console ID override for Protect only |
| No | — | Local console IP/hostname for Network (instead of console ID) |
| No | — | Local console IP/hostname for Protect (instead of console ID) |
| No |
| Verify SSL for a local Network console |
| No |
| Verify SSL for a local Protect console |
| No |
| Mobility API key (if different) |
| No |
| Network API key (if different) |
| No |
| Protect API key (if different) |
| No |
| Host port the HTTP endpoint is published on (compose) |
When both a local host and a console ID are set for an application, local mode wins. By default UNIFI_API_KEY is used everywhere; set a per-API key only if a console needs a different one.
Multi-user web GUI (self-service SaaS mode)
The default docker compose up runs a hosted, multi-user service — no configuration required. Users self-register with a passkey and manage their own MCP connections through a web page; each connection maps one UniFi API key to the shared, OAuth-protected /mcp endpoint for Claude.
docker compose up -d --build
# open http://<host>:8000/ → register a passkey → add a connectionBehind HTTPS in production (passkeys require it), point a reverse proxy at the container and optionally set UNIFI_PUBLIC_URL.
Endpoints served on one port:
Path | Purpose |
| Passwordless accounts (WebAuthn passkeys only) |
| Your connections + a form to add one |
| Create a connection → MCP URL + OAuth |
| Revoke one of your connections |
| Shared, OAuth-protected MCP endpoint |
| OAuth 2.1 authorization server |
Accounts: passwordless, WebAuthn passkeys only — no default account. Anyone can self-register (optionally gate with UNIFI_ONBOARD_CODE). Each user owns as many connections as they want and can revoke any of them at any time (revoking also invalidates that connection's OAuth tokens).
Per-connection auth: each connection is a confidential OAuth client. Claude runs the authorization-code + PKCE flow with the issued id/secret and receives an access token bound to that connection; tool calls resolve its UniFi credentials from the token.
Consoles: onboarding loads the account's consoles (via list_hosts) so you can pick a default. A single connection can reach every console the account owns — each network_* / protect_* tool takes an optional console_id (discover IDs with list_hosts); omit it to use the default.
Zero-config by default:
The Fernet encryption key is auto-generated and persisted to the data volume (
secret.key) on first run — setUNIFI_SECRET_KEYonly to supply your own.The public base URL (OAuth issuer, passkey origin, MCP URL shown to users) is auto-detected from each request (honoring
X-Forwarded-Proto/Host). SetUNIFI_PUBLIC_URLto pin it.
Data at rest (JSON on the unifi-data volume):
UniFi API keys and OAuth client secrets are encrypted (Fernet).
OAuth access/refresh tokens and authorization codes are stored hashed (SHA-256) — raw bearer secrets are never written to disk.
Passkey public keys, ownership, and console IDs are non-secret metadata.
Security notes:
Passkeys require HTTPS (except
localhost) — terminate TLS in front.Keep the
unifi-datavolume (andsecret.key/UNIFI_SECRET_KEY) backed up, or stored data becomes unreadable.Redirect URIs are restricted to Claude's web callbacks by default; override with
UNIFI_OAUTH_REDIRECT_URIS.
All variables are optional: UNIFI_PUBLIC_URL, UNIFI_SECRET_KEY, UNIFI_TENANT_STORE, UNIFI_RP_NAME, UNIFI_ONBOARD_CODE, UNIFI_OAUTH_REDIRECT_URIS (see .env.example).
Claude integration
Remote connector (no local config file)
Run the HTTP endpoint (docker compose up -d), expose it (ideally behind HTTPS), then in Claude add a custom connector: paste the MCP server URL https://<your-host>/mcp. For the single-tenant server no OAuth is needed; for the multi-tenant service paste the client_id/client_secret from onboarding into the connector's OAuth fields.
Claude Desktop (via mcp-remote)
To bridge the remote endpoint into Claude Desktop's config instead:
{
"mcpServers": {
"unifi": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8000/mcp"]
}
}
}Claude Desktop / Claude Code (stdio)
Run the container or uv directly over stdio:
{
"mcpServers": {
"unifi": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "UNIFI_API_KEY=your-key",
"-e", "UNIFI_CONSOLE_ID=900A6F...:123456789",
"unifi-mcp"
]
}
}
}Project structure
src/unifi_mcp/
server.py # MCP server and tool definitions (143 tools)
client.py # Site Manager API client (cloud)
formatting.py # Site Manager response formatters
mobility_client.py # Mobility API client (cloud)
mobility_formatting.py # Mobility response formatters
network_client.py # Network API client (cloud connector or local)
network_formatting.py # Network response formatters
protect_client.py # Protect API client (cloud connector or local)
protect_formatting.py # Protect response formatters
tenant.py # Multi-tenant: encrypted store, client bundles, registry
oauth.py # Multi-tenant: OAuth 2.1 authorization-server provider
web.py # Multi-tenant: onboarding UI + combined ASGI appLicense
MIT
Available Tools
62 toolsget_hostA
Get detailed information about a specific UniFi host.
Returns comprehensive details about a single host including hardware info, firmware, network configuration, and reported state. Use list_hosts first to find host IDs.
Args: host_id: The unique identifier of the host.
Inputs: host_id (required). Returns: result
get_isp_metricsA
Get ISP performance metrics across all sites.
Returns latency, download/upload speed, uptime, and packet loss data. 5-minute metrics are available for 24h, 1-hour metrics for 30 days.
Args: metric_type: Interval granularity - "5m" for 5-minute or "1h" for hourly. duration: Lookback duration ("24h", "7d", "30d"). Cannot be used with timestamps. begin_timestamp: Start time in ISO 8601 format. Use with end_timestamp. end_timestamp: End time in ISO 8601 format. Use with begin_timestamp.
Inputs: metric_type (required), duration, end_timestamp, begin_timestamp. Returns: result
get_sdwan_configA
Get SD-WAN configurations and optionally their deployment status.
Without config_id: lists all SD-WAN configurations. With config_id: returns the detailed configuration. With include_status=True: also fetches the deployment status.
Args: config_id: Optional SD-WAN config ID. Omit to list all configs. include_status: If True and config_id is provided, also fetch deployment status.
Inputs: config_id, include_status. Returns: result
list_devicesB
List all UniFi network devices (access points, switches, gateways, etc.).
Returns device details including model, firmware, IP, MAC address, status, and uptime. Can be filtered by specific hosts.
Args: host_ids: Optional list of host IDs to filter devices by specific hosts. time: Optional ISO 8601 timestamp to filter by last update time. page_size: Number of items per page (default 25). next_token: Pagination token from a previous response to get the next page.
Inputs: time, host_ids, page_size, next_token. Returns: result
list_hostsA
List all UniFi hosts (consoles/gateways) associated with your account.
Returns host details including type, IP address, firmware version, and connectivity status. Use this to get an overview of all your UniFi controllers and gateways.
Args: page_size: Number of hosts per page (default 25). next_token: Pagination token from a previous response to get the next page.
Inputs: page_size, next_token. Returns: result
list_sitesA
List all UniFi Network sites across all hosts in your account.
Returns site information including name, timezone, device/client counts, ISP info, and permissions. Sites are logical groupings of devices under a UniFi Network application.
Args: page_size: Number of sites per page (default 25). next_token: Pagination token from a previous response to get the next page.
Inputs: page_size, next_token. Returns: result
network_client_actionB
Execute an action on a connected client (block, reconnect).
Args: site_id: The site ID. client_id: The client ID. action: The action to execute (e.g. "block", "reconnect").
Inputs: action (required), site_id (required), client_id (required). Returns: result
network_create_firewall_policyC
Create a new firewall policy on a local UniFi site.
Args: site_id: The site ID. data: Firewall policy configuration.
Inputs: data (required), site_id (required). Returns: result
network_create_networkB
Create a new network on a local UniFi site.
Args: site_id: The site ID. data: Network configuration (name, vlanId, etc.).
Inputs: data (required), site_id (required). Returns: result
network_create_vouchersC
Create hotspot vouchers on a local UniFi site.
Args: site_id: The site ID. data: Voucher configuration (duration, quota, count, etc.).
Inputs: data (required), site_id (required). Returns: result
network_create_wifiB
Create a new WiFi broadcast (SSID) on a local UniFi site.
Args: site_id: The site ID. data: WiFi configuration (name, security, etc.).
Inputs: data (required), site_id (required). Returns: result
network_delete_firewall_policyB
Delete a firewall policy from a local UniFi site.
Args: site_id: The site ID. policy_id: The firewall policy ID to delete.
Inputs: site_id (required), policy_id (required). Returns: result
network_delete_networkC
Delete a network from a local UniFi site.
Args: site_id: The site ID. network_id: The network ID to delete.
Inputs: site_id (required), network_id (required). Returns: result
network_delete_voucherA
Delete a hotspot voucher from a local UniFi site.
Args: site_id: The site ID. voucher_id: The voucher ID to delete.
Inputs: site_id (required), voucher_id (required). Returns: result
network_delete_wifiB
Delete a WiFi broadcast (SSID) from a local UniFi site.
Args: site_id: The site ID. wifi_id: The WiFi broadcast ID to delete.
Inputs: site_id (required), wifi_id (required). Returns: result
network_device_actionB
Execute an action on a UniFi device (restart, locate, adopt).
Args: site_id: The site ID. device_id: The device ID. action: The action to execute (e.g. "restart", "locate", "adopt").
Inputs: action (required), site_id (required), device_id (required). Returns: result
network_get_clientB
Get detailed information about a specific connected client.
Args: site_id: The site ID. client_id: The client ID.
Inputs: site_id (required), client_id (required). Returns: result
network_get_deviceC
Get detailed information about a specific device.
Args: site_id: The site ID. device_id: The device ID. include_statistics: If True, also fetch latest device statistics.
Inputs: site_id (required), device_id (required), include_statistics. Returns: result
network_get_networkC
Get detailed information about a specific network.
Args: site_id: The site ID. network_id: The network ID.
Inputs: site_id (required), network_id (required). Returns: result
network_get_wifiA
Get detailed information about a specific WiFi broadcast (SSID).
Args: site_id: The site ID. wifi_id: The WiFi broadcast ID.
Inputs: site_id (required), wifi_id (required). Returns: result
network_infoA
Get UniFi Network application info and list all local sites.
Returns application version and details, plus all sites configured on the local UniFi console. Use this first to discover site IDs needed by other network_* tools.
Inputs: no named parameters. Returns: result
network_list_clientsA
List all connected clients on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_devicesA
List all adopted devices on a local UniFi site.
Args: site_id: The site ID (get from network_info). offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_dns_policiesA
List DNS filtering policies on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_firewall_policiesA
List firewall policies on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_firewall_zonesA
List firewall zones on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_networksA
List all configured networks (VLANs) on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_radius_profilesA
List RADIUS profiles on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_vouchersA
List hotspot vouchers on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_vpn_serversB
List VPN servers on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_vpn_tunnelsA
List site-to-site VPN tunnels on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_wansA
List WAN interfaces on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_list_wifiA
List all WiFi broadcasts (SSIDs) on a local UniFi site.
Args: site_id: The site ID. offset: Pagination offset (default 0). limit: Items per page (default 25, max 200).
Inputs: site_id (required), limit, offset. Returns: result
network_update_firewall_policyC
Update an existing firewall policy on a local UniFi site.
Args: site_id: The site ID. policy_id: The firewall policy ID to update. data: Updated firewall policy configuration.
Inputs: data (required), site_id (required), policy_id (required). Returns: result
network_update_networkC
Update an existing network on a local UniFi site.
Args: site_id: The site ID. network_id: The network ID to update. data: Updated network configuration.
Inputs: data (required), site_id (required), network_id (required). Returns: result
network_update_wifiC
Update an existing WiFi broadcast (SSID) on a local UniFi site.
Args: site_id: The site ID. wifi_id: The WiFi broadcast ID to update. data: Updated WiFi configuration.
Inputs: data (required), site_id (required), wifi_id (required). Returns: result
protect_create_liveviewC
Create a new liveview in UniFi Protect.
Args: data: Liveview configuration (name, slots, etc.).
Inputs: data (required). Returns: result
protect_get_cameraA
Get detailed information about a specific Protect camera.
Args: camera_id: The camera ID (get from protect_list_cameras).
Inputs: camera_id (required). Returns: result
protect_get_camera_snapshotA
Get a JPEG snapshot from a Protect camera.
Returns the snapshot as a base64-encoded JPEG image.
Args: camera_id: The camera ID.
Inputs: camera_id (required). Returns: result
protect_get_chimeB
Get detailed information about a specific Protect chime.
Args: chime_id: The chime ID.
Inputs: chime_id (required). Returns: result
protect_get_doorlockB
Get detailed information about a specific Protect door lock.
Args: doorlock_id: The door lock ID.
Inputs: doorlock_id (required). Returns: result
protect_get_lightC
Get detailed information about a specific Protect light.
Args: light_id: The light ID.
Inputs: light_id (required). Returns: result
protect_get_liveviewB
Get detailed information about a specific Protect liveview.
Args: liveview_id: The liveview ID.
Inputs: liveview_id (required). Returns: result
protect_get_sensorA
Get detailed information about a specific Protect sensor.
Args: sensor_id: The sensor ID.
Inputs: sensor_id (required). Returns: result
protect_get_viewerC
Get detailed information about a specific Protect viewer.
Args: viewer_id: The viewer ID.
Inputs: viewer_id (required). Returns: result
protect_infoA
Get UniFi Protect application info and NVR system status.
Returns Protect application metadata and NVR details including firmware version, storage info, and recording settings. Use this first to verify Protect connectivity.
Inputs: no named parameters. Returns: result
protect_list_camerasA
List all cameras managed by UniFi Protect.
Returns camera names, models, connection state, recording status, and firmware versions. Use this to discover camera IDs.
Inputs: no named parameters. Returns: result
protect_list_chimesA
List all chimes managed by UniFi Protect.
Inputs: no named parameters. Returns: result
protect_list_doorlocksA
List all door locks managed by UniFi Protect.
Returns lock names, models, lock status, and auto-lock timeout.
Inputs: no named parameters. Returns: result
protect_list_eventsA
List recent Protect events (motion, smart detections, etc.).
Returns up to 10,000 events. Output is truncated to the 50 most recent for readability.
Inputs: no named parameters. Returns: result
protect_list_lightsA
List all lights managed by UniFi Protect.
Returns light names, models, and motion detection state.
Inputs: no named parameters. Returns: result
protect_list_liveviewsA
List all liveviews configured in UniFi Protect.
Inputs: no named parameters. Returns: result
protect_list_sensorsA
List all sensors managed by UniFi Protect.
Returns sensor names, models, and current readings (temperature, humidity, light level).
Inputs: no named parameters. Returns: result
protect_list_viewersA
List all viewers (Viewport devices) in UniFi Protect.
Inputs: no named parameters. Returns: result
protect_update_cameraB
Update a Protect camera's settings (name, OSD, LED, etc.).
Args: camera_id: The camera ID. data: Fields to update (e.g. {"name": "Front Door"}).
Inputs: data (required), camera_id (required). Returns: result
protect_update_chimeC
Update a Protect chime's settings.
Args: chime_id: The chime ID. data: Fields to update.
Inputs: data (required), chime_id (required). Returns: result
protect_update_doorlockA
Update a Protect door lock's settings (lock/unlock, auto-lock timeout).
Args: doorlock_id: The door lock ID. data: Fields to update (e.g. {"lockStatus": "locked", "autoLockTimeoutSec": 30}).
Inputs: data (required), doorlock_id (required). Returns: result
protect_update_lightC
Update a Protect light's settings.
Args: light_id: The light ID. data: Fields to update.
Inputs: data (required), light_id (required). Returns: result
protect_update_liveviewB
Update an existing liveview in UniFi Protect.
Args: liveview_id: The liveview ID. data: Updated liveview configuration.
Inputs: data (required), liveview_id (required). Returns: result
protect_update_sensorC
Update a Protect sensor's settings.
Args: sensor_id: The sensor ID. data: Fields to update.
Inputs: data (required), sensor_id (required). Returns: result
protect_update_viewerC
Update a Protect viewer's settings.
Args: viewer_id: The viewer ID. data: Fields to update.
Inputs: data (required), viewer_id (required). Returns: result
query_isp_metricsA
Query ISP metrics for specific sites.
Returns ISP performance data filtered to specified sites. Use list_sites first to get site and host IDs.
Args: metric_type: Interval granularity - "5m" for 5-minute or "1h" for hourly. sites: List of site selectors, each a dict with "hostId" and "siteId" keys. Optionally include "beginTimestamp" and "endTimestamp" per site. begin_timestamp: Global start time in ISO 8601 format (optional). end_timestamp: Global end time in ISO 8601 format (optional).
Inputs: sites (required), metric_type (required), end_timestamp, begin_timestamp. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 62 tools
Tools are clearly separated by domain prefixes (network_, protect_) and have distinct purposes. Descriptions provide sufficient detail to avoid confusion, even for similar operations like listing different entity types.
Most tools follow a consistent verb_noun pattern with prefixes, but a few global tools lack prefixes (e.g., get_host, list_hosts) and some use inconsistent verbs (get_isp_metrics vs query_isp_metrics). Overall pattern is clear.
62 tools is very high for an MCP server. While the domain coverage is broad, the number of tools may overwhelm agents and suggests potential consolidation, especially for simple CRUD operations.
The server covers both UniFi Network and Protect domains exhaustively, including CRUD for most entities, ISP metrics, SD-WAN config, and events. No obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
An MCP server that integrates with Discord to provide AI-powered features.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that turns Claude into a UniFi network specialist. Manage devices, optimize WiFi, audit security, and troubleshoot your network through natural language.3117 npm2MIT
- AlicenseCqualityCmaintenanceA Model Context Protocol (MCP) server for UniFi Network Controllers that enables LLMs to interact with UniFi infrastructure for monitoring and control.51MIT
- AlicenseAqualityDmaintenanceControl your UniFi network via AI with a lightweight 2-tool MCP server that supports both cloud and local UniFi controllers.313 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for UniFi Network Controller enabling AI assistants to manage UniFi infrastructure via natural language. It supports firewall rules, IPv6, and uses lazy/eager tool modes to minimize context usage.6Mozilla Public 2.0