UniFi MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDIS_DB | No | Redis database number | |
| REDIS_HOST | No | Redis host for caching | |
| REDIS_PORT | No | Redis port | |
| AGNOST_ORG_ID | No | Agnost organization ID | |
| UNIFI_API_KEY | No | Your UniFi API key from unifi.ui.com | |
| UNIFI_PROFILE | No | Tool scope profile: network, devices, security, system, or minimal | |
| AGNOST_ENABLED | No | Enable agnost.ai performance tracking (true/false) | |
| REDIS_PASSWORD | No | Redis password if required | |
| UNIFI_API_TYPE | No | API mode: local, cloud-v1, or cloud-ea | |
| WEBHOOK_SECRET | No | Secret for webhook HMAC verification | |
| AGNOST_ENDPOINT | No | Agnost API endpoint | |
| MCP_SERVER_HOST | No | Bind address | 0.0.0.0 |
| MCP_SERVER_PORT | No | Server port | 3000 |
| UNIFI_LOCAL_HOST | No | Local gateway IP address (required for local mode) | |
| UNIFI_LOCAL_PORT | No | Local gateway port | 443 |
| UNIFI_DEFAULT_SITE | No | Default site ID | default |
| UNIFI_CLOUD_API_URL | No | Cloud API URL | https://api.ui.com |
| AGNOST_DISABLE_INPUT | No | Disable input tracking | |
| MCP_SERVER_TRANSPORT | No | Transport mode: stdio, sse, http, streamable_http | stdio |
| AGNOST_DISABLE_OUTPUT | No | Disable output tracking | |
| UNIFI_LOCAL_VERIFY_SSL | No | SSL verification for local gateway | false |
| UNIFI_SITE_MANAGER_ENABLED | No | Enable Site Manager multi-site tools for cloud-ea | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_site_detailsC | Get detailed site information. |
| list_sitesC | List all accessible sites. |
| compare_site_performanceA | Compare performance metrics across all sites. Analyzes uptime, latency, bandwidth, and health status to identify best and worst performing sites. |
| get_cross_site_statisticsC | Get aggregate statistics across multiple sites. |
| get_hostC | Get host details by ID. |
| get_internet_healthC | Get internet health metrics across sites. |
| get_isp_metricsC | Get ISP metrics for a specific site. |
| get_sdwan_configC | Get SD-WAN configuration by ID. |
| get_sdwan_config_statusC | Get SD-WAN configuration deployment status. |
| get_site_health_summaryB | Get health summary for all sites or a specific site. |
| 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. |
| get_version_controlC | Get API version control information. |
| list_all_sites_aggregatedC | List all sites with aggregated stats from Site Manager API. |
| list_hostsC | List all managed hosts/consoles. |
| list_sdwan_configsC | List all SD-WAN configurations. |
| list_vantage_pointsC | List all Vantage Points. |
| query_isp_metricsC | Query ISP metrics with optional filters. |
| 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. |
| connector_network_deleteC | Proxy a DELETE request to the Network Application via Cloud Connector. |
| connector_network_getA | Proxy a GET request to the Network Application via Cloud Connector. Forwards the request to
|
| connector_network_patchC | Proxy a PATCH request to the Network Application via Cloud Connector. |
| connector_network_postC | Proxy a POST request to the Network Application via Cloud Connector. |
| connector_network_putC | Proxy a PUT request to the Network Application via Cloud Connector. |
| connector_protect_deleteC | Proxy a DELETE request to the Protect Application via Cloud Connector. |
| connector_protect_getA | Proxy a GET request to the Protect Application via Cloud Connector. Forwards the request to
|
| connector_protect_patchC | Proxy a PATCH request to the Protect Application via Cloud Connector. |
| connector_protect_postC | Proxy a POST request to the Protect Application via Cloud Connector. |
| connector_protect_putC | Proxy a PUT request to the Protect Application via Cloud Connector. |
| get_integration_clientC | Get a single connected client via the integration API. |
| get_integration_deviceC | Get a single adopted device via the integration API. |
| get_integration_dns_policyB | Get a single DNS policy via the integration API. |
| get_integration_wifi_broadcastC | Get a single WiFi broadcast via the integration API. |
| 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. |
| list_integration_clientsC | List connected clients via the integration API. |
| list_integration_device_tagsC | List device tags via the integration API. |
| list_integration_devicesC | List adopted devices via the integration API. |
| list_integration_dns_policiesB | List DNS policies via the integration API. |
| list_integration_networksC | List networks via the integration API. |
| 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. |
| list_integration_vpn_serversC | List VPN servers via the integration API. |
| list_integration_wansC | List WAN connections via the integration API. |
| list_integration_wifi_broadcastsC | List WiFi broadcasts (SSIDs) via the integration API. |
| assign_carrier_subscriber_planC | Assign a service plan to a UniFi Carrier Fabric subscriber. |
| attach_carrier_subscriber_hostC | Attach a gateway host to a UniFi Carrier Fabric subscriber. |
| create_carrier_subscriberC | Create a UniFi Carrier Fabric subscriber. |
| detach_carrier_subscriber_hostC | Detach the gateway host from a UniFi Carrier Fabric subscriber. |
| get_carrier_service_planB | Get a UniFi Carrier Fabric service plan by ID. |
| get_carrier_subscriberC | Get a UniFi Carrier Fabric subscriber by ID. |
| list_carrier_service_plansB | List UniFi Carrier Fabric service plans. |
| list_carrier_subscribersB | List UniFi Carrier Fabric subscribers. |
| resume_carrier_subscriberB | Resume a suspended UniFi Carrier Fabric subscriber. |
| suspend_carrier_subscriberC | Suspend a UniFi Carrier Fabric subscriber. |
| 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. |
| download_innerspace_assetC | Download an asset (e.g. floor plan image) from InnerSpace. |
| get_innerspace_projectC | Get the InnerSpace project data for the integration on a console. |
| list_innerspace_access_pointsB | List access points known to InnerSpace on a console. |
| list_innerspace_floor_plansB | List InnerSpace floor plans on a console. |
| list_innerspace_inventoryB | List unplaced devices in InnerSpace inventory on a console. |
| list_innerspace_switchesC | List switches placed on InnerSpace floor plans on a console. |
| get_mobility_deviceC | Get detail for a UniFi Mobility device. |
| list_mobility_device_clientsC | List clients attached to a UniFi Mobility device. |
| list_mobility_devicesC | List devices in a UniFi Mobility workspace. |
| list_mobility_workspace_adminsC | List admins of a UniFi Mobility workspace. |
| list_mobility_workspacesB | List UniFi Mobility workspaces. |
| update_mobility_deviceC | Rename a UniFi Mobility device. |
| update_mobility_device_networkC | Update LAN / DHCP settings on a UniFi Mobility device. |
| update_mobility_device_wirelessC | Update WiFi settings on a UniFi Mobility device. |
| list_controllersA | List the UniFi controllers this server can reach. Every controller-bound tool accepts a Returns: Controllers (name, API type, host, default site, labels), the default controller, and this session's selection |
| select_controllerA | Choose the controller this session's later tool calls target. A tool call's own |
| get_active_controllerA | Show which controller a tool call without Returns:
The controller name and where it came from: |
| health_checkA | Health check endpoint to verify server is running. Returns: Status information |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_sites_resource | Get all UniFi sites. Returns: JSON string of sites list |
| get_site_manager_sites_resource | Get all sites from Site Manager API. Returns: JSON string of sites list |
| get_site_manager_health_resource | Get cross-site health metrics. Returns: JSON string of health metrics |
| get_site_manager_internet_health_resource | Get internet connectivity status. Returns: JSON string of internet health |
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.