Unifi代理
通过AI驱动的UniFi网络管理 克劳德代码两台MCP服务器提供了56个工具,让Claude管理您的整个UniFi基础设施——设备、客户端、网络、WiFi、防火墙规则、VLAN、热点凭证等。SSH服务器为API之外的高级配置提供了直接的外壳访问。
它能做什么?
问克劳德这样的问题:
- “列出所有设备,并显示哪些设备CPU使用率高”
- “在VLAN 50上创建一个带有专属门户的访客网络”
- “设置ACL规则以阻止物联网设备到达管理VLAN”
- “为明天的活动生成20张热点优惠券,24小时限制,10Mbps上限”
- “将所有AP信道宽度更改为160MHz” *(通过SSH+MongoDB)*
- “显示连接到EFB网络的所有客户端”
建筑
unifi-mcp/ 51 tools — UniFi Integration API (Python, httpx, Pydantic)
ssh-mcp/ 5 tools — SSH command execution (Python, asyncssh)
.claude/skills/ Claude Code skill with example payloads and gotchas先决条件
- Python 3.11+
- 紫外线 包管理器
- 克劳德代码 命令行界面
- UniFi网络控制器 集成API 启用
- API密钥来自 UniFi网络>设置>API
快速开始
1.克隆和安装依赖关系:
git clone https://github.com/brianbell-x/Unifi-Agent.git
cd Unifi-Agent
cd unifi-mcp && uv sync && cd ..
cd ssh-mcp && uv sync && cd ..2.配置凭据:
cp .env.sample .env
cp .mcp.json.sample .mcp.json
cp ssh-mcp/hosts.json.sample ssh-mcp/hosts.json编辑 .env 使用您的控制器URL、API密钥和站点ID:
UNIFI_HOST=https://192.168.1.1
UNIFI_API_KEY=your-api-key-here
UNIFI_SITE_ID=your-site-id编辑 .mcp.json 使用相同的值,并在需要时调整路径。
编辑 ssh-mcp/hosts.json 使用您的SSH凭据。
3.查找您的网站ID:
# Start Claude Code from the project directory
claude
# Then ask: "List all sites"4.开始使用它:
claudeClaude将自动连接到两个MCP服务器,并可以访问所有56个工具。
工具
UniFi MCP(51个工具)
| 类别 | 工具 | 操作 |
|---|---|---|
| 信息和网站 | get_app_info, list_sites | 控制器版本,受管站点 |
| 设备 | list_devices, get_device, get_device_stats, restart_device, power_cycle_port, list_pending_devices | 监控、重启、PoE循环 |
| 客户 | list_clients, get_client, authorize_guest, unauthorize_guest | 互联客户端、访客门户 |
| 网络 | list_networks, get_network, create_network, update_network, delete_network, get_network_references | VLAN/子网CRUD |
| 无线网络 | list_wifi, get_wifi, create_wifi, update_wifi, delete_wifi | SSID积垢 |
| 代金券 | list_vouchers, get_voucher, create_vouchers, delete_voucher, bulk_delete_vouchers | 热点通行证 |
| 防火墙 | list_firewall_zones, get_firewall_zone, create_firewall_zone, update_firewall_zone, delete_firewall_zone | 区域管理 |
| ACL规则 | list_acl_rules, get_acl_rule, create_acl_rule, update_acl_rule, delete_acl_rule | 流量过滤 |
| 交通列表 | list_traffic_matching_lists, get_traffic_matching_list, create_traffic_matching_list, update_traffic_matching_list, delete_traffic_matching_list | 端口/IP组 |
| 支持 | list_wans, list_vpn_tunnels, list_vpn_servers, list_radius_profiles, list_device_tags, list_dpi_categories, list_dpi_applications, list_countries | 只读 |
SSH MCP(5个工具)
| 工具 | 说明 |
|---|---|
ssh_list_hosts | 列出已配置的SSH主机(未显示密码) |
ssh_execute | 远程主机上的一键命令 |
ssh_session_start | 打开持久会话(超时30分钟) |
ssh_session_command | 在会话中运行命令(保留cwd) |
ssh_session_close | 关闭会话 |
高级:直接设备访问
集成API不会公开所有内容。对于无线电配置、信道宽度、最小RSSI阈值和其他低级设置,SSH MCP服务器直接连接到UDM Pro的MongoDB:
# Example: Change 5GHz channel width to 160MHz on all APs
mongo --port 27117 ace --eval '
db.device.updateMany(
{"model": "U7P"},
{$set: {"radio_table.$[r].ht": "160"}},
{arrayFilters: [{"r.radio": "na"}]}
)
'
# Then force-provision to apply
db.task.insertMany(
db.device.find({"model":"U7P"}, {mac:1, _id:0}).toArray().map(d => ({
mac: d.mac, type: "cmd", cmd: "force-provision", _id: new ObjectId()
}))
)钥匙套
- 分页:列表端点最多返回25个项目(凭证:100)。无偏移/限制参数——仅第一页。
- WiFi/网络创建:API需要的字段比架构建议的要多得多。技能档案(
.claude/skills/unifi/SKILL.md)具有完整的工作有效载荷。 - ACL规则排序:较低
index=更高的优先级(第一场比赛获胜)。 - 批量删除筛选器语法:带空格的值需要单引号:
name.eq('My Thing'). - 安全套接层:服务器禁用自签名控制器证书的SSL验证。
