网络管理服务器

UniFi MCP Server 是一个基于Model Context Protocol的网络管理服务器,用于通过Claude Desktop或其他MCP客户端管理UniFi网络,支持OAuth 2.1和API密钥认证。

  • by nathan-bw
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 nathan-bw/unifi-mcp-server

使用说明

UniFi MCP服务器

A. 模型上下文协议 用于通过Claude Desktop或其他MCP客户端管理UniFi网络的服务器。

特性

  • 18个MCP工具 -全面的网络管理能力
  • OAuth 2.1+PKCE -使用Cloudflare Access进行安全身份验证
  • API密钥验证 -使用官方UniFi API和X-API-KEY
  • 符合MCP 2025-11-25标准 -完全符合规范
  • 远程就绪 -专为通过Cloudflare隧道访问而设计

快速开始

1.生成UniFi API密钥

在您的UniFi控制器/UDM中:

  • 首选 设置→ 控制平面→ 集成
  • 点击 生成API密钥
  • 复制密钥

2.配置环境

cp .env.example .env

编辑 .env:

# Server
BASE_URL=https://your-domain.com

# Cloudflare Access for SaaS (OAuth identity provider)
CF_ACCESS_TEAM=your-team-name
CF_CLIENT_ID=your-client-id
CF_CLIENT_SECRET=your-client-secret

# UniFi Controller
UNIFI_HOST=192.168.1.1
UNIFI_API_KEY=your-api-key-from-step-1

3.从Docker开始

docker compose up -d

4.配置Cloudflare

  1. 创建 Cloudflare 隧道 指向您的服务器
  2. 创建一个 SaaS访问 Zero Trust中的应用程序:
    • 协议:OIDC
    • 重定向URL: https://your-domain.com/callback
  3. 使用您的隧道URL与Claude Desktop连接

可用工具

客户管理

工具 说明
list_clients 列出所有连接的设备
get_client 通过MAC获取特定客户端的详细信息
search_devices 按名称、IP或MAC搜索
block_client 阻止网络中的设备
unblock_client 解锁设备
reconnect_client 强制客户端重新连接
list_blocked_clients 列出被阻止的设备

设备管理

工具 说明
list_devices 列出所有UniFi设备(AP、交换机、网关)
list_access_points 列出具有状态的接入点
restart_device 重新启动AP或交换机

网络配置

工具 说明
list_networks 列出VLAN和子网
list_wlans 列出无线SSID
list_port_forwards 列出端口转发规则

监控

工具 说明
get_network_health 网络健康统计
list_events 最近的网络事件
list_alarms 当前和最近的警报

建筑

Claude Desktop
      ↓
Cloudflare Tunnel (secure tunnel)
      ↓
UniFi MCP Server (OAuth 2.1 + MCP)
      ↓
UniFi Controller/UDM (X-API-KEY)

身份验证流程

此服务器使用Cloudflare Access作为身份提供者实现OAuth 2.1:

  1. MCP客户端通过以下方式发现OAuth端点 /.well-known/oauth-authorization-server
  2. 客户端启动OAuth流 /authorize 使用PKCE
  3. 用户通过Cloudflare Access进行身份验证(支持Entra ID、Google等)
  4. 经批准后,客户在以下地址交换代币代码 /token
  5. 客户端访问 /mcp 带有Bearer代币

OAuth端点

端点 描述
/.well-known/oauth-authorization-server 授权服务器元数据
/.well-known/oauth-protected-resource/mcp 受保护的资源元数据(RFC 9728)
/authorize 授权端点(自动注册客户端)
/token 令牌端点
/register 动态客户端注册
/callback Cloudflare OAuth回调

配置

变量 必填 描述
PORT 无 服务器端口(默认值:3000)
BASE_URL 是 OAuth重定向的公共URL
CF_ACCESS_TEAM 是 Cloudflare Access团队名称
CF_CLIENT_ID 是 来自SaaS应用程序的Access
CF_CLIENT_SECRET 是 来自SaaS应用程序的Access
UNIFI_HOST 是 UniFi控制器IP
UNIFI_PORT 否 控制器端口(默认值:443)
UNIFI_API_KEY 是 来自UniFi的API密钥
UNIFI_SITE 否 站点名称(默认:“默认”)

安全

  • OAuth 2.1+PKCE -安全令牌交换
  • Cloudflare 隧道 -无直接IP暴露
  • Cloudflare访问 -边缘身份验证
  • API密钥认证 -未存储密码,范围访问

推荐的WAF规则

考虑阻塞非必要路径:

  • 允许: /.well-known/*, /register, /authorize, /callback, /token, /mcp
  • 阻止或保护: /, /health

技术栈

发展

# Install dependencies
npm install

# Run with hot-reload
npm run dev

# Check syntax
node --check server.js

许可证

麻省理工学院