Gives Claude direct access to your UniFi controller with 169 tools covering devices, clients, firewall rules, VLANs, VPNs, and network topology. Built for UniFi Network specifically, with sibling servers for Protect and Access if you need cameras or door control. Supports lazy tool loading to keep context lean, or eager mode if your client wants everything up front. The standout feature is the relay sidecar that lets cloud AI agents reach your local controller through a Cloudflare Worker without port forwarding. Use it when you want to audit firewall policies, track client behavior across VLANs, or automate network changes through natural language instead of clicking through the UniFi dashboard.
claude mcp add unifi-network-mcp --env UNIFI_HOST=YOUR_UNIFI_HOST --env UNIFI_USERNAME=YOUR_UNIFI_USERNAME --env UNIFI_PASSWORD=YOUR_UNIFI_PASSWORD --env UNIFI_API_KEY=YOUR_UNIFI_API_KEY --env UNIFI_PORT=443 --env UNIFI_VERIFY_SSL=false --env UNIFI_SITE=default -- uvx unifi-network-mcpRun in your terminal. Replace YOUR_* placeholders with real values; add --scope user to install for every project.
Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.
Verified live against the running server on Jun 11, 2026.
unifi_tool_indexModel-friendly discovery extension for UniFi Network tools. This server manages WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics. Standard MCP clients should use tools/list first; this compact index is an optional UniFi extension for filte...3 paramsModel-friendly discovery extension for UniFi Network tools. This server manages WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics. Standard MCP clients should use tools/list first; this compact index is an optional UniFi extension for filte...
searchvaluecategoryvalueinclude_schemasbooleanunifi_executeExecute a UniFi Network tool discovered via unifi_tool_index. This server manages WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics. This is a UniFi compatibility execution wrapper for lazy/meta-only workflows; standard MCP clients may call...2 paramsExecute a UniFi Network tool discovered via unifi_tool_index. This server manages WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics. This is a UniFi compatibility execution wrapper for lazy/meta-only workflows; standard MCP clients may call...
tool*stringargumentsobjectunifi_batchExecute multiple UniFi Network tools in parallel through a UniFi compatibility wrapper. Use unifi_tool_index to discover tool names when they are not directly registered. Returns job IDs for each operation. Use unifi_batch_status to check progress and get results. For single o...1 paramsExecute multiple UniFi Network tools in parallel through a UniFi compatibility wrapper. Use unifi_tool_index to discover tool names when they are not directly registered. Returns job IDs for each operation. Use unifi_batch_status to check progress and get results. For single o...
operations*arrayunifi_batch_statusCheck status of UniFi Network operations started with unifi_batch. Returns status ('running', 'done', 'error'), result (if done), or error (if failed). Can check multiple jobs at once by passing an array of job IDs.2 paramsCheck status of UniFi Network operations started with unifi_batch. Returns status ('running', 'done', 'error'), result (if done), or error (if failed). Can check multiple jobs at once by passing an array of job IDs.
jobIdstringjobIdsarrayunifi_load_toolsLoad UniFi Network tools (WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics) into the standard MCP tools/list surface. This is an advanced UniFi extension for lazy mode clients that support notifications/tools/list_changed. Clients that do...1 paramsLoad UniFi Network tools (WiFi networks, clients, devices, switches, APs, firewall, VPN, routing, and statistics) into the standard MCP tools/list surface. This is an advanced UniFi extension for lazy mode clients that support notifications/tools/list_changed. Clients that do...
tools*array
Leverage agents and agentic AI workflows to manage your UniFi deployment.
| Server | Status | Tools | Package |
|---|---|---|---|
| Network | Stable | 186 | unifi-network-mcp |
| Protect | Beta | 61 | unifi-protect-mcp |
| Access | Beta | 36 | unifi-access-mcp |
| Component | Status | Package |
|---|---|---|
| Relay Sidecar | Beta | unifi-mcp-relay |
| Worker Gateway | Beta | unifi-mcp-worker (CLI) |
Cloud Relay pairs the Cloudflare-hosted Worker gateway with the Relay sidecar on your LAN. The Worker provides the authenticated edge MCP endpoint, Durable Object broker, multi-location routing, token boundary, and deployment/management CLI. The Relay sidecar is a local MCP HTTP client and forwarder: it discovers configured local MCP servers over HTTP and maintains an outbound WebSocket to the Worker. Remote requests follow MCP client → Worker gateway → outbound WebSocket → Relay sidecar → local MCP servers over HTTP; the API server is not in this path. Read-only tools support annotation-based multi-location fan-out, while writes require explicit location targeting. Deploy the Worker with npm install -g unifi-mcp-worker && unifi-mcp-worker install, then see the Relay sidecar README to connect local servers.
| Component | Status | Package |
|---|---|---|
| API Server | Beta | unifi-api-server · GHCR image |
unifi-api-server is an independent HTTP service for consumers that do not speak MCP. It provides typed REST resources, read-only GraphQL queries, SSE streams, scoped API keys and administration, plus a REST action endpoint for supported controller operations. It shares unifi-core managers with the MCP servers but does not proxy or require them.
See apps/api/README.md for quick-start and deployment patterns.
UniFi MCP is a collection of Model Context Protocol servers that let AI assistants and automation tools interact with Ubiquiti UniFi controllers. Each server targets a specific UniFi application (Network, Protect, Access) and exposes its functionality as MCP tools — queryable, composable, and safe by default.
UniFi MCP keeps the standard MCP path primary: capable clients discover currently registered tools with tools/list and invoke them with tools/call. The default lazy mode keeps initial context small by exposing meta-tools first, while eager mode registers all selected domain tools directly for clients that prefer a full standard tool list.
The lazy-loading meta-tools — *_tool_index, *_execute, *_batch, *_batch_status, and lazy-only *_load_tools — support filtered discovery, indirect execution, batch orchestration, and optional direct registration. They are independent of the protocol-version response compatibility policy below. See MCP Discovery and Lazy-Loading Meta-Tools for mode-by-mode behavior.
For tool results that already provide structured output, adaptive response mode is the default. It classifies each request by the canonical date-based protocolVersion advertised during MCP initialization, not by the client's product name or application version. Requests advertising MCP 2025-06-18 or later receive concise text in content and the full result once in structuredContent; requests advertising an earlier revision (such as 2024-11-05 or 2025-03-26), or whose revision metadata is missing or malformed, retain the full compatibility JSON in content. Set UNIFI_MCP_CONTENT_MODE=compat to force that duplicated compatibility form, or UNIFI_MCP_CONTENT_MODE=compact to force concise text plus the full structured result even outside a negotiated request. Use compat for any client that consumes the full result only from content, regardless of its advertised revision.
The lazy-loading meta-tools remain content-only; they are not the pre-2025-06-18 protocol category described above. For structured inner results, *_execute and *_batch_status expose one normalized JSON payload in content rather than a nested transport pair; content-only execute results remain unchanged. Response modes do not convert these meta-tools to structuredContent.
UNIFI_NETWORK_MCP_CONTENT_MODE, UNIFI_PROTECT_MCP_CONTENT_MODE, and UNIFI_ACCESS_MCP_CONTENT_MODE override the global setting for their respective servers. Independently of transport compaction, Network's unifi_get_dashboard defaults to summary=true, while unifi_list_rogue_aps defaults to a summarized page of at most 100 records; pass summary=false when the full selected data is required.
Install via the plugin marketplace — includes the MCP server, an agent skill, and guided setup:
/plugin marketplace add sirkirby/unifi-mcp
/plugin install unifi-network@unifi-plugins
/unifi-network:unifi-network-setup
Repeat for Protect or Access if needed:
/plugin install unifi-protect@unifi-plugins
/plugin install unifi-access@unifi-plugins
Each plugin's setup command walks you through connecting to your controller and configuring permissions.
Register the UniFi MCP marketplace, then install the plugins from Codex's /plugins UI:
codex plugin marketplace add sirkirby/unifi-mcp
Launch codex, run /plugins, open the UniFi MCP marketplace, and install unifi-network, unifi-protect, or unifi-access. After installing, ask Codex to run the plugin's setup skill, for example:
Use the
unifi-network-setupskill to configure this for Codex.
The setup skill registers the MCP server with codex mcp add, stores the selected environment values in Codex's MCP configuration, and keeps the same preview-before-confirm safety model as Claude Code.
The MCP servers authenticate to the local UniFi controller APIs with a local admin/service account. Do not use a Ubiquiti SSO cloud account for MCP setup. For Network MCP today, accounts that require SSO MFA or local 2FA are not supported through configuration; use a dedicated local admin account without MFA for the service account, scoped to the permissions you are comfortable giving the MCP server.
OpenClaw can install the same UniFi plugin bundles from the marketplace and map their skills plus MCP server definitions into embedded Pi sessions:
openclaw plugins install unifi-network --marketplace https://github.com/sirkirby/unifi-mcp
openclaw gateway restart
Then run the matching setup skill from OpenClaw (unifi-network-setup, unifi-protect-setup, or unifi-access-setup), or configure the server directly:
openclaw mcp set unifi-network '{
"command": "uvx",
"args": ["--python-preference", "system", "unifi-network-mcp@latest"],
"env": {
"UNIFI_NETWORK_HOST": "192.168.1.1",
"UNIFI_NETWORK_USERNAME": "admin",
"UNIFI_NETWORK_PASSWORD": "your-password"
}
}'
Repeat with unifi-protect or unifi-access as needed. Restart the OpenClaw Gateway after changing MCP server configuration.
Run the servers directly:
uvx unifi-network-mcp@latest
uvx unifi-protect-mcp@latest
uvx unifi-access-mcp@latest
For Claude Desktop, add to your claude_desktop_config.json:
{
"mcpServers": {
"unifi-network": {
"command": "uvx",
"args": ["unifi-network-mcp@latest"],
"env": {
// Server-specific vars take priority; UNIFI_* is the fallback
"UNIFI_NETWORK_HOST": "192.168.1.1",
"UNIFI_NETWORK_USERNAME": "admin",
"UNIFI_NETWORK_PASSWORD": "your-password"
}
},
"unifi-protect": {
"command": "uvx",
"args": ["unifi-protect-mcp@latest"],
"env": {
"UNIFI_PROTECT_HOST": "192.168.1.1",
"UNIFI_PROTECT_USERNAME": "admin",
"UNIFI_PROTECT_PASSWORD": "your-password"
}
},
"unifi-access": {
"command": "uvx",
"args": ["unifi-access-mcp@latest"],
"env": {
"UNIFI_ACCESS_HOST": "192.168.1.1",
"UNIFI_ACCESS_USERNAME": "admin",
"UNIFI_ACCESS_PASSWORD": "your-password"
}
}
}
}
Tip: If all servers connect to the same controller, you can use the shared
UNIFI_HOST/UNIFI_USERNAME/UNIFI_PASSWORDvariables instead of repeating them per server.
Once connected, just ask your AI agent in natural language:
Network
"Show me all clients on the Guest VLAN with their signal strength and data usage" "Create a firewall rule that blocks IoT devices from reaching the internet between midnight and 6 AM" "Audit my firewall policies — are there any redundant or conflicting rules?" "Show me the top traffic flows from the last hour and group them by destination"
Protect
"List all cameras that detected motion in the last hour" "Show me smart detection events from the front door camera today — people and vehicles only" "Find driveway detections for white vans this week"
Access
"Who badged into the office today? Show me a timeline of all door access events" "Create a visitor pass for John Smith with access to the main entrance tomorrow 9-5"
Cross-Product (requires relay for full experience)
"Show me everything that happened at the front entrance in the last hour" — correlates Network clients, Protect camera events, and Access badge scans in a single timeline "A switch went offline at 2 AM — was there physical activity nearby?"
All mutations use a preview-then-confirm flow — you see exactly what will change before anything is applied.
Set these environment variables (or use a .env file):
| Variable | Required | Description |
|---|---|---|
UNIFI_HOST | Yes | Controller IP or hostname |
UNIFI_USERNAME | Yes | Local admin/service account username; do not use a Ubiquiti SSO account |
UNIFI_PASSWORD | Yes | Password for the local account |
UNIFI_API_KEY | No | UniFi API key for selected capabilities, including firewall policy ordering and some Protect settings updates |
Each server supports its own prefixed environment variables that take priority over the shared UNIFI_* variables. This lets you point the Network and Protect servers at different controllers (or different credentials) while keeping a single .env file:
| Shared (fallback) | Network server | Protect server | Access server |
|---|---|---|---|
UNIFI_HOST | UNIFI_NETWORK_HOST | UNIFI_PROTECT_HOST | UNIFI_ACCESS_HOST |
UNIFI_USERNAME | UNIFI_NETWORK_USERNAME | UNIFI_PROTECT_USERNAME | UNIFI_ACCESS_USERNAME |
UNIFI_PASSWORD | UNIFI_NETWORK_PASSWORD | UNIFI_PROTECT_PASSWORD | UNIFI_ACCESS_PASSWORD |
UNIFI_PORT | UNIFI_NETWORK_PORT | UNIFI_PROTECT_PORT | UNIFI_ACCESS_PORT |
UNIFI_VERIFY_SSL | UNIFI_NETWORK_VERIFY_SSL | UNIFI_PROTECT_VERIFY_SSL | UNIFI_ACCESS_VERIFY_SSL |
UNIFI_API_KEY | UNIFI_NETWORK_API_KEY | UNIFI_PROTECT_API_KEY | UNIFI_ACCESS_API_KEY |
Single controller? Just set the shared UNIFI_* variables -- all servers will use them. Server-specific variables are only needed when the servers talk to different controllers or use different credentials.
For the full configuration reference including permissions, transports, and advanced options, see the Network server docs, Protect server docs, or Access server docs.
Tool and API responses redact known controller secret fields by default — Wi-Fi passphrases, VPN private/preshared keys, whole VPN config blobs (imported WireGuard/OpenVPN .conf/.ovpn files), API tokens, SNMP community strings, and Access credential token/PIN values come back as ***REDACTED***. This keeps secrets out of agent context and logs.
When a trusted local administration workflow genuinely needs raw values, disable redaction for that process with UNIFI_REDACT_SENSITIVE_FIELDS=false or a server-specific override such as UNIFI_NETWORK_REDACT_SENSITIVE_FIELDS=false, UNIFI_PROTECT_REDACT_SENSITIVE_FIELDS=false, UNIFI_ACCESS_REDACT_SENSITIVE_FIELDS=false, or UNIFI_API_REDACT_SENSITIVE_FIELDS=false. To keep an existing secret during an update, simply omit the field — do not pass the ***REDACTED*** marker back; doing so is rejected so the placeholder can never be written as a real secret. See PRIVACY.md for the full list of redacted fields.
Each plugin ships with agent skills that go beyond raw tool access — they teach agents how to perform common tasks effectively:
| Skill | Plugin | What it does |
|---|---|---|
| Network Health Check | unifi-network | Batch diagnostics across devices, health subsystems, and alarms with reference docs for interpreting results |
| Firewall Manager | unifi-network | Natural language firewall management with policy templates, config snapshots, and change tracking |
| Firewall Auditor | unifi-network | Security audit with 16 benchmarks, 100-point scoring, topology analysis, and trend tracking |
| Security Digest | unifi-protect | Cross-product event intelligence — summarizes camera, door, and network events with severity classification and correlation rules |
| UniFi Access | unifi-access | Door control, credentials, visitors, access policies — with real-time event streaming and activity summaries |
Skills include reference documentation (device states, alarm types, firewall schemas, event catalogs) and Python scripts for deterministic operations (auditing, config export/diff, template application).
This is a monorepo with shared packages:
apps/
network/ # UniFi Network MCP server (stable, 186 tools)
protect/ # UniFi Protect MCP server (beta, 61 tools)
access/ # UniFi Access MCP server (beta, 36 tools)
api/ # Independent REST + GraphQL API server (beta)
worker/ # Cloudflare Worker gateway + npm CLI
packages/
unifi-core/ # Shared UniFi connectivity (auth, detection, retry)
unifi-mcp-shared/ # Shared MCP patterns (permissions, tools, diagnostics, config)
unifi-mcp-relay/ # Cloud relay sidecar (bridges local servers to Cloudflare Worker)
plugins/
unifi-network/ # Claude Code/Codex/OpenClaw plugin: MCP server + agent skills + setup
unifi-protect/ # Claude Code/Codex/OpenClaw plugin: MCP server + agent skills + setup
unifi-access/ # Claude Code/Codex/OpenClaw plugin: MCP server + setup
skills/
_shared/ # Shared utilities for skill scripts (MCP client, config)
docs/ # Ecosystem-level documentation
Each Python server in apps/ is an independent package that depends on the shared packages. apps/worker/ is intentionally separate: it is a self-contained TypeScript/Node app for the Cloudflare Worker gateway and npm CLI. Keeping it in this repo lets relay protocol changes and worker contract tests move together.
See docs/ARCHITECTURE.md for details.
make sync # Install Python workspace + worker npm dependencies
make check # Format check + lint + generated drift checks + tests + worker typecheck
make build # Build deployable artifacts, including worker typecheck
See CONTRIBUTING.md for the development workflow, including how to work with the monorepo, run tests, and submit PRs.
UniFi MCP is maintained as an independent open-source project. Sponsorship helps cover the ongoing AI costs behind building, testing, and maintaining the project, plus live controller compatibility testing, release maintenance, documentation, and issue triage across the Network, Protect, Access, API, relay, and plugin packages.
UNIFI_HOST*Controller IP/hostname
UNIFI_USERNAME*secretAdmin username
UNIFI_PASSWORD*secretAdmin password
UNIFI_API_KEYsecretAPI key (optional, experimental)
UNIFI_PORTdefault: 443Controller HTTPS port
UNIFI_VERIFY_SSLdefault: falseSSL certificate verification
UNIFI_SITEdefault: defaultUniFi site name
com.exploit-intel/eip-mcp
dmontgomery40/pentest-mcp
pantheon-security/notebooklm-mcp-secure
cyanheads/pentest-mcp-server
io.github.akhilucky/ai-firewall-mcp