Unifi Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Unifi Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The MSP-style UniFi MCP — built around the official Site Manager API + Cloud Connector with cross-site analytics no other UniFi MCP exposes.
>
54 tools split across 7 semantic-analysis aggregations, 9 raw Site Manager, and 35 Cloud Connector — plus 2 optional local controller tools that surface per-port error counters and SFP DDM the Cloud API doesn't expose. Severity verdicts (healthy/info/warning/critical) on top of curated thresholds. 8 MCP Prompts (4 fleet-wide ops + 4 MSP workflows). Read-only — Ubiquiti's API keys don't ship write yet.
npx -y @us-all/unifi-mcp --doctorValidates env vars, pings Site Manager API, probes Cloud Connector (if owner key set), and checks category toggles before starting. Exits non-zero on critical issues so it works in CI / pre-deploy scripts.
site-health-timeline, summarize-site, firmware-inventory, compare-sites, wan-uptime-trend, top-clients-by-bandwidth, list-sites-overview. No other UniFi MCP exposes these.healthy / info / warning / critical / unknown with a curated reason. Curated thresholds (e.g. WAN uptime <90% = critical, startupTime <1h = critical post-reboot)./v1/connector/consoles/{id}/... proxy. connectorAvailable (capability) vs connectorResolved (this-call) split.caveats array surfacing partial failures (e.g. Site Manager API can't window-bound WAN uptime — that's surfaced explicitly).triage-site-degradation, firmware-rollout-audit, wan-uptime-report, cross-site-anomaly-detection. MSP workflows: msp-onboard-site-checklist, msp-monthly-client-report, msp-fleet-firmware-plan, msp-bandwidth-complaint-investigation.@us-all/* MCPs (default ~5K tokens with owner key). Fleet of 200+ devices analyzable inside a single session.summarize-site renders as a fleet-status card on ChatGPT clients (online %, WAN uptime, gateway, devices) via _meta["openai/outputTemplate"]. Claude clients receive the same JSON content.MCP_TRANSPORT=http for ChatGPT Apps SDK or remote clients (Bearer auth via MCP_HTTP_TOKEN).UNIFI_LOCAL_* env enables 2 tools that bypass the Cloud Connector and hit the controller's legacy /api/s/{site}/stat/device/{mac} directly on the LAN: get-port-errors (port-level rx/tx errors, link-flap counters, SFP DDM — Rx/Tx Power dBm, temperature, voltage, TX/RX fault) and list-port-flap-summary (fleet-wide port instability ranking). Surfaces data the Integration API doesn't expose. Requires LAN reachability.Connect the server to Claude Desktop or Claude Code, then paste any of these:
| sirkirby/unifi-mcp | enuno/unifi-mcp-server | @us-all/unifi-mcp (this) | |
|---|---|---|---|
| GitHub stars | 291 | 117 | — |
| Tool count | 224 | 74 | 54 |
| Scope | Network + Protect + Access + Drive | Network + multi-site + QoS + backup | Site Manager + Cloud Connector + analytics |
| Site Manager API | ❌ | partial | ✅ deep + analytics |
| Cloud Connector | ❌ | partial (3 modes) | ✅ avail/resolved split |
| UniFi Protect (cameras) | ✅ | ❌ | ❌ (out of scope) |
| UniFi Access (doors) | ✅ | ❌ | ❌ (out of scope) |
| Aggregation tools | ❌ | ❌ | ✅ 7 |
| Severity verdicts | ❌ | ❌ | ✅ curated thresholds |
| MCP Prompts | ❌ | ❌ | ✅ 8 (incl. 4 MSP workflows) |
Use sirkirby when you need cameras (Protect) or door access. Use enuno if you want raw Network API breadth. Use this server for MSP-style multi-site analytics, fleet triage, and any "is something off?" question across many consoles.
{
"mcpServers": {
"unifi": {
"command": "npx",
"args": ["-y", "@us-all/unifi-mcp"],
"env": {
"UNIFI_API_KEY": "<your-key>",
"UNIFI_API_KEY_OWNER": "<owner-key-or-same-key-if-role=owner>"
}
}
}
}claude mcp add unifi -s user \
-e UNIFI_API_KEY=<your-key> \
-e UNIFI_API_KEY_OWNER=<owner-key> \
-- npx -y @us-all/unifi-mcpgit clone https://github.com/us-all/unifi-mcp-server.git
cd unifi-mcp-server && pnpm install && pnpm build
node dist/index.jsThe most common onboarding friction. UniFi has two surfaces through the same https://api.ui.com/v1:
| Surface | What it gives | Path | Env var |
|---|---|---|---|
| Site Manager | hosts, sites, devices summary, ISP metrics, SD-WAN configs (aggregated, console-wide) | /v1/hosts, /v1/sites, /v1/devices, /v1/sd-wan-configs | UNIFI_API_KEY |
| Cloud Connector | per-device, per-client, networks, firewall, WiFi (proxies to local controller) | /v1/connector/consoles/{hostId}/... | UNIFI_API_KEY_OWNER |
API key permissions inherit from the role of the account that created them.
| Account role | Site Manager | Cloud Connector |
|---|---|---|
| Admin (non-owner) | ✅ | ❌ 403 |
| Owner | ✅ | ✅ |
If you have the owner role, set both env vars to the same key. That's the most common case for @us-all operators.
Get the key: unifi.ui.com → Settings → API → Generate. View Only is the only option in GA today (Full Access greyed out — Early Access program needed for write).
https://api.ui.com/v1/connector/consoles/{hostId}/{appPath}siteId is a UUID, not the literal string default/network/integration/v1/sites, devices, clients, networks). Legacy paths (/api/s/{site}/stat/event) return 404. Event logs / syslog not exposed.Adds 2 tools that fill the gap left by Cloud Connector — per-port error counters, flap counters, and SFP DDM. These live in /api/s/{site}/stat/device/{mac} (legacy) and the official Network Integration API does not expose them (verified against OpenAPI spec v10.4.57).
Requirements:
https://<controller-ip>)UNIFI_LOCAL_INSECURE=true for stock UDM ProAuth flow: POST /api/auth/login (cookie) → all subsequent calls re-use the session, 401 triggers automatic re-login. Read-only.
| Variable | Required | Default | Description |
|---|---|---|---|
UNIFI_API_KEY | ✅ | — | API key from unifi.ui.com (any admin role) |
UNIFI_API_KEY_OWNER | ❌ | — | Owner-role API key — enables 35 Cloud Connector tools. If your key has owner role, set this to the same value. |
UNIFI_API_URL | ❌ | https://api.ui.com/v1 | API base URL |
UNIFI_TOOLS | ❌ | — | Comma-sep allowlist of categories. |
UNIFI_DISABLE | ❌ | — | Comma-sep denylist. Ignored when UNIFI_TOOLS is set. |
MCP_TRANSPORT | ❌ | stdio | http to enable Streamable HTTP transport |
MCP_HTTP_TOKEN | conditional | — | Bearer token. Required when MCP_TRANSPORT=http |
MCP_HTTP_PORT | ❌ | 3000 | HTTP listen port |
MCP_HTTP_HOST | ❌ | 127.0.0.1 | HTTP bind host (DNS rebinding protection auto-enabled for localhost) |
MCP_HTTP_SKIP_AUTH | ❌ | false | Skip Bearer auth — e.g. behind a reverse proxy that handles it |
UNIFI_LOCAL_URL | ❌ | — | Local controller URL (e.g. https://10.10.1.1). Setting this + USER/PASS enables 2 local category tools. |
UNIFI_LOCAL_USER | conditional | — | Controller local account username (required when UNIFI_LOCAL_URL set). Viewer/Limited-Admin role is sufficient. |
UNIFI_LOCAL_PASS | conditional | — | Controller local account password (required when UNIFI_LOCAL_URL set). |
UNIFI_LOCAL_SITE | ❌ | default | Site slug for legacy /api/s/{site}/*. |
UNIFI_LOCAL_INSECURE | ❌ | false | Accept self-signed cert (typical for UDM Pro). |
Categories (9): analysis, raw, devices, clients, networks, firewall, wan, reference, local.
When MCP_TRANSPORT=http: POST /mcp (Bearer-auth JSON-RPC) + GET /health (public liveness).
Smallest schema footprint of all @us-all/* MCPs.
| Scenario | Tools | Schema tokens |
|---|---|---|
| default no-owner | 17 | 1,700 |
UNIFI_TOOLS=analysis | 8 | 1,000 (−42%) |
| default with owner key | 52 | ~5,000 |
UNIFI_TOOLS=analysis + owner | 8 | 1,000 (−80%) |
Every analysis tool returns one of:
healthy — no issuesinfo — informational, no actionwarning — needs attentioncritical — immediate actionunknown — API failure or incomplete dataCurated thresholds:
| Condition | Severity |
|---|---|
| Device offline | critical |
startupTime < 1h | critical (just rebooted) |
startupTime < 24h | warning (recent reboot) |
startupTime < 72h | info (monitor) |
| WAN uptime < 90% | critical |
| WAN uptime < 95% | warning |
Workflow templates available via MCP prompts/list. Four are fleet-ops; four are MSP-specific (managed-service-provider workflows).
Fleet ops:
triage-site-degradation — site complaints workflow: device + WAN + reboots + clients in sequence.firmware-rollout-audit — fleet-wide firmware diff and rollout safety check.wan-uptime-report — monthly WAN SLA-style report across sites.cross-site-anomaly-detection — compare a site to fleet baseline; flag outliers.MSP workflows:
msp-onboard-site-checklist — pass/fail readiness checklist for a newly added customer site (firmware floor, console connectivity, uptime trend, connector availability, firewall sanity, recent reboots, pending devices).msp-monthly-client-report — customer-facing monthly health report (one site → headline, network availability, devices, top users, recommendations) with non-technical phrasing.msp-fleet-firmware-plan — staggered N-wave rollout plan to a target firmware version, ordered by risk-tolerance with maintenance windows + rollback triggers.msp-bandwidth-complaint-investigation — triage 'internet is slow at site X' via WAN trend + ISP metrics + top clients + DPI categories + recent reboots.unifi://site/{hostName}/devices — site's devices snapshotunifi://reboots/recent — recently rebooted devices fleet-wide9 categories. Use search-tools to discover at runtime; full list collapsed below. Cloud Connector tools (33) only register when UNIFI_API_KEY_OWNER is set; without it the surface is 19 tools. Local controller tools (2) only register when UNIFI_LOCAL_URL/USER/PASS are set.
| Group | Tools |
|---|---|
| Semantic analysis (incl. aggregations) | 9 |
| Site Manager raw | 9 |
| Cloud Connector (devices/clients/networks/wifi/firewall/wan/reference) | 33 |
Sites local (list-local-sites, get-app-info) | 2 |
Local controller (get-port-errors, list-port-flap-summary) | 2 |
Meta (search-tools) | 1 |
<details> <summary>Full tool list</summary>
list-sites-overview, analyze-site-health, detect-recent-reboots, compare-sites, firmware-inventory, wan-uptime-trend, top-clients-by-bandwidth, summarize-site (aggregation), site-health-timeline (aggregation)
list-hosts, get-host, list-sites, list-devices, get-isp-metrics (optional), query-isp-metrics (optional), list-sdwan-configs, get-sdwan-config, get-sdwan-config-status
get-device-details, get-device-by-id, get-device-statistics, list-pending-devices
list-site-clients, get-client-details
list-networks, get-network-details, get-network-references
list-wifi-broadcasts, get-wifi-broadcast-details
list-firewall-zones, get-firewall-zone, list-firewall-policies, get-firewall-policy, get-firewall-policy-ordering, list-acl-rules, get-acl-rule, get-acl-rule-ordering, list-dns-policies, get-dns-policy
list-traffic-matching-lists, get-traffic-matching-list, list-wans, list-vpn-tunnels, list-vpn-servers
list-vouchers, get-voucher-details, list-radius-profiles, list-device-tags, list-dpi-categories, list-dpi-applications, list-countries
list-local-sites, get-app-info
UNIFI_LOCAL_*)get-port-errors — per-port rx_errors / tx_errors / rx_dropped / tx_dropped + link state, plus persistent flap counters (linkDownCount, stpChangeCount, anomalies) and SFP DDM when a transceiver is present (rxPowerDbm, txPowerDbm, temperatureC, voltageV, txBiasMa, rxFault, txFault, vendor/part/serial). onlyProblems filter for triage.list-port-flap-summary — iterates all switches in the controller, ranks ports fleet-wide by score linkDownCount*2 + stpChangeCount + rx_errors + tx_errors. Surfaces the unstable cables / transceivers / NIC-power-save endpoints anywhere in the site at once. Counters are persistent across queries (reset only on switch reboot).search-tools — query other tools by keyword; always enabled.
</details>
Claude → MCP stdio → src/index.ts
├── tools/analysis.ts → Site Manager API (UNIFI_API_KEY)
├── tools/*.ts (raw) → Site Manager API (UNIFI_API_KEY)
├── tools/connector.ts → Cloud Connector (UNIFI_API_KEY_OWNER)
└── tools/local-ports.ts → Local Controller (UNIFI_LOCAL_URL + LAN)
helpers/resolver.ts → hostName ↔ ID mappingBuilt on @us-all/mcp-toolkit:
extractFields — token-efficient response projectionsaggregate(fetchers, caveats) — fan-out helper for summarize-site / site-health-timelinecreateWrapToolHandler — X-API-KEY redaction + ConnectorError/UniFiError extractionNode.js 22+ • TypeScript strict ESM • pnpm • @modelcontextprotocol/sdk • zod v4 • dotenv.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.