UniFi MCP 服务端(Go 实现)
使用说明
- 项目简介
- 该仓库实现了一个基于 MCP 的服务器端,专门将 UniFi Network 的一系列运维操作封装为可被 AI 助手调用的工具集,便于在对话式场景中与 UniFi 控制器进行交互和自动化操作。
- 主要功能点
- MCP 服务器框架:提供标准的 MCP 服务端结构,支持通过 JSON-RPC 与客户端进行请求/响应通信。
- 资源与工具暴露:将 UniFi 的站点、设备、网络、防火墙策略、ACL 规则、热点等多类资源,以及大量对应的 Tools(工具)对外暴露,LLM 客户端可按需调用。
- 工具分组与Destructive 保护:分组注册工具,部分 destructive 操作受 UNIFI_ALLOW_DESTRUCTIVE 开关控制,并需要 per-call 的 confirmed 字段来二次确认,帮助防止误操作。
- 多传输协议:默认 stdio 传输,另支持 HTTP 传输,便于本地开发或远程部署。
- 安全与会话管理:通过上下文、信号处理实现优雅退出,具备会话管理能力和服务端能力声明。
- 安装步骤
- 获取源码并编译(Go 1.26+,如需美化可选 lint 不同工具);
- 配置环境变量:UNIFI_BASE_URL、UNIFI_API_KEY、UNIFI_SITE_ID、UNIFI_INSECURE(可选)、UNIFI_ALLOW_DESTRUCTIVE(可选,开启对危险操作的暴露)。
- 运行模式选择:
- stdio:默认直接运行,适合本地 MCP 客户端使用。
- HTTP:可传播为远程服务,需注意没有内置鉴权,建议置于可信网络或反向代理后使用。
- 服务器配置(MCP 客户端使用)
该部分为 MCP 客户端的连接配置示例,服务器端不需要修改即可运行。以下配置用于描述如何让 MCP 客户端连接到此服务器:
{
"servers": {
"unifi-mcp": {
"type": "local",
"command": ["/path/to/unifi-mcp/bin/unifi-mcp"],
"enabled": true,
"environment": {
"UNIFI_BASE_URL": "https://your-uap-or-controller/proxy/network",
"UNIFI_API_KEY": "your-api-key",
"UNIFI_SITE_ID": "your-site-uuid"
}
}
}
}
注释:
- server 名称应与工具或环境中的识别一致,command 指定服务器启动命令的绝对路径,args 在此示例为本地启动时默认参数集;env 可选项用于提供运行时所需的环境变量。
- MCP 客户端本身不需要包含在服务器中,只需通过上述配置知道服务器命令与运行环境即可与 MCP 交互。
- 基本使用方法
- 启动服务器后,MCP 客户端即可通过 MCP 协议向服务器发送请求,获取 UniFi 资源、执行工具调用、获取/渲染 Prompts 等。
- 若需要执行可能影响网络的操作,请确保已开启 UNIFI_ALLOW_DESTRUCTIVE,并在请求中设置 confirmed 为 true。
- 如需在本地 IDE/编辑器中调试,可使用 stdio 传输,便于直接在开发环境中与模型进行交互。
- 其他注意事项
- 该实现包含完整的工具注册、输入校验、错误封装等逻辑,符合 MCP 的标准行为。
- 生产环境中建议通过网络边界控流、鉴权与审计日志来提升安全性。