unifi-mcp
unifi-mcp
Только для чтения удалённый MCP-сервер, предоставляющий парк устройств UniFi Example Corp / examplecorp в качестве пользовательского коннектора Claude через официальный UniFi Site Manager API (api.ui.com).
Родственный проект odoo-ticket-mcp и MCP-серверов TRMM — та же архитектура:
Claude (claude.ai / Claude Code)
│ OAuth 2.0 bearer token (Microsoft Entra ID)
▼
nginx — TLS, Anthropic egress-IP allowlist (160.79.104.0/21), 403 otherwise
│ http://127.0.0.1:8097
▼
unifi-mcp container (Portainer stack, FastMCP 3.x, Streamable HTTP at /mcp)
│ X-API-KEY (Site Manager API key, read-only usage)
▼
api.ui.com — Site Manager API + connector proxy into each console's Network APIАутентификация клиент → сервер: Microsoft Entra ID, режим ресурсного сервера. Сервер проверяет bearer-токены, привязанные к аудитории; он никогда их не выдаёт. Доступ контролируется членством в группах Entra в регистрации приложения.
Аутентификация сервер → UniFi: один фиксированный ключ API Site Manager (созданный на unifi.ui.com → API Keys с областями приложения Site Manager и Network, все сайты). Идентичность вызывающего намеренно НЕ передаётся в UniFi в v1.
Сетевой путь: публичный DNS → nginx (TLS + список разрешённых IP-адресов Anthropic) → контейнер. Защита в глубину: allowlist дополняет OAuth.
Инструменты (все только для чтения)
Site Manager (по всему парку):
Инструмент | Что возвращает |
| Каждая консоль (UDM Pro / UNVR / Cloud Key): id, имя, модель, IP, состояние, версия |
| Детали одной консоли (необязательно, полная необработанная запись) |
| Все сайты Network на всех консолях, с количеством устройств и клиентов |
| Принятые устройства по всему парку (точки доступа, коммутаторы, шлюзы), необязательный фильтр по консоли |
| Состояние WAN/ISP (задержка, потери, время простоя, пропускная способность) для всех сайтов, гранулярность 5 минут или 1 час |
| То же, но для конкретных пар (хост, сайт) и временных окон |
| Топологии SD-WAN + состояние развёртывания |
Прокси коннектора (детализация по консоли, без VPN):
Инструмент | Что возвращает |
| Список сайтов на консоли (локальные id отличаются от id Site Manager) |
| Устройства сайта из собственного Network API консоли |
| Полные детали устройства + последние живые статистики (CPU, память, аплинк, радиомодули) |
| Подключённые клиенты в реальном времени: имя, MAC, IP, тип подключения, аплинк |
Типичный поток: unifi_list_hosts → выбор консоли → unifi_network_sites → unifi_network_clients / unifi_network_device.
Related MCP server: UniFi MCP Server
Локальная разработка
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
copy .env.example .env # fill in UNIFI_API_KEY; set MCP_AUTH_ENABLED=false
.venv\Scripts\python -m unifi_mcp
# → http://127.0.0.1:8000/mcp (test with MCP Inspector)MCP_AUTH_ENABLED=false открывает конечную точку — только для локального тестирования, никогда в продакшене.
Регистрация приложения Entra ID (однократно)
См. TrmmMCPServer/ENTRA_SSO_PLAYBOOK.md для аннотированной версии. Краткое изложение — выполняйте эти шаги по порядку:
Регистрация приложений → Новая регистрация — имя
UniFi MCP, один арендатор, пока без URI перенаправления. Скопируйте идентификатор клиента и идентификатор арендатора.Открыть API → URI идентификатора приложения — установите точно
https://unifi-mcp.example.com/mcp(предотвращает AADSTS9010010).Открыть API → Добавить область — установите
access_as_user, администраторы и пользователи могут давать согласие, включено.Сертификаты и секреты → Новый секрет клиента —
claude-connector, 24 месяца. Скопируйте значение сразу.Аутентификация → Добавить платформу → Веб — URI перенаправления
https://claude.ai/api/mcp/auth_callbackиhttps://claude.com/api/mcp/auth_callback.Манифест — установите
requestedAccessTokenVersionв2(предотвращает 401 из-за несоответствия эмитента).Корпоративные приложения → UniFi MCP → Свойства — Требуется назначение = Да.
Корпоративные приложения → Пользователи и группы — добавьте группу
Unifi-MCP-Users. Членство в группе = кто может использовать коннектор.
Развёртывание
См. PORTAINER_DEPLOY.md (стек Portainer Git + повторное развёртывание через webhook) и deploy/nginx-unifi-mcp.conf (TLS + список разрешённых IP-адресов Anthropic).
Регистрация коннектора в claude.ai
Настройки → Коннекторы → Добавить пользовательский коннектор:
Поле | Значение |
URL |
|
Идентификатор клиента | идентификатор клиента приложения Entra |
Секрет клиента | секрет клиента Entra |
URL авторизации |
|
URL токена |
|
Области |
|
Приёмочные тесты
# 1. Discovery doc advertises the full resource scope (not api://…)
curl -s https://unifi-mcp.example.com/.well-known/oauth-protected-resource/mcp | jq .scopes_supported
# 2. Unauthenticated /mcp is challenged
curl -i https://unifi-mcp.example.com/mcp # 401 + WWW-Authenticate: Bearer
# 3. Non-Anthropic source IP is blocked at nginx
curl -i https://unifi-mcp.example.com/mcp # from anywhere else: 403
# 4. Health (host-local, bypasses nginx)
curl http://<docker-host>:8097/healthz # {"status":"ok","service":"unifi_mcp"}
# 5. In claude.ai: connect as a Unifi-MCP-Users member → tools appear;
# non-member → AADSTS50105 at sign-in.This server cannot be deployed
Maintenance
Related MCP Connectors
Manage hosts, redirects, SSL, and traffic analytics from Claude and other AI assistants.
Read-only access to your own crypto portfolio across 11+ exchanges and 20+ chains: holdings, full history, FIFO cost basis and P&L, fees and income. Ask Claude or ChatGPT about your portfolio; the connector can never trade, move funds or act as a login.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Manage your IoT device fleet directly from Claude. Create device templates with datastreams and events, provision new devices, read live sensor data, and control outputs. The Blynk connector integrates with the Blynk IoT platform, enabling direct configuration and monitoring of connected devices and infrastructure.
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.3938 npmApache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to manage and monitor UniFi Network Controllers through natural language. Provides 25 read-only tools for discovering devices and clients, viewing security configurations, analyzing network statistics, and exporting configuration data.41MIT
- FlicenseNot gradedqualityBmaintenanceRead-only MCP server that surfaces UniFi network data from a UCG-Fiber console to Claude, enabling monitoring of hosts, sites, devices, clients, ISP metrics, and device stats via read-only API tools.-
- AlicenseNot gradedqualityBmaintenanceEnables Claude to read-only observe a UniFi network through Ubiquiti's cloud API, including connected clients, device health, throughput, and ISP/WAN status, with OAuth-gated access to a single account.MIT