A powerful Model Context Protocol (MCP) server for seamless UniFi controller integration
π Direct Local Access β’ π Real-time Monitoring β’ π§ Device Management β’ π― Clean Data Output
This MCP server provides direct, real-time integration with your local UniFi controller through a comprehensive suite of tools and resources. Built with modern FastMCP framework as a modular Python package, it eliminates the need for cloud dependencies while delivering clean, formatted data output with advanced logging and process management.
| Feature | Description |
|---|---|
| π Local Integration | Direct controller access - no cloud dependencies |
| π‘ Real-time Data | Live device status, statistics, and monitoring |
| π¨ Clean Output | Human-readable formatting - no JSON walls |
| π§ Device Control | Restart, locate, and manage network devices |
| π Smart Analytics | Bandwidth, DPI stats, and network insights |
| π Universal Support | Works with UDM Pro, Cloud Gateway Max, legacy controllers |
| β‘ FastMCP Powered | Modern MCP framework with streamable HTTP transport |
| π Advanced Logging | Prettified logs with colors and background execution |
| π§ Process Management | PID files, log streaming, and independent execution |
Before you begin, ensure you have:
- π Local UniFi Controller (Cloud Gateway Max, UDM Pro, or traditional controller)
- π Direct Network Access to the controller
- π€ Local Admin Account (not UniFi Cloud/SSO)
- π Python 3.11+
- π¦
uvPackage Manager
| Controller Type | Port | Examples |
|---|---|---|
| π UniFi OS Devices | 443 |
UDM Pro, UDM SE, Cloud Gateway Max, Cloud Key Gen2+ |
| π Legacy Controllers | 8443 |
Software controllers, Cloud Key Gen1 |
β οΈ Authentication Note: Requires local admin account, not UniFi Cloud credentials
π₯ Step-by-Step Setup
cd unifi-mcp
uv synccp .env.example .env
# Edit .env with your controller details./run.sh # Start server in background + stream logs
./run.sh logs # Stream logs from running server
# Or directly: uv run python -m unifi_mcp.mainπ― Server Endpoint: http://localhost:8001/mcp
π Configuration Template
# π Controller Connection (scheme and port required)
UNIFI_CONTROLLER_URL=https://10.1.0.1:443 # UniFi OS (UDM Pro, Cloud Gateway Max)
# UNIFI_CONTROLLER_URL=https://10.1.0.1:8443 # Legacy controllers
UNIFI_USERNAME=admin # Local controller admin username
UNIFI_PASSWORD=your_password # Local controller admin password
# π§ Controller Type Configuration
UNIFI_IS_UDM_PRO=true # true for UniFi OS devices, false for legacy
UNIFI_VERIFY_SSL=false # false for self-signed certs, true for valid SSL
# π Server Settings
UNIFI_LOCAL_MCP_HOST=0.0.0.0 # Server bind address
UNIFI_LOCAL_MCP_PORT=8001 # Server port
UNIFI_LOCAL_MCP_LOG_LEVEL=INFO # Logging level
# π Advanced Logging & Process Management
MCP_LOG_FILE=logs/unifi-mcp.log # Override default log file location
MCP_PID_FILE=logs/unifi-mcp.pid # Override default PID file location| Type | URL Format | Use Case |
|---|---|---|
| π UniFi OS | https://192.168.1.1:443 |
UDM Pro, Cloud Gateway Max, Cloud Key Gen2+ |
| π Legacy | https://unifi.example.com:8443 |
Software controllers, Cloud Key Gen1 |
| π§ Custom | https://controller:PORT |
Non-standard port configurations |
| Certificate Type | Setting | Description |
|---|---|---|
| π Self-signed | UNIFI_VERIFY_SSL=false |
Most common setup |
| β Valid SSL | UNIFI_VERIFY_SSL=true |
Trusted certificate authority |
| π Custom CA | Provide CA bundle path | Enterprise environments |
π± Device Management
| Tool | Description | Output |
|---|---|---|
get_devices |
List all devices | π¨ Clean, formatted summaries |
get_device_by_mac |
Specific device details | π Formatted device info |
restart_device |
Restart UniFi device | β‘ Device reboot |
locate_device |
Trigger locate LED | π‘ Visual device identification |
π₯ Client Management
| Tool | Description | Output |
|---|---|---|
get_clients |
Connected clients | π Connection details |
reconnect_client |
Force reconnection | π Client refresh |
block_client |
Block client network access | π« Security enforcement |
unblock_client |
Restore client network access | β Access restoration |
forget_client |
Remove client historical data | ποΈ GDPR compliance |
set_client_name |
Set/update client name | π Device identification |
set_client_note |
Add notes to client record | π Documentation |
π Network Configuration
| Tool | Description | Output |
|---|---|---|
get_sites |
Controller sites | π’ Site information |
get_wlan_configs |
Wireless networks | π‘ WiFi configurations |
get_network_configs |
Network/VLAN setup | π§ Network topology |
get_port_configs |
Switch port profiles | π Port configurations |
get_port_forwarding_rules |
Port forwarding | β‘οΈ Traffic routing rules |
get_firewall_rules |
Firewall security rules | π Security audit |
get_firewall_groups |
Firewall address groups | π₯ Security management |
get_static_routes |
Advanced routing configuration | πΊοΈ Network routing |
π Monitoring & Statistics
| Tool | Description | Output |
|---|---|---|
get_controller_status |
System information | π» Controller health |
get_events |
Recent controller events | π Event timeline |
get_alarms |
Active system alarms | π¨ Alert notifications |
get_dpi_stats |
Deep Packet Inspection | π Traffic analysis |
get_rogue_aps |
Rogue access points | |
start_spectrum_scan |
RF spectrum analysis | π‘ Wireless diagnostics |
get_spectrum_scan_state |
Scan results | π RF environment data |
authorize_guest |
Guest network access | π« Visitor authorization |
get_speedtest_results |
Historical speed test data | π Performance analysis |
get_ips_events |
Security threat detection | π‘οΈ Threat monitoring |
Access structured data using the unifi:// URI scheme with clean, filtered JSON output:
π’ Site & Overview Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://sites |
All controller sites | π¨ Site summaries with health status |
unifi://overview |
Network overview (default site) | π Infrastructure & client summary |
unifi://overview/{site_name} |
Network overview for specific site | π Site-specific summary |
π± Device Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://devices |
All devices (default site) | π¨ Clean device summaries |
unifi://devices/{site_name} |
All devices for specific site | π¨ Site-specific devices |
unifi://device/{site_name}/{mac} |
Individual device details | π Detailed device info |
unifi://stats/device/{site_name}/{mac} |
Device performance stats | π Traffic & system metrics |
unifi://device-tags |
Device tags (default site) | π·οΈ Tag assignments |
unifi://device-tags/{site_name} |
Device tags for specific site | π·οΈ Site-specific tags |
π₯ Client Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://clients |
Connected clients (default site) | π Essential connection details |
unifi://clients/{site_name} |
Connected clients for specific site | π Site-specific clients |
π Network Configuration Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://config/networks |
Network/VLAN configs (default site) | π§ Network topology |
unifi://config/networks/{site_name} |
Networks for specific site | π§ Site-specific networks |
unifi://config/wlans |
Wireless network configs (default site) | π‘ WiFi configurations |
unifi://config/wlans/{site_name} |
WLANs for specific site | π‘ Site-specific WiFi |
unifi://config/portforward |
Port forwarding rules (default site) | β‘οΈ Traffic routing rules |
unifi://config/portforward/{site_name} |
Port forwarding for specific site | β‘οΈ Site-specific rules |
unifi://channels |
Wireless channel info (default site) | πΆ RF channel utilization |
unifi://channels/{site_name} |
Channels for specific site | πΆ Site-specific channels |
π Monitoring & Statistics Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://dashboard |
Dashboard metrics (default site) | π Real-time traffic data |
unifi://dashboard/{site_name} |
Dashboard for specific site | π Site-specific metrics |
unifi://events |
Recent events (default site) | π Event timeline |
unifi://events/{site_name} |
Events for specific site | π Site-specific events |
unifi://alarms |
Active alarms (default site) | π¨ Alert notifications |
unifi://alarms/{site_name} |
Alarms for specific site | π¨ Site-specific alarms |
unifi://health |
Site health status (default site) | β Subsystem health |
unifi://health/{site_name} |
Health for specific site | β Site-specific health |
unifi://stats/dpi |
DPI statistics (default site) | π Top application traffic |
unifi://stats/dpi/{site_name} |
DPI stats for specific site | π Site-specific DPI |
unifi://rogue-aps |
Rogue access points (default site) | |
unifi://rogue-aps/{site_name} |
Rogue APs for specific site |
π§ System Information Resources
| Resource | Description | Output Format |
|---|---|---|
unifi://sysinfo |
Controller system information | π» Hardware & software details |
unifi://admins |
Administrator accounts | π₯ Admin user details |
π¨ Data Formatting Engine
| Feature | Description |
|---|---|
| π§ Smart Summarization | Essential info only - no JSON walls |
| π± Device-Type Aware | Custom formatting per device type |
| π Connection-Type Aware | Tailored wired vs wireless details |
| π Auto Conversion | Bytes, uptimes, timestamps |
| π Recursive Formatting | Clean nested data structures |
sequenceDiagram
participant Client
participant MCP Server
participant UniFi Controller
Client->>MCP Server: Request
MCP Server->>UniFi Controller: Login (username/password)
UniFi Controller->>MCP Server: TOKEN/unifises cookie
MCP Server->>UniFi Controller: Parse CSRF token (UDM Pro)
MCP Server->>UniFi Controller: API Request + Auth Headers
UniFi Controller->>MCP Server: Response Data
MCP Server->>Client: Formatted Response
| Decision | Rationale | Benefit |
|---|---|---|
| π¦ Modular package structure | Organized tools, resources, config | Easy maintenance & extensibility |
| π― Default site assumption | Most operations use "default" | Simplified API calls |
| π¨ Clean data presentation | Smart formatting helpers | No overwhelming JSON |
| π Comprehensive resources | Dashboard + detailed monitoring | Complete network visibility |
| π§ Resource vs Tool pattern | Resources for data, tools for ops | Clear separation of concerns |
| π Advanced logging | Prettified output with process mgmt | Better debugging & monitoring |
π Development Setup
# Install development dependencies
uv sync --extra dev
# Run directly for development
uv run python -m unifi_mcp.main
# Background server management
./run.sh # Start in background + stream logs
./run.sh logs # Stream logs from running server
kill $(cat logs/unifi-mcp.pid) # Stop background serverπ§ API Testing Commands
# List available tools
curl -X POST http://localhost:8001/mcp/call \
-H "Content-Type: application/json" \
-d '{"method": "tools/list"}'
# Test a specific tool
curl -X POST http://localhost:8001/mcp/call \
-H "Content-Type: application/json" \
-d '{"method": "tools/call", "params": {"name": "get_devices"}}'| Endpoint | Purpose | Description |
|---|---|---|
| π Health | http://localhost:8001/health |
Server health check |
| π MCP | http://localhost:8001/mcp |
Main MCP endpoint |
| β‘ Tools | http://localhost:8001/mcp/call |
Tool execution |
π Authentication Issues
| Issue | Solution | Notes |
|---|---|---|
| π« 401 Errors | Check username/password and controller URL | Verify credentials |
| π MFA Required | Disable MFA or implement MFA support | Contact admin |
| π‘οΈ SSL Errors | Set UNIFI_VERIFY_SSL=false |
For self-signed certs |
ποΈ Controller Type Issues
| Controller Type | Setting | Description |
|---|---|---|
| π UDM Pro/Cloud Gateway Max | UNIFI_IS_UDM_PRO=true |
Modern UniFi OS devices |
| π Legacy Controllers | UNIFI_IS_UDM_PRO=false |
Traditional controllers |
β οΈ Common Problems
| Problem | Cause | Solution |
|---|---|---|
| π Empty DPI Stats | DPI disabled | Enable DPI in controller settings |
| π± No Devices Found | Insufficient permissions | Verify admin access |
| β±οΈ Connection Timeouts | Network issues | Check connectivity & availability |
| Component | Description | Link |
|---|---|---|
| π unifi-controller-api | Python UniFi library | GitHub |
| β‘ FastMCP | Modern MCP framework | GitHub |
| π¦ PyPI Package | Controller API package | PyPI |
π― Smart Features
| Feature | Description | Benefit |
|---|---|---|
| π·οΈ Device Model Mapping | Translates codes ("U7PG2" β "UniFi AC Pro AP") | Human-readable names |
| π Authentication Retry | Auto-retry on auth failure | Network resilience |
| πͺ Session Management | Handles TOKEN/unifises cookies | Seamless authentication |
| π‘οΈ CSRF Protection | JWT token extraction & application | Security compliance |
π Prerequisites Checklist
- β Direct Access: Server β UniFi controller connectivity
- β Port Access: HTTPS port (443/8443) accessibility
- β Account Type: Local controller account (not Cloud/SSO)
- β Admin Privileges: Administrative controller access
This project is open source. See repository for license details.
Made with β€οΈ for the UniFi community
β Star this repo β’ π Report Issues β’ π‘ Request Features