From unifi-protect
Configures UniFi Protect NVR connection: prompts for host, username/password/API key, permissions, and writes to .claude/settings.local.json using platform scripts.
npx claudepluginhub sirkirby/unifi-mcp --plugin unifi-protectThis skill is limited to using the following tools:
Walk the user through configuring their UniFi Protect NVR connection. **Ask each question one at a time using AskUserQuestion. Wait for the answer before proceeding.**
Walks through UniFi Network MCP server setup: prompts for controller host, username/password/API key, optional port/site/SSL/permissions, writes config to settings.local.json via bash/powershell.
Configures UniFi Access MCP server by prompting for controller host, API key or username/password credentials, and permissions; saves to .claude/settings.local.json via Bash or PowerShell.
Interactive wizard configures credentials for homelab services like Plex, Radarr, Sonarr, Unraid, Tailscale in ~/.claude-homelab/.env. Use for initial setup or adding services.
Share bugs, ideas, or general feedback.
Walk the user through configuring their UniFi Protect NVR connection. Ask each question one at a time using AskUserQuestion. Wait for the answer before proceeding.
Ask: "What is your UniFi controller's IP address or hostname?" (e.g., 192.168.1.1)
If the user already has a Network server configured (check for UNIFI_NETWORK_HOST or UNIFI_HOST in .claude/settings.local.json), ask: "Is Protect on the same controller as your Network server?" If yes, use the same host.
If the user already has Network credentials configured with the shared UNIFI_ prefix, mention they can reuse those. Only set UNIFI_PROTECT_ prefixed variables if the credentials differ from the shared ones.
Ask for:
Username and password are required. These must be local admin credentials on the UniFi controller.
After collecting credentials, mention:
"UniFi also supports API keys, but API key auth is experimental — it's limited to read-only operations and a subset of tools. Ubiquiti is still expanding API key support. Would you also like to configure an API key?"
If yes, ask for the API key string and include it as UNIFI_PROTECT_API_KEY in the configuration. If no, skip it.
Ask: "Do you want to enable any write permissions? By default, ALL mutations are disabled for Protect (camera settings, recording control, PTZ, reboots)."
Options:
Use the appropriate script for the user's platform to write all collected values to .claude/settings.local.json. Check the platform from your environment info. On Windows use set-env.ps1, on macOS/Linux use set-env.sh:
macOS / Linux:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/set-env.sh \
UNIFI_PROTECT_HOST=<host> \
UNIFI_PROTECT_USERNAME=<username> \
UNIFI_PROTECT_PASSWORD=<password>
Windows:
powershell -ExecutionPolicy Bypass -File "${CLAUDE_PLUGIN_ROOT}/scripts/set-env.ps1" UNIFI_PROTECT_HOST=<host> UNIFI_PROTECT_USERNAME=<username> UNIFI_PROTECT_PASSWORD=<password>
If the host and credentials are the same as existing shared UNIFI_* vars, use the shared prefix instead (same script, different keys).
If permissions were enabled, also pass those:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/set-env.sh \
UNIFI_POLICY_PROTECT_CAMERAS_UPDATE=true
Permission variables by option:
UNIFI_POLICY_PROTECT_CAMERAS_UPDATE=trueUNIFI_POLICY_PROTECT_CAMERAS_UPDATE=true, UNIFI_POLICY_PROTECT_LIGHTS_UPDATE=true, UNIFI_POLICY_PROTECT_CHIMES_UPDATE=trueTell the user:
"Configuration saved to .claude/settings.local.json. Restart Claude Code to connect the MCP server. After restart, run /mcp to verify the connection, or just ask me about your cameras."
Show a summary table of what was configured.