Skip to main content
Glama
enuno

UniFi MCP Server

by enuno

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REDIS_DBNoRedis database number
REDIS_HOSTNoRedis host for caching
REDIS_PORTNoRedis port
AGNOST_ORG_IDNoAgnost organization ID
UNIFI_API_KEYNoYour UniFi API key from unifi.ui.com
UNIFI_PROFILENoTool scope profile: network, devices, security, system, or minimal
AGNOST_ENABLEDNoEnable agnost.ai performance tracking (true/false)
REDIS_PASSWORDNoRedis password if required
UNIFI_API_TYPENoAPI mode: local, cloud-v1, or cloud-ea
WEBHOOK_SECRETNoSecret for webhook HMAC verification
AGNOST_ENDPOINTNoAgnost API endpoint
MCP_SERVER_HOSTNoBind address0.0.0.0
MCP_SERVER_PORTNoServer port3000
UNIFI_LOCAL_HOSTNoLocal gateway IP address (required for local mode)
UNIFI_LOCAL_PORTNoLocal gateway port443
UNIFI_DEFAULT_SITENoDefault site IDdefault
UNIFI_CLOUD_API_URLNoCloud API URLhttps://api.ui.com
AGNOST_DISABLE_INPUTNoDisable input tracking
MCP_SERVER_TRANSPORTNoTransport mode: stdio, sse, http, streamable_httpstdio
AGNOST_DISABLE_OUTPUTNoDisable output tracking
UNIFI_LOCAL_VERIFY_SSLNoSSL verification for local gatewayfalse
UNIFI_SITE_MANAGER_ENABLEDNoEnable Site Manager multi-site tools for cloud-eafalse

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

CapabilityDetails
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

NameDescription
get_site_detailsC

Get detailed site information.

Args: site_id: Site identifier settings: Application settings

Returns: Site details dictionary

Raises: ResourceNotFoundError: If site not found

list_sitesC

List all accessible sites.

Args: settings: Application settings limit: Maximum number of sites to return offset: Number of sites to skip

Returns: List of site dictionaries

compare_site_performanceC

Compare performance metrics across all sites.

Analyzes uptime, latency, bandwidth, and health status to identify best and worst performing sites.

Args: settings: Application settings

Returns: Performance comparison with rankings and metrics

get_cross_site_statisticsC

Get aggregate statistics across multiple sites.

Args: settings: Application settings

Returns: Cross-site statistics

get_hostC

Get host details by ID.

Args: settings: Application settings host_id: Host identifier

Returns: Host details

get_internet_healthC

Get internet health metrics across sites.

Args: settings: Application settings site_id: Optional site identifier. If None, returns aggregate metrics.

Returns: Internet health metrics

get_isp_metricsC

Get ISP metrics for a specific site.

Args: settings: Application settings site_id: Site identifier

Returns: ISP metrics data including bandwidth, latency, jitter, and packet loss

get_sdwan_configC

Get SD-WAN configuration by ID.

Args: settings: Application settings config_id: Configuration identifier

Returns: SD-WAN configuration details

get_sdwan_config_statusC

Get SD-WAN configuration deployment status.

Args: settings: Application settings config_id: Configuration identifier

Returns: SD-WAN configuration deployment status

get_site_health_summaryC

Get health summary for all sites or a specific site.

Args: settings: Application settings site_id: Optional site identifier. If None, returns summary for all sites.

Returns: Health summary

get_site_inventoryC

Get comprehensive inventory for a site or all sites.

Provides detailed breakdown of resources including devices, clients, networks, SSIDs, VPN tunnels, and firewall rules.

Args: settings: Application settings site_id: Optional site identifier. If None, returns inventory for all sites.

Returns: Site inventory or list of site inventories

get_version_controlC

Get API version control information.

Args: settings: Application settings

Returns: Version control information including current, latest, and deprecated versions

list_all_sites_aggregatedC

List all sites with aggregated stats from Site Manager API.

Args: settings: Application settings

Returns: List of sites with aggregated statistics

list_hostsC

List all managed hosts/consoles.

Args: settings: Application settings limit: Optional maximum number of hosts to return offset: Optional number of hosts to skip (for pagination)

Returns: List of managed hosts

list_sdwan_configsC

List all SD-WAN configurations.

Args: settings: Application settings

Returns: List of SD-WAN configurations

list_vantage_pointsC

List all Vantage Points.

Args: settings: Application settings

Returns: List of Vantage Points

query_isp_metricsC

Query ISP metrics with optional filters.

Args: settings: Application settings site_id: Optional site identifier (None for all sites) start_time: Optional start time in ISO format (e.g., "2026-02-01T00:00:00Z") end_time: Optional end time in ISO format

Returns: List of ISP metrics matching the query

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.

Args: settings: Application settings query: Search query (device name, MAC address, client name, network name) search_type: Type of search - "device", "client", "network", or "all"

Returns: Search results with site context

connector_network_deleteB

Proxy a DELETE request to the Network Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

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.

Args: console_id: UniFi console/host identifier (from list_hosts) path: Network API sub-path, e.g. api/s/default/stat/device settings: Application settings (UNIFI_SITE_MANAGER_ENABLED required) params: Optional query parameters

Returns: Raw response from the proxied Network API endpoint

Raises: ValidationError: If console_id or path is empty ValueError: If Site Manager API is not enabled

connector_network_patchC

Proxy a PATCH request to the Network Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

connector_network_postA

Proxy a POST request to the Network Application via Cloud Connector.

Args: console_id: UniFi console/host identifier (from list_hosts) path: Network API sub-path, e.g. api/s/default/rest/wlanconf settings: Application settings body: Optional request body to forward confirm: Must be True to execute (mutating operation) dry_run: If True, preview the request without sending it

Returns: Raw response or dry-run preview

Raises: ValidationError: If console_id/path is empty or confirm not provided ValueError: If Site Manager API is not enabled

connector_network_putC

Proxy a PUT request to the Network Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

connector_protect_deleteC

Proxy a DELETE request to the Protect Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

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.

Args: console_id: UniFi console/host identifier (from list_hosts) path: Protect API sub-path, e.g. v1/cameras settings: Application settings (UNIFI_SITE_MANAGER_ENABLED required) params: Optional query parameters

Returns: Raw response from the proxied Protect API endpoint

Raises: ValidationError: If console_id or path is empty ValueError: If Site Manager API is not enabled

connector_protect_patchB

Proxy a PATCH request to the Protect Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

connector_protect_postB

Proxy a POST request to the Protect Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Protect API sub-path, e.g. v1/cameras/{id}/snapshot settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

connector_protect_putA

Proxy a PUT request to the Protect Application via Cloud Connector.

Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending

Returns: Raw response or dry-run preview

get_integration_clientC

Get a single connected client via the integration API.

Args: site_id: Site identifier client_id: Client UUID settings: Application settings

Returns: Client details

get_integration_deviceC

Get a single adopted device via the integration API.

Args: site_id: Site identifier device_id: Device UUID settings: Application settings

Returns: Device details

get_integration_dns_policyC

Get a single DNS policy via the integration API.

Args: site_id: Site identifier policy_id: DNS policy UUID settings: Application settings

Returns: DNS policy details

get_integration_wifi_broadcastB

Get a single WiFi broadcast via the integration API.

Args: site_id: Site identifier broadcast_id: WiFi broadcast UUID settings: Application settings

Returns: WiFi broadcast details

list_dpi_application_categoriesB

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.

Args: settings: Application settings limit: Maximum number of categories to return (1-1000) offset: Number of categories to skip

Returns: Paginated list of DPI categories

list_integration_clientsC

List connected clients via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of clients to return (1-1000) offset: Number of clients to skip

Returns: Paginated list of integration API clients

list_integration_device_tagsC

List device tags via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of tags to return (1-1000) offset: Number of tags to skip

Returns: Paginated list of device tags

list_integration_devicesC

List adopted devices via the integration API.

Args: site_id: Site identifier (UUID or internal reference) settings: Application settings limit: Maximum number of devices to return (1-1000) offset: Number of devices to skip

Returns: Paginated list of integration API devices

list_integration_dns_policiesB

List DNS policies via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of policies to return (1-1000) offset: Number of policies to skip

Returns: Paginated list of DNS policies

list_integration_networksC

List networks via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of networks to return (1-1000) offset: Number of networks to skip

Returns: Paginated list of integration API networks

list_integration_sitesB

List sites via the integration API.

Returns UUID-based site identifiers suitable for use with other integration API tools in this module.

Args: settings: Application settings limit: Maximum number of sites to return (1-1000) offset: Number of sites to skip

Returns: Paginated list of integration API sites

list_integration_vpn_serversB

List VPN servers via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of servers to return (1-1000) offset: Number of servers to skip

Returns: Paginated list of VPN servers

list_integration_wansC

List WAN connections via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of WANs to return (1-1000) offset: Number of WANs to skip

Returns: Paginated list of WAN connections

list_integration_wifi_broadcastsB

List WiFi broadcasts (SSIDs) via the integration API.

Args: site_id: Site identifier settings: Application settings limit: Maximum number of broadcasts to return (1-1000) offset: Number of broadcasts to skip

Returns: Paginated list of WiFi broadcasts

assign_carrier_subscriber_planB

Assign a service plan to a UniFi Carrier Fabric subscriber.

Args: subscriber_id: Subscriber identifier settings: Application settings plan_id: Service plan identifier (required) confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

attach_carrier_subscriber_hostB

Attach a gateway host to a UniFi Carrier Fabric subscriber.

Args: subscriber_id: Subscriber identifier settings: Application settings host_id: Gateway host identifier (required) confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

create_carrier_subscriberA

Create a UniFi Carrier Fabric subscriber.

Args: settings: Application settings subscriber_number: Operator-supplied external reference (1-32 characters, required) name: Display name email: Contact email notes: Operator notes service_address: Free-text service address plan_id: Service plan to assign host_id: Gateway host to attach metadata: Free-form metadata dictionary confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The created subscriber as a dictionary

detach_carrier_subscriber_hostB

Detach the gateway host from a UniFi Carrier Fabric subscriber.

Args: subscriber_id: Subscriber identifier settings: Application settings confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

get_carrier_service_planC

Get a UniFi Carrier Fabric service plan by ID.

Args: plan_id: Service plan identifier settings: Application settings

Returns: The service plan as a dictionary

get_carrier_subscriberC

Get a UniFi Carrier Fabric subscriber by ID.

Args: subscriber_id: Subscriber identifier settings: Application settings

Returns: The subscriber as a dictionary

list_carrier_service_plansC

List UniFi Carrier Fabric service plans.

Args: settings: Application settings

Returns: Dictionary with count and data (list of service plans)

list_carrier_subscribersB

List UniFi Carrier Fabric subscribers.

Args: settings: Application settings limit: Maximum number of items to return offset: Number of items to skip plan_id: Filter by assigned service plan ID suspended: Filter by suspended state

Returns: Dictionary with pagination info and data (list of subscribers)

resume_carrier_subscriberA

Resume a suspended UniFi Carrier Fabric subscriber.

Args: subscriber_id: Subscriber identifier settings: Application settings confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

suspend_carrier_subscriberB

Suspend a UniFi Carrier Fabric subscriber.

Args: subscriber_id: Subscriber identifier settings: Application settings reason: Optional suspension reason confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

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.

Args: subscriber_id: Subscriber identifier settings: Application settings name: Display name email: Contact email notes: Operator notes service_address: Free-text service address plan_id: Service plan to assign host_id: Gateway host to attach metadata: Free-form metadata dictionary confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

Returns: The updated subscriber as a dictionary

download_innerspace_assetB

Download an asset (e.g. floor plan image) from InnerSpace.

Args: console_id: Cloud Connector console UUID (from list_hosts) plan_id: Floor plan identifier filename: Asset filename on the floor plan settings: Application settings

Raises: ValueError: If the cloud API is not enabled or any identifier is empty.

get_innerspace_projectC

Get the InnerSpace project data for the integration on a console.

Args: console_id: Cloud Connector console UUID (from list_hosts) settings: Application settings

Raises: ValueError: If the cloud API is not enabled or console_id is empty.

list_innerspace_access_pointsC

List access points known to InnerSpace on a console.

Args: console_id: Cloud Connector console UUID (from list_hosts) settings: Application settings

Raises: ValueError: If the cloud API is not enabled or console_id is empty.

list_innerspace_floor_plansB

List InnerSpace floor plans on a console.

Args: console_id: Cloud Connector console UUID (from list_hosts) settings: Application settings

Raises: ValueError: If the cloud API is not enabled or console_id is empty.

list_innerspace_inventoryB

List unplaced devices in InnerSpace inventory on a console.

Args: console_id: Cloud Connector console UUID (from list_hosts) settings: Application settings

Raises: ValueError: If the cloud API is not enabled or console_id is empty.

list_innerspace_switchesB

List switches placed on InnerSpace floor plans on a console.

Args: console_id: Cloud Connector console UUID (from list_hosts) settings: Application settings site_id: Optional site UUID to filter switches by site

Raises: ValueError: If the cloud API is not enabled or console_id is empty.

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_deviceB

Rename a UniFi Mobility device.

Args: workspace_id: Workspace UUID device_id: Device UUID settings: Application settings name: New device name (1-32 characters, required) confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

update_mobility_device_networkB

Update LAN / DHCP settings on a UniFi Mobility device.

Args: workspace_id: Workspace UUID device_id: Device UUID settings: Application settings host_address: LAN address of the device (CIDR) dhcp_mode: dhcp to enable DHCP serving, none to disable dhcp_range_start: First address of the DHCP pool dhcp_range_stop: Last address of the DHCP pool dhcp_lease_time: Lease time in seconds (0 = infinite) confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

update_mobility_device_wirelessB

Update WiFi settings on a UniFi Mobility device.

Args: workspace_id: Workspace UUID device_id: Device UUID settings: Application settings ssid: WiFi network name (required) password: WPA2-PSK password (required) confirm: Must be true to apply the change (required unless dry_run) dry_run: Preview the change without applying it

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

select_controllerA

Choose the controller this session's later tool calls target.

A tool call's own controller argument still takes precedence.

Args: name: A controller name from list_controllers

Returns: The selected controller

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

health_checkA

Health check endpoint to verify server is running.

Returns: Status information

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_sites_resourceGet all UniFi sites. Returns: JSON string of sites list
get_site_manager_sites_resourceGet all sites from Site Manager API. Returns: JSON string of sites list
get_site_manager_health_resourceGet cross-site health metrics. Returns: JSON string of health metrics
get_site_manager_internet_health_resourceGet internet connectivity status. Returns: JSON string of internet health

TDQS

C2.9/5.0

Scored across 71 tools

Disambiguation4/5

Most tools target distinct resources and actions, and descriptions clearly indicate the underlying API (e.g., integration vs. Site Manager vs. connector proxy). There is some overlap among site listing, health, and ISP metrics tools, but names and descriptions generally allow correct selection.

Naming Consistency4/5

Almost all tools use snake_case with clear verb_noun or domain_method patterns. The connector proxy tools use a consistent connector_<app>_<method> pattern, which is a minor deviation from the verb_noun convention but remains readable and predictable.

Tool Count1/5

With 71 tools, the server far exceeds the typical 3-15 range and crosses the 50+ threshold for extreme mismatch, creating significant cognitive load for an agent. While the server covers a broad multi-API platform, the sheer number of tools makes selection and maintenance difficult.

Completeness4/5

The server covers a wide range of read and write operations across multiple UniFi APIs, and generic connector proxy tools provide an escape hatch for arbitrary REST calls. Some specific resources lack full CRUD (e.g., integration networks, VPN servers, and many delete operations), but these gaps are largely addressable through proxy tools.

Maintenance

ActivityActive
ResponsivenessSlow