UniFi MCP Server
An MCP server that exposes UniFi Network, Protect and cloud APIs (Site Manager, Mobility, InnerSpace, Carrier Fabric) as MCP tools, letting AI agents read and change UniFi infrastructure — 343 tools in local mode, with built-in safety controls.
Sites & monitoring: list/get sites, site health summaries, inventories, cross-site statistics, performance comparison and cross-site search.
Hosts, ISP & SD-WAN: list hosts, fetch host details, internet health, ISP metrics queries, version control info, SD-WAN config list/detail/status.
Integration API reads: sites, clients, devices, device tags, networks, WiFi broadcasts, DNS policies, VPN servers, WANs and DPI application categories — with pagination.
Raw proxying: arbitrary GET/POST/PUT/PATCH/DELETE against the Network or Protect application on any console via the Cloud Connector, with
confirmanddry_runguards.Cloud platforms: UniFi Carrier Fabric (subscribers, service plans, suspend/resume, attach/detach hosts), Mobility (workspaces, devices, clients, admins, LAN/DHCP and WiFi settings), InnerSpace (floor plans, access points, switches, inventory, asset download).
Multi-controller targeting: list/select controllers, see the active controller, and override per call with a
controllerargument.Safety & governance: every mutation needs
confirm=Trueand supportsdry_run=True; read-only/dry-run server modes, read/write/destructive risk tiers with viewer/operator/admin roles, and a hash-chained audit log.Beyond the tool list: fleet mode across many controllers, eight native MCP prompt workflows (health checks, troubleshooting, firewall review, change planning), A2A discovery/delegation, Prometheus metrics, webhooks and agent skills.
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 Server list all connected clients"
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.
An MCP server that exposes UniFi Network, UniFi Protect and the UniFi cloud APIs (Site Manager, Mobility, InnerSpace, Carrier Fabric) as MCP tools, so AI agents can read and change UniFi infrastructure through one standard interface. It runs against one controller or, in fleet mode, many.
Current release: 0.9.0. See CHANGELOG.md for what changed.
Contents
Related MCP server: UniFi Network MCP Server
Features
343 tools in local mode, from 60 modules.
Network: clients (search, block, reconnect), networks and VLANs, WiFi SSIDs, DHCP reservations, DNS, WAN, guest vouchers, QoS profiles and traffic routes, DPI statistics, traffic flows.
Devices: inventory, adoption, restart, locate, upgrade, radio settings, port profiles and per-port overrides, switching and stacks, topology export (JSON, GraphML, DOT), diagnostics, WiFi channel planning.
Security: legacy firewall rules and groups, zone-based firewall (zones, policies, zone matrix), ACL rules, traffic matching lists, port forwarding, VPN and site-to-site VPN, content filtering, RADIUS and the guest portal.
Protect: cameras, NVRs, views, events, sensors, lights, chimes, sirens, relays, speakers, alarm hubs and the alarm manager.
Cloud: Site Manager (hosts, sites, cross-site statistics), the connector proxy, Mobility workspaces and devices, InnerSpace floor plans and inventory, Carrier Fabric subscribers and service plans.
Operations: sites, backups (create, schedule, download, restore), events, multi-site aggregation, device migration between sites.
Fleet mode (optional, with Postgres and Redis): many controllers behind one server, a controller registry with encrypted credentials, server-issued tokens with roles, a shared read cache, several replicas and background workers, and
fleet_*tools that read across controllers. See MULTI_CONTROLLER.md and docs/FLEET_SCALING_PLAN.md.Native prompts: eight parameterised UniFi operational workflows (health check, client connectivity, WiFi performance, device investigation, firewall review, change planning, Protect health, fleet summary) exposed through the standard
prompts/listandprompts/getoperations. See docs/PROMPTS.md.Safety: every mutating tool needs
confirm=Trueand supportsdry_run=True, plus read-only and dry-run server modes, role-based access over risk tiers, and a hash-chained audit log (see below).A2A discovery and delegation: an agent card built from the live tool registry, served at
/a2a/agent-cardand/.well-known/agent-card.json, plus a capability manifest and a delegation endpoint that runs a registered tool under the server's own role, confirmation and audit controls. See A2A.md.Observability: Prometheus
/metrics,/healthz, SIEM export of audit records, optional Redis caching, webhooks with HMAC verification.
API modes
Set UNIFI_API_TYPE to choose how the server reaches UniFi.
Mode | What it reaches | Use it for |
| Your UniFi console or gateway on the LAN ( | Everything: device and client control, configuration, firewall, Protect |
| UniFi's Early Access cloud API | Sites and aggregate statistics; no per-device control or configuration |
| UniFi's stable v1 cloud API | Sites and aggregate statistics; no per-device control or configuration |
The cloud tools (Site Manager, Mobility, InnerSpace, Carrier Fabric) call api.ui.com and are registered in every mode. Set UNIFI_SITE_MANAGER_ENABLED=true to use Site Manager tools; actual exposure also depends on the selected profile. The existing Site Manager SD-WAN config list/detail/status reads use the official v1.0.0 /v1/sd-wan-configs paths after the 2026-11-08 reconciliation; this does not implement typed destination/performance steering policies, policy writes, or prove live account interoperability (see API.md and the gap reconciliation).
Zone-based firewall tools need UniFi Network 9.0 or later. Some documented UniFi endpoints do not exist on every firmware version; see docs/UNIFI_API.md.
UniFi Network 11 / UniFi OS 6: compatible per released documentation, with four items pending live-controller verification — not yet a claim of full support. USG gateways and the classic, self-hosted Network Application Server are removed platform targets; fleet_health automatically flags any registered controller with a USG in its device inventory, but there is no API signal to auto-detect a classic Network Application Server, so label that controller instead (e.g. deployment=classic-server) and filter on it. Network 11 replaces the statistics engine and resets historical data, so the statistics tools (get_historical_stats, get_speed_test_history, get_dpi_statistics, list_top_applications, get_client_dpi) attach a statistics_note to every empty response — an empty history right after the upgrade is expected, not an outage. See docs/NETWORK_11_COMPATIBILITY.md for the full compatibility matrix.
Quick start
1. Get an API key
Sign in to UniFi Site Manager.
Go to Settings → Control Plane → Integrations and choose Create API Key.
Copy the key. It is shown only once.
2. Install
pip install unifi-mcp-server # or: uv tool install unifi-mcp-server
# Fleet mode extras (Postgres, Redis):
pip install 'unifi-mcp-server[fleet]'Or use the container image (amd64, arm64 and arm/v7; the -fleet variant for amd64 and arm64):
docker pull ghcr.io/enuno/unifi-mcp-server:latest3. Add it to your MCP client
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows), Cursor (mcp.json, from View: Open MCP Settings) and most other MCP clients take the same mcpServers block:
{
"mcpServers": {
"unifi": {
"command": "uvx",
"args": ["unifi-mcp-server"],
"env": {
"UNIFI_API_KEY": "<your-api-key>",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}If you installed with pip, use "command": "unifi-mcp-server" and drop args. To run the container instead:
{
"mcpServers": {
"unifi": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "UNIFI_API_KEY=your-api-key-here",
"-e", "UNIFI_API_TYPE=local",
"-e", "UNIFI_LOCAL_HOST=192.168.2.1",
"ghcr.io/enuno/unifi-mcp-server:latest"
]
}
}
}Keep -i and do not add -d: the client talks to the server over the container's stdin and stdout.
4. Main settings
Variable | Purpose | Default |
| UniFi API key (required) | — |
|
|
|
| Console address in | — / |
| Verify the console's TLS certificate. |
|
| CA certificate (PEM) for a self-signed console, instead of turning verification off. Can be the console's own certificate | — |
| Name the console's certificate is checked against, when it is not | — |
| Site used when a tool call names none |
|
| Enable the cloud tools (Site Manager, Mobility, InnerSpace, Carrier) |
|
| Register only one group of tools (profiles) | all |
| Read-only or preview-only server |
|
| Registers | unset |
|
|
|
| Bearer token, required on network transports; | — |
| Optional response cache | — |
| HMAC secret for incoming UniFi webhooks | — |
| Turns on fleet mode (Postgres) | — |
.env.example lists every setting with comments, including audit logging, SIEM export, metrics, Supermemory and agnost.ai.
Agent skills
The skills/ directory holds agent skills: Markdown files an AI agent loads on demand, so it knows which UniFi tools exist and how to use them safely without keeping every tool definition in context. Each skill is a folder with a SKILL.md, in the layout Claude Code and other agents install.
Using the server (operator skills)
Skill | Covers |
Clients, networks and VLANs, WiFi, DHCP, DNS, WAN, vouchers | |
Inventory, adoption, restarts and upgrades, ports, switching, topology | |
Firewall rules and groups, zone-based firewall, ACLs, port forwarding, VPN | |
Sites, backups, QoS, traffic flows, DPI, RADIUS, guest portal | |
Low-interference WiFi channel plans from neighbor scans |
Changing this codebase (developer skills)
Skill | Covers |
Adding any MCP tool: model, function, registration, tests, docs | |
Network configuration tools: URL spaces, site IDs, read-modify-write | |
Firewall, ZBF, ACL and port forward tools, and their risk tiers | |
The | |
Cloud API tools and the fleet stack |
Install
Claude Code loads skills from ~/.claude/skills/<name>/SKILL.md (every session) or <project>/.claude/skills/<name>/SKILL.md (one project). Copy the folders you want:
git clone https://github.com/enuno/unifi-mcp-server.git
cd unifi-mcp-server
mkdir -p ~/.claude/skills
# All operator skills
cp -r skills/unifi-network skills/unifi-devices skills/unifi-security \
skills/unifi-system skills/unifi-channel-planning ~/.claude/skills/
# Or one skill
cp -r skills/unifi-security ~/.claude/skills/
# The one-file overview of the whole server, as a skill named "unifi"
mkdir -p ~/.claude/skills/unifi && cp SKILL.md ~/.claude/skills/unifi/SKILL.mdOther agents that read the same SKILL.md format take the same folders; copy them into that agent's skills directory (Codex, for example, reads .agents/skills/). To update, pull and copy again. Inside this repository the developer skills are already installed for Claude Code (.claude/skills/) and Codex (.agents/skills/).
Use
You don't invoke a skill yourself. The agent reads each skill's description and loads the one that matches your request, then calls the MCP tools it describes, so the MCP server must also be configured in the same client. For example:
"Which clients are on the guest VLAN right now?" loads
unifi-network."Audit the zone-based firewall for anything that allows WAN to LAN." loads
unifi-security."Which APs share a 5 GHz channel with a neighbor? Propose a channel plan." loads
unifi-channel-planning.
If the agent doesn't pick a skill up, name it ("use the unifi-security skill"). Pair a skill with the matching UNIFI_PROFILE to keep the tool list small too. docs/SKILLS.md has the full guide.
Tool profiles and safety controls
Profiles. UNIFI_PROFILE registers only one group of modules, so the client sees fewer tool definitions:
Profile | Tools | Covers |
| 48 | Clients, networks, WiFi, DHCP, DNS, WAN, vouchers, channel planning |
| 53 | Devices, control, migration, ports, switching, topology, diagnostics |
| 47 | Firewall, ZBF, ACLs, port forwarding, VPN, content filtering |
| 182 | Sites, backups, events, DPI, QoS, RADIUS, traffic flows, Protect, cloud |
| 75 | The Protect modules |
| 12 / 10 / 15 | One cloud API each |
| 19 | Sites, clients, devices |
Counts include the four fleet tools every profile gets. An unknown profile logs a warning and loads everything.
Safety controls.
Every mutating tool requires
confirm=True, anddry_run=Truereturns the change it would make without making it.UNIFI_READ_ONLY=trueleaves mutating tools out of the tool list entirely.UNIFI_DRY_RUN=trueforces every mutating call into preview mode.DEBUG=trueaddsdebug_api_request, a raw GET or DELETE to any controller endpoint. It is a destructive-tier tool, a DELETE needsconfirm=True, and read-only mode removes it. LeaveDEBUGunset in production.With tokens, each tool has a risk tier (
read,write,destructive) and each role a set of tiers:viewerreads,operatorwrites, andadmincan also run destructive tools, including deletes, restores, restarts, client blocking and firewall policy changes. See API.md.Mutations are written to a hash-chained JSON-lines audit log (Postgres in fleet mode), with optional field encryption and SIEM export. See SECURITY.md.
Inputs are validated with Pydantic, and credentials are redacted from logs.
Network transports and deployment
stdio is the default and needs no port. To serve MCP over the network, use Streamable HTTP:
export MCP_SERVER_TRANSPORT=streamable_http
export MCP_SERVER_PORT=3000
export MCP_AUTH_TOKEN=$(openssl rand -hex 32) # required on every network transport
unifi-mcp-server
# Listening on 127.0.0.1:3000; clients send Authorization: Bearer $MCP_AUTH_TOKENClients and MCP gateways then connect to http://<host>:3000/mcp. The server binds to 127.0.0.1 unless you set MCP_SERVER_HOST; put an authenticating TLS proxy in front before exposing it further. http also works. sse is deprecated: client proxies such as mcp-remote can race its initialize handshake (#96).
Container, with the published port on loopback:
services:
unifi-mcp:
image: ghcr.io/enuno/unifi-mcp-server:latest
environment:
UNIFI_API_KEY: your-api-key
UNIFI_API_TYPE: local
UNIFI_LOCAL_HOST: 192.168.2.1
MCP_SERVER_TRANSPORT: streamable_http
MCP_SERVER_PORT: 3000
MCP_SERVER_HOST: 0.0.0.0 # inside the container only
MCP_AUTH_TOKEN: ${MCP_AUTH_TOKEN}
ports:
- "127.0.0.1:3000:3000"The repository's docker-compose.yml adds Redis and the MCP Toolbox dashboard (MCP_TOOLBOX.md); copy .env.docker.example to .env and run make compose-up. That example starts read-only (UNIFI_READ_ONLY=true) with a viewer stdio caller (UNIFI_STDIO_ROLE=viewer); to allow changes, set UNIFI_READ_ONLY=false and raise UNIFI_STDIO_ROLE to operator, or admin for destructive changes.
Ansible: deploy/ansible/ deploys the server alone, a single-host fleet (server, worker, Redis, Postgres), or replicas behind nginx on several hosts. To have an AI agent run the deployment, start from a prompt in docs/deploy-prompts/.
Kubernetes: deploy/helm/unifi-mcp/ is a Helm chart for the server alone or in fleet mode with workers, taking every credential from an existing Secret.
Local dev deployment (either method):
make helm-deploy-localormake ansible-dev-deploybuild the current working tree — including uncommitted changes — tag itlocal-<short-sha>[-dirty], and deploy it for real, instead of pulling or building from a published release. See the "Deploying from a local checkout" / "Local dev deployment" sections in the two overview docs above.
Calling the server from code
Any MCP client library works. With the FastMCP client:
import asyncio
from fastmcp import Client
config = {
"mcpServers": {
"unifi": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "<your-api-key>",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1",
},
}
}
}
async def main() -> None:
async with Client(config) as client:
sites = await client.call_tool("list_sites", {})
print(sites.data)
clients = await client.call_tool("list_active_clients", {"site_id": "default"})
print(clients.data)
# Mutations need confirm=True; dry_run=True previews the change.
preview = await client.call_tool(
"create_firewall_zone",
{"site_id": "default", "name": "IoT", "confirm": True, "dry_run": True},
)
print(preview.data)
asyncio.run(main())bin/unifi-cli runs a single tool from a shell (unifi-cli list-clients --site default); see docs/SKILLS.md.
Native MCP prompts
Besides the tools, the server exposes eight parameterised UniFi operational
workflows through the standard MCP prompts interface. A client discovers them
with prompts/list and retrieves a rendered workflow brief with prompts/get.
import asyncio
from fastmcp import Client
config = {
"mcpServers": {
"unifi": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "<your-api-key>",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1",
},
}
}
}
async def main() -> None:
async with Client(config) as client:
for prompt in await client.list_prompts():
print(prompt.name, prompt.description)
result = await client.get_prompt(
"network_health_check",
{"site_id": "default", "focus": "wan"},
)
for message in result.messages:
print(message.content.text)
asyncio.run(main())The prompts are network_health_check, troubleshoot_client_connectivity,
troubleshoot_wifi_performance, investigate_device,
review_firewall_policy, plan_network_change, protect_health_check and
fleet_health_summary. A workflow is advertised only when the tools it needs
are registered on this server, so the prompt list follows the API mode, the
profile and the read-only and dry-run settings.
Retrieving a prompt does not run the workflow and grants no approval. The
rendered text tells an agent which read tools to call and what to report; the
agent calls the tools itself, and the server's role checks, confirm gate and
audit trail still apply.
Use make inspect to open the MCP Inspector and browse the prompts, or the
MCPJungle CLI to check what the gateway forwards:
mcpjungle list prompts --server unifi
mcpjungle get prompt unifi__network_health_check --arg site_id=defaultA tools-only client will not display the prompts; that is a client limitation. There is no prompts-as-tools shim.
See docs/PROMPTS.md for the full catalog, the availability matrix, the validation rules and the manual acceptance steps.
Documentation
Document | Contents |
Every MCP tool and resource, with parameters and examples | |
The native MCP prompt catalog, with arguments and availability rules | |
The agent card, the capability manifest and the delegation endpoint | |
The A2A and skills audit: what was implemented, what was not, and why | |
Agent skills, profiles and the CLI wrapper | |
The UniFi endpoints behind the tools | |
Fleet mode: controllers, tokens and roles | |
Metrics, webhooks, the A2A agent endpoints | |
Operating runbooks | |
Reporting vulnerabilities, audit logging and hardening | |
Architecture target and roadmap | |
Release history and how releases are cut and published |
Development
git clone https://github.com/enuno/unifi-mcp-server.git
cd unifi-mcp-server
make install # uv sync from uv.lock with the dev extra (no activation needed)
make hooks # pre-commit and commit-msg hooks
cp .env.example .env # then set UNIFI_API_KEY and, for local mode, UNIFI_LOCAL_HOST
make test # unit tests
make ci # every blocking CI check: lint, typecheck, security, docs coverage, tests with the 80% gate
make inspect # open the server in the MCP Inspector (needs Node.js)
make help # list every targetWithout make, the same commands run through uv run --locked, for example uv run --locked pytest tests/unit/ -m "not integration". Integration tests (-m integration) need real UniFi hardware.
Layout: src/main.py builds the server, src/tools/ holds the tool modules, src/api/ the UniFi clients, src/models/ the Pydantic models, src/fleet/ the fleet stack, and tests/unit/ the unit tests. AGENTS.md and CLAUDE.md describe the conventions in detail, and commands.md lists the development commands.
Contributing
Contributions from people and AI coding agents are welcome. See CONTRIBUTING.md and AGENTS.md.
Fork the repository and create a branch.
Write tests first, keep new code at 80% coverage or better, and run
make ci.Use conventional commit messages (
feat: ...,fix: ...) and open a pull request.
Issues with [Bug] in the title opened by a maintainer or collaborator get an automated first analysis; other reports are triaged by hand (details).
Security
Report vulnerabilities as described in SECURITY.md. Never commit credentials.
Acknowledgments
sirkirby/unifi-network-mcp, the reference implementation
License
Apache License 2.0. See LICENSE.
Links
Issues and discussions: GitHub Issues, GitHub Discussions
Releases: https://github.com/enuno/unifi-mcp-server/releases
Container images: https://ghcr.io/enuno/unifi-mcp-server
MCP Registry: search for
io.github.enuno/unifi-mcp-serverat https://registry.modelcontextprotocol.io
Available Tools
71 toolsassign_carrier_subscriber_planC
Assign a service plan to a UniFi Carrier Fabric subscriber.
Inputs: plan_id (required), subscriber_id (required), confirm, dry_run, +1 more. Returns: object
attach_carrier_subscriber_hostC
Attach a gateway host to a UniFi Carrier Fabric subscriber.
Inputs: host_id (required), subscriber_id (required), confirm, dry_run, +1 more. Returns: object
compare_site_performanceA
Compare performance metrics across all sites.
Analyzes uptime, latency, bandwidth, and health status to identify best and worst performing sites.
Inputs: controller. Returns: object
connector_network_deleteC
Proxy a DELETE request to the Network Application via Cloud Connector.
Inputs: path (required), console_id (required), confirm, dry_run, +1 more. Returns: result
connector_network_getA
Proxy a GET request to the Network Application via Cloud Connector.
Forwards the request to
https://api.ui.com/v1/connector/consoles/{console_id}/proxy/network/{path}
and returns the raw response.
Inputs: path (required), console_id (required), params, controller. Returns: result
connector_network_patchC
Proxy a PATCH request to the Network Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
connector_network_postC
Proxy a POST request to the Network Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
connector_network_putC
Proxy a PUT request to the Network Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
connector_protect_deleteC
Proxy a DELETE request to the Protect Application via Cloud Connector.
Inputs: path (required), console_id (required), confirm, dry_run, +1 more. Returns: result
connector_protect_getA
Proxy a GET request to the Protect Application via Cloud Connector.
Forwards the request to
https://api.ui.com/v1/connector/consoles/{console_id}/proxy/protect/{path}
and returns the raw response.
Inputs: path (required), console_id (required), params, controller. Returns: result
connector_protect_patchC
Proxy a PATCH request to the Protect Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
connector_protect_postC
Proxy a POST request to the Protect Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
connector_protect_putC
Proxy a PUT request to the Protect Application via Cloud Connector.
Inputs: path (required), console_id (required), body, confirm, +2 more. Returns: result
create_carrier_subscriberC
Create a UniFi Carrier Fabric subscriber.
Inputs: subscriber_number (required), name, email, notes, +7 more. Returns: object
detach_carrier_subscriber_hostC
Detach the gateway host from a UniFi Carrier Fabric subscriber.
Inputs: subscriber_id (required), confirm, dry_run, controller. Returns: object
download_innerspace_assetC
Download an asset (e.g. floor plan image) from InnerSpace.
Inputs: plan_id (required), filename (required), console_id (required), controller. Returns: object
get_active_controllerA
Show which controller a tool call without controller would target.
Returns:
The controller name and where it came from: session
(select_controller) or default; both are None when neither is set
Inputs: no named parameters. Returns: object
get_carrier_service_planB
Get a UniFi Carrier Fabric service plan by ID.
Inputs: plan_id (required), controller. Returns: object
get_carrier_subscriberC
Get a UniFi Carrier Fabric subscriber by ID.
Inputs: subscriber_id (required), controller. Returns: object
get_cross_site_statisticsC
Get aggregate statistics across multiple sites.
Inputs: controller. Returns: object
get_hostC
Get host details by ID.
Inputs: host_id (required), controller. Returns: object
get_innerspace_projectC
Get the InnerSpace project data for the integration on a console.
Inputs: console_id (required), controller. Returns: object
get_integration_clientC
Get a single connected client via the integration API.
Inputs: site_id (required), client_id (required), controller. Returns: object
get_integration_deviceC
Get a single adopted device via the integration API.
Inputs: site_id (required), device_id (required), controller. Returns: object
get_integration_dns_policyB
Get a single DNS policy via the integration API.
Inputs: site_id (required), policy_id (required), controller. Returns: object
get_integration_wifi_broadcastC
Get a single WiFi broadcast via the integration API.
Inputs: site_id (required), broadcast_id (required), controller. Returns: object
get_internet_healthC
Get internet health metrics across sites.
Inputs: site_id, controller. Returns: object
get_isp_metricsC
Get ISP metrics for a specific site.
Inputs: site_id (required), controller. Returns: object
get_mobility_deviceC
Get detail for a UniFi Mobility device.
Inputs: device_id (required), workspace_id (required), controller. Returns: object
get_sdwan_configC
Get SD-WAN configuration by ID.
Inputs: config_id (required), controller. Returns: object
get_sdwan_config_statusC
Get SD-WAN configuration deployment status.
Inputs: config_id (required), controller. Returns: object
get_site_detailsC
Get detailed site information.
Inputs: site_id (required), controller. Returns: object
get_site_health_summaryB
Get health summary for all sites or a specific site.
Inputs: site_id, controller. Returns: result
get_site_inventoryB
Get comprehensive inventory for a site or all sites.
Provides detailed breakdown of resources including devices, clients, networks, SSIDs, VPN tunnels, and firewall rules.
Inputs: site_id, controller. Returns: result
get_version_controlC
Get API version control information.
Inputs: controller. Returns: object
health_checkA
Health check endpoint to verify server is running.
Returns: Status information
Inputs: no named parameters. Returns: object
list_all_sites_aggregatedC
List all sites with aggregated stats from Site Manager API.
Inputs: controller. Returns: result
list_carrier_service_plansB
List UniFi Carrier Fabric service plans.
Inputs: controller. Returns: object
list_carrier_subscribersB
List UniFi Carrier Fabric subscribers.
Inputs: limit, offset, plan_id, suspended, +1 more. Returns: object
list_controllersA
List the UniFi controllers this server can reach.
Every controller-bound tool accepts a controller argument naming one
of these; without it, calls go to the controller chosen with
select_controller, then to the default.
Returns: Controllers (name, API type, host, default site, labels), the default controller, and this session's selection
Inputs: no named parameters. Returns: object
list_dpi_application_categoriesA
List DPI application categories via the integration API.
This endpoint is global (not site-scoped) and returns the canonical list of application categories used by DPI and traffic-routing features.
Inputs: limit, offset, controller. Returns: object
list_hostsC
List all managed hosts/consoles.
Inputs: limit, offset, controller. Returns: result
list_innerspace_access_pointsB
List access points known to InnerSpace on a console.
Inputs: console_id (required), controller. Returns: object
list_innerspace_floor_plansB
List InnerSpace floor plans on a console.
Inputs: console_id (required), controller. Returns: object
list_innerspace_inventoryB
List unplaced devices in InnerSpace inventory on a console.
Inputs: console_id (required), controller. Returns: object
list_innerspace_switchesC
List switches placed on InnerSpace floor plans on a console.
Inputs: console_id (required), site_id, controller. Returns: object
list_integration_clientsC
List connected clients via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_devicesC
List adopted devices via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_device_tagsC
List device tags via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_dns_policiesB
List DNS policies via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_networksC
List networks via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_sitesA
List sites via the integration API.
Returns UUID-based site identifiers suitable for use with other integration API tools in this module.
Inputs: limit, offset, controller. Returns: object
list_integration_vpn_serversC
List VPN servers via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_wansC
List WAN connections via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_integration_wifi_broadcastsC
List WiFi broadcasts (SSIDs) via the integration API.
Inputs: site_id (required), limit, offset, controller. Returns: object
list_mobility_device_clientsC
List clients attached to a UniFi Mobility device.
Inputs: device_id (required), workspace_id (required), limit, offset, +1 more. Returns: object
list_mobility_devicesC
List devices in a UniFi Mobility workspace.
Inputs: workspace_id (required), limit, offset, controller. Returns: object
list_mobility_workspace_adminsC
List admins of a UniFi Mobility workspace.
Inputs: workspace_id (required), controller. Returns: object
list_mobility_workspacesB
List UniFi Mobility workspaces.
Inputs: controller. Returns: object
list_sdwan_configsC
List all SD-WAN configurations.
Inputs: controller. Returns: result
list_sitesC
List all accessible sites.
Inputs: limit, offset, controller. Returns: result
list_vantage_pointsC
List all Vantage Points.
Inputs: controller. Returns: result
query_isp_metricsC
Query ISP metrics with optional filters.
Inputs: site_id, end_time, controller, start_time. Returns: result
resume_carrier_subscriberB
Resume a suspended UniFi Carrier Fabric subscriber.
Inputs: subscriber_id (required), confirm, dry_run, controller. Returns: object
search_across_sitesB
Search for resources across all sites.
Search for devices, clients, or networks across all managed sites. Useful for locating resources in multi-site deployments.
Inputs: query (required), controller, search_type. Returns: object
select_controllerA
Choose the controller this session's later tool calls target.
A tool call's own controller argument still takes precedence.
Inputs: name (required). Returns: object
suspend_carrier_subscriberC
Suspend a UniFi Carrier Fabric subscriber.
Inputs: subscriber_id (required), reason, confirm, dry_run, +1 more. Returns: object
update_carrier_subscriberA
Update a UniFi Carrier Fabric subscriber.
Only provided fields are sent to the API. Spec semantics: an absent field leaves it unchanged, while an explicit null clears the field. This tool only sends provided fields, so use plan_id="" style clearing via direct API if ever needed.
Inputs: subscriber_id (required), name, email, notes, +7 more. Returns: object
update_mobility_deviceC
Rename a UniFi Mobility device.
Inputs: name (required), device_id (required), workspace_id (required), confirm, +2 more. Returns: object
update_mobility_device_networkC
Update LAN / DHCP settings on a UniFi Mobility device.
Inputs: device_id (required), workspace_id (required), confirm, dry_run, +6 more. Returns: object
update_mobility_device_wirelessC
Update WiFi settings on a UniFi Mobility device.
Inputs: ssid (required), password (required), device_id (required), workspace_id (required), +3 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 71 tools
The set exposes many overlapping read paths for the same concepts: list_sites, list_integration_sites, and list_all_sites_aggregated; get_site_details, get_site_health_summary, get_site_inventory, and get_cross_site_statistics; plus generic connector_network_get alongside specialized integration getters. Connector proxy tools also overlap conceptually with direct API tools, making it unclear when to use which path.
Most names follow a predictable snake_case verb_noun pattern, and the connector_* family is internally consistent. Minor deviations like health_check, connector_network_post, and list_all_sites_aggregated keep it from being fully uniform, but the convention is still readable.
Seventy-one tools is an extreme surface for a single MCP server, even one spanning multiple UniFi sub-products. The set is large enough to overwhelm tool selection and includes many parallel read-only variants that could be consolidated.
Coverage is broad across sites, clients, devices, connectors, Carrier Fabric, InnerSpace, and Mobility, and the connector proxy provides an escape hatch for raw Network/Protect operations. However, many integration-API resources only expose list/get, with no direct create/update/delete, so the lifecycle coverage is uneven.
Maintenance
Related MCP Connectors
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
IP intelligence, network diagnostics, and AI service availability tools for AI agents.
Related MCP Servers
- AlicenseDqualityDmaintenanceEnables comprehensive management of UniFi network infrastructure through the UniFi Cloud API, including device control, client management, camera settings, and access door control through natural language.3950 npmApache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to manage UniFi network infrastructure through 50+ tools covering devices, clients, networks, WiFi, firewall rules, and guest access using the official UniFi Network API.5229 npm5MIT
- AlicenseBqualityDmaintenanceProvides 170+ tools to manage UniFi networks via the internal controller API, enabling AI assistants to perform full network management including clients, devices, WLANs, firewall, and more.64MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage UniFi Network, Protect, and Access infrastructure through MCP tools, with support for local controllers and cloud relay.MIT