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 |
Capabilities
Features and capabilities supported by this server
| 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. 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_metricsB | 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_summaryA | 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_inventoryA | 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_controlB | Get API version control information. Args: settings: Application settings Returns: Version control information including current, latest, and deprecated versions |
| list_all_sites_aggregatedA | 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_sitesA | 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_getB | Proxy a GET request to the Network Application via Cloud Connector. Forwards the request to
Args:
console_id: UniFi console/host identifier (from list_hosts)
path: Network API sub-path, e.g. 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. 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_putB | 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
Args:
console_id: UniFi console/host identifier (from list_hosts)
path: Protect API sub-path, e.g. 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_postA | 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. 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_policyB | 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_broadcastC | 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_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. 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_tagsB | 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_serversC | 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_broadcastsC | 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 |
| 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 |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/enuno/unifi-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server