Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By jmagar
Manage UniFi network infrastructure directly from Claude: inspect clients, devices, sites, WiFi configs, firewall rules, and DPI stats; perform actions like blocking or reconnecting clients and restarting or locating devices.
npx claudepluginhub jmagar/claude-homelab --plugin unifi-mcpThis plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
unifi_urlURL of your UniFi controller, e.g. https://192.168.1.1:443. No trailing slash.
${user_config.unifi_url}Requires secrets
Needs API keys or credentials to function
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
unifi_mcp_urlFull MCP endpoint URL including /mcp path. Default http://localhost:8001/mcp works if running via docker compose in this repo. Change if running on a different host or port.
${user_config.unifi_mcp_url}unifi_passwordUniFi controller admin password.
${user_config.unifi_password}unifi_usernameUniFi controller admin username.
${user_config.unifi_username}unifi_mcp_tokenBearer token for authenticating with the MCP server. Must match UNIFI_MCP_TOKEN in .env. Generate with: openssl rand -hex 32
${user_config.unifi_mcp_token}UniFi Network MCP server — manage network devices, clients, firewall, VPN, and more
UniFi network management CLI, TUI, and AI agent skill for full infrastructure control
MikroTik router management and network automation
Claude plugins for Domotz - network monitoring & management, device inventory, alert management, SNMP monitoring, and Domotz Eyes sensors for MSPs
Network diagnostics, reconnaissance, monitoring, and HTTP load testing - trippy, gping, ss, RustScan, nmap, bandwhich, sniffnet, oha
Query, monitor, and manage Unraid servers via GraphQL API through MCP tools. Supports system info, Docker, VMs, array/parity, notifications, plugins, rclone, and live telemetry.
Query, monitor, and manage Unraid servers via GraphQL API through MCP tools. Supports system info, Docker, VMs, array/parity, notifications, plugins, rclone, and live telemetry.
Core homelab agents, commands, and setup/health skills for self-hosted service management. Includes interactive credential setup wizard and unified service health dashboard.
Gotify push notifications and management via MCP tools with HTTP fallback. Sends alerts for long-running tasks, plan completions, and blocked states.
Agents, commands, skills, and scripts for scaffolding, reviewing, aligning, and deploying homelab MCP server plugins. Includes canonical Python, TypeScript, and Rust server templates.
Spider-powered self-hosted RAG engine — scrape, map, extract, crawl, embed, and query via MCP or CLI. 16 skills covering web crawling, GitHub/Reddit/YouTube ingest, semantic vector search, and grounded LLM answers over indexed content.
FastMCP server for local UniFi controller management. Exposes a single unifi action router and a unifi_help reference tool covering devices, clients, network configuration, and controller monitoring.
The server connects to a self-hosted UniFi controller (including UDM Pro) and proxies all operations through a single MCP tool. A unified action parameter replaces 31 individual tools while preserving every capability. Destructive operations require explicit confirmation. Bearer token auth protects the HTTP endpoint in production.
unifi_mcp/: server, client, config, formatters, models, services, resources, and toolsskills/unifi/: client-facing skilldocs/: API notes, action-pattern rationale, testing notes.claude-plugin/, .codex-plugin/, gemini-extension.json: client manifestsdocker-compose.yaml, Dockerfile: container deploymenttests/: unit, resource, and integration testsunifiSingle action router for all UniFi operations.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | yes | — | Action to perform (see below) |
site_name | string | no | "default" | UniFi site name. Ignored by get_sites, get_controller_status, get_user_info |
mac | string | no | null | Device or client MAC address (any format: aa:bb:cc, AA-BB-CC, aabb.cc) |
limit | int | no | varies | Maximum results to return |
connected_only | bool | no | true | get_clients: return only currently connected clients |
active_only | bool | no | true | get_alarms: return only unarchived alarms |
by_filter | string | no | "by_app" | get_dpi_stats: "by_app" or "by_cat" |
name | string | no | null | set_client_name: new display name (empty string removes it) |
note | string | no | null | set_client_note: note text (empty string removes it) |
minutes | int | no | 480 | authorize_guest: access duration in minutes |
up_bandwidth | int | no | null | authorize_guest: upload limit in Kbps |
down_bandwidth | int | no | null | authorize_guest: download limit in Kbps |
quota | int | no | null | authorize_guest: data quota in MB |
confirm | bool | no | null | Set to true to confirm destructive operations |
unifi_helpReturns full markdown reference for all actions and parameters. No parameters needed.
| Action | MAC Required | Description |
|---|---|---|
get_devices | no | List all devices on a site with status, model, IP, and uptime |
get_device_by_mac | yes | Get full details for one device by MAC |
restart_device | yes | Destructive — reboot the device |
locate_device | yes | Activate the locate LED on the device |
get_devices response fields per device: name, model, type (Access Point / Gateway / Switch), status (Online / Offline), ip, mac, uptime, version
restart_device example:
unifi action=restart_device mac=aa:bb:cc:dd:ee:ff confirm=true
| Action | MAC Required | Description |
|---|---|---|
get_clients | no | List clients. connected_only=true (default) filters offline entries |
reconnect_client | yes | Destructive — force a client to reconnect (kick-sta) |
block_client | yes | Destructive — block a client from network access |
unblock_client | yes | Re-allow a previously blocked client |
forget_client | yes | Destructive — remove all historical data for a client (GDPR) |
set_client_name | yes | Set or update the display alias for a client |
set_client_note | yes | Set or update the note for a client |
set_client_name / set_client_note: Both resolve the client by MAC against the controller user list (/list/user), then POST to /upd/user/{id}. Pass an empty string (name="") to remove the value.
Workflow — block a client:
# Step 1: find the MAC
unifi action=get_clients connected_only=true
# Step 2: block it
unifi action=block_client mac=aa:bb:cc:dd:ee:ff confirm=true
# Step 3: verify
unifi action=get_clients connected_only=false