mcpField
U
UISP

UISP

本地服务
github.com云与基础设施06 天前更新

关于 UISP

UISP MCP 服务面向 MSP 和网络运营团队,将 Ubiquiti UISP 的网络与 ISP 管理数据提供给 AI 助手及 WYRE Conduit 网关。它聚焦站点、设备、流量、告警和审计等只读监控信息,不包含配置或管理操作。

主要功能

  1. 01搜索站点、终端及客户
  2. 02查看设备状态、接口和遥测
  3. 03查询网络中断与事件日志
  4. 04检查数据链路和网关
  5. 05查看任务、固件及测速结果
  6. 06获取网络统计与实例摘要

适用场景

  1. 01盘点站点与网络设备
  2. 02排查中断并查看设备遥测
  3. 03追踪网络事件和后台任务
  4. 04检查站点流量及网络健康状况

MCP 相关

该 MCP 服务向 MCP 客户端暴露 UISP REST API 的只读监控工具,覆盖站点、设备、告警、日志及网络统计。可通过网关逐请求接收 API 令牌与实例 URL。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-uisp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"UISP_API_KEY",
"-e",
"UISP_BASE_URL",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/uisp-mcp:v1.0.1"
],
"env": {
"UISP_API_KEY": "<UISP_API_KEY>",
"UISP_BASE_URL": "<UISP_BASE_URL>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e UISP_API_KEY -e UISP_BASE_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/uisp-mcp:v1.0.1
需要配置的环境变量
UISP_API_KEY密钥UISP account token, generated in the UISP console under Settings > Users > API tokens.
UISP_BASE_URLBase URL of the UISP instance this connector talks to, e.g. https://uisp.example.com. UISP has no shared multi-tenant endpoint; every deployment runs at its own instance FQDN.
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-ai/uisp-mcp:v1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

UISP MCP 服务

面向 Ubiquiti UISP REST API(/nms/api/v2.1)的 MCP 服务,可查询 UISP 网络/ISP 管理实例中的站点、设备、停机事件(告警界面)、事件/审计日志、数据链路、网关、后台任务、可用固件和速度测试,供 AI 助手和 WYRE Conduit 网关使用。

身份验证

UISP 使用静态的账户令牌进行身份验证,该令牌在 UISP 控制台的 Settings -> Users -> API tokens 下生成(令牌可设为只读或读写模式;请为此连接器生成只读令牌)。UISP 没有共享的多租户端点:每个部署都运行在各自的实例 FQDN 上,包括 Ubiquiti 自己的托管云层级,因此此连接器需要同时提供令牌和基础 URL。令牌会作为 x-auth-token 标头发送到 <base URL>/nms/api/v2.1/...。在网关模式下,两者会通过 X-UISP-Api-Key 和 X-UISP-Base-URL 标头随每个请求传入;在本地/stdio 模式下,则从 UISP_API_KEY 和 UISP_BASE_URL 读取一次。

凭据范围

由供应商文档说明,未经实时实例独立验证(见下文“验证”):UISP 自己的控制台允许在创建令牌时将其设为“Read Only”或“Read/Write”模式——这是一种真正受供应商支持的方式,可在令牌交给此连接器之前将其限定为只读;而本产品组合中的一些供应商并非如此,它们的密钥始终继承创建密钥的用户的全部权限。此连接器自身的代码只会发出 GET 请求(见下文“范围”),但“禁止写入”的执行由 UISP 负责,而非此连接器;签发只读令牌是客户的保障,并非此连接器能够从外部强制实现的。

还有一个密切相关的发现值得明确说明:UISP 同时是网络管理平台和轻量级 ISP CRM(UCRM)——此 API 中的 Site 可以包含关联的 ucrm.client 引用,其中包含真实客户的姓名,而 uisp_list_site_clients 会返回客户记录。正因如此,即使一些工具看起来只是普通的基础设施清单查询,它们也被明确归类为 isAdmin: true;详情请见下文“范围”以及 Conduit 的 vendor-config.ts 中此连接器对应的条目。

验证

此连接器直接基于 UISP 自己生成的 OpenAPI/Swagger 规范构建(标题为 UISP API,swagger: "2.0",basePath: /nms/api/v2.1,securityDefinitions.UserSecurity 指定 x-auth-token 标头)——每个 UISP 安装都会在 https://<instance>/nms/api-docs/ 发布实时 Swagger UI,此连接器的工具均已逐一对照该规范记载的 180 个 GET 操作进行验证,而非依据二手文档或命名约定。但此连接器未经实时 UISP 实例的独立验证:UISP 按 ISP 部署(可自托管;Ubiquiti 的托管云层级则要求拥有活跃的 ISP/网络运营商账户),而此构建环境中没有可用实例,无法使用真实令牌完成端到端测试。这是构建环境的限制,并非供应商的审批门槛——ISP 运营商确实可以自行注册使用托管云层级。

配置

环境变量说明
UISP_API_KEY在 UISP 控制台签发的账户令牌。
UISP_BASE_URLUISP 实例的基础 URL,例如 https://uisp.example.com。
MCP_TRANSPORTstdio(默认)或 http。
AUTH_MODEenv(默认,读取上述变量)或 gateway(凭据通过 X-UISP-Api-Key/X-UISP-Base-URL 标头随每个请求传入,由 Conduit 网关注入)。
CONDUIT_S2S_SECRET设置后,HTTP 传输要求每个 /mcp 请求都携带有效的 X-Gateway-S2S 标头(Conduit sidecar 身份验证)。
LOG_LEVELdebug | info(默认)| warn | error。
请求限制
  • HTTP 请求正文上限为 256 KiB(262144 bytes)。通过 X-Gateway-S2S 检查后,如果 Content-Length 超过上限,则返回 413 和 JSON-RPC 错误;没有 Content-Length 的正文由 MCP SDK 传输层限制。未通过身份验证的请求仍会优先返回 401。
  • tools/call 参数上限为 10,000 个元素(包括任意深度的每个数组项和对象键)。超出限制的输入会返回 isError 工具结果,且不会被分发。

这些限制用于应对 CVE-2026-111768 / GHSA-46jr-4wx8-v453(验证期间内存耗尽)和 GHSA-f897-62hf-6gxq(缺少请求正文/批次上限)。

工具

站点
  • uisp_list_sites - 列出站点(网络位置——站点、端点和客户端——每个站点都可以选择关联到 UCRM 客户端/服务记录)。
  • uisp_get_site - 获取单个站点的详细信息。
  • uisp_search_sites - 按名称、地址、MAC 地址或 IP 地址搜索站点/端点/客户端。
  • uisp_list_site_clients - 列出属于指定(父级)站点的所有客户端站点。
  • uisp_get_site_statistics - 获取站点与其父级站点之间的上传/下载流量。
  • uisp_get_site_traffic_summary - 获取指定时间间隔内截至当前的站点总上传/下载量。
设备
  • uisp_list_devices - 列出设备(主机名/IP/MAC、状态、父级站点)。
  • uisp_get_device - 获取单个设备的状态概览。
  • uisp_get_device_detail - 获取设备详细信息,可选择包含接口和/或已连接的终端。
  • uisp_get_device_statistics - 获取设备遥测数据(CPU/RAM/信号/温度/吞吐量)。
  • uisp_list_device_interfaces - 列出设备的网络接口,包括已配置的 IP 地址。
  • uisp_get_device_by_mac - 按 MAC 地址查找设备。
  • uisp_list_discovered_devices - 列出已在网络中发现但尚未添加的设备。
中断
  • uisp_list_outages - 列出网络中断——UISP 的告警界面——可按设备、类型和是否正在处理中筛选。
日志
  • uisp_list_logs - 列出 UISP 事件/审计日志(登录、设备状态变更、备份、升级)。
数据链路
  • uisp_list_data_links - 列出数据链路(UISP 映射的设备与站点之间的无线/有线链路)。
  • uisp_get_data_link - 获取单条数据链路的详细信息。
  • uisp_list_site_data_links - 列出关联到指定站点的数据链路。
网关
  • uisp_list_gateways - 列出网关(配置为网络网关的路由器)及其 NetFlow/QoS/暂停配置。
  • uisp_get_gateway - 获取单个网关的详细信息。
任务
  • uisp_list_tasks - 列出后台任务(固件升级、备份、批量操作)及其状态。
  • uisp_get_tasks_in_progress - 获取当前正在处理的任务数量。
固件
  • uisp_list_firmwares - 获取 UISP 为其支持的设备型号提供的固件版本。
速度测试
  • uisp_get_speed_tests - 获取正在运行和近期速度测试的详细信息。
系统
  • uisp_get_version - 获取 UISP 版本、部署类型和构建信息。可用于检查凭据/连接是否正常。
  • uisp_get_network_statistics - 获取全网统计信息(客户端/站点数量、网络健康状况、信号/链路/ISP 评分、中断次数)。
  • uisp_get_summary - 获取整个实例中类似徽章计数的数值(未读日志/中断/固件数量、活跃客户端/站点数量)。

范围

这是一个有意精简的只读 v1 功能面,严格涵盖 NOC/MSP 监控的核心工作流——站点和设备清单、状态、遥测数据、服务中断和审计日志——不包含其他内容。 UISP 自带的 OpenAPI 规范记录了 325 个路径(其中 180 个为 GET),涵盖范围广泛得多:完整的网络/设备配置与部署、CRM/计费、用户和 API 令牌管理、设备凭据存储、备份、服务器管理,以及规划/模拟工具。本连接器从该规范中实现了 27 个 GET 操作,逐一验证,并且是有意排除其他所有内容,而非疏忽遗漏。

明确排除(设备凭据库)——从未实现: GET /vault/credentials、/vault/credentials/devices、/vault/{deviceId}/credentials——这实际上是设备登录凭据存储库;无论 HTTP 方法为何,均直接排除。

明确排除(API 令牌/用户/访问组管理——身份与凭据管理,不属于网络数据)——从未实现: GET /token、/token/{tokenId}、/users、/user、/user/totpauth、/access-groups/sites、/access-groups/sites/{groupId}、/nms/keep-alive、/nms/account/login/ubiquiti。

明确排除(备份、还原和支持包下载——涉及二进制/敏感数据;即使提供还原操作所需数据的读取使用 GET,还原本身也属于与写入相关的维护操作)——从未实现: GET /nms/backups、/nms/backups/{backupId}、/nms/backups/{backupId}/download-token、/nms/downloads/{token}、/nms/maintenance/backup、/nms/maintenance/backup/restore、/nms/maintenance/supportinfo、/devices/{deviceId}/backups、/devices/{deviceId}/backups/{backupId}、/devices/{id}/supportfile。

明确排除(服务器管理和设置——可能包含邮件服务器/SMTP 凭据及服务器级配置,不属于网络/设备数据)——从未实现: GET /nms/settings、/nms/server-config、/nms/setup、/nms/mailserver、/nms/connection(返回 UISP 服务器自身的连接密钥)、/nms/log-verbosity、/nms/update、/nms/update/log、/nms/traffic/blacklist、/nms/traffic/subnets、/nms/address、/nms/search、/nms/news、/nms/blog/posts、/nms/questionnaires/active、/nms/changed、/nms/server-time、/nms/heartbeat(仅检查未经过身份验证的存活状态;本连接器改用经过身份验证的 uisp_get_version 进行健康检查)。

明确排除(CRM/计费——独立子系统,使用自己的客户计费数据模型,不属于网络监控连接器的范围)——从未实现: GET /crm/roles、/crm/service-plans。

明确排除(GDPR/客户数据导出)——从未实现: GET /gdpr/clients/{id}——以格式化形式导出单个客户的个人数据。

明确排除(原始设备透传/UDAPI 代理)——从未实现: GET /devices/{deviceId}/udapi/{version}/{udapiUrl*}——通用反向代理,直通设备自身的本地 API;UISP 自带的规范并未限制目标端必须遵循 GET 语义,因此无论外层 HTTP 方法为何,该类别均予以排除,处理方式与 unifi-mcp 对其类似的按控制台划分的连接器代理路径相同。

明确排除(网络发现控制平面)——从未实现: GET /discovery/scan-status、/discovery/status/{deviceId}——用于查询活动网络扫描的状态,而该扫描是在 API 的其他位置触发/控制的;作为同一发现工作流的一部分予以排除,不单独拆分处理。 严格排除(深入的逐设备配置:DHCP、防火墙、路由、VLAN、NetFlow、无线/AirCube/AirMax/OLT/ONU 配置)——从未实现: /devices/erouters/*、/devices/uisprs/*(DHCP 租约/服务器、防火墙过滤器/修改规则/NAT/集合/设置、OSPF、路由、NetFlow)、/devices/{id}/router/*、/devices/{id}/netflow、/devices/{id}/vlans、/devices/{id}/services、/devices/{id}/system、/devices/{id}/system/unms、/devices/{deviceId}/mac-table*、/devices/{deviceId}/interfaces/{interfaceName}、/devices/{deviceId}/interfaces/data-link/available、/devices/{deviceId}/location 下的所有 GET 请求,以及按设备型号划分的详情/配置/站点端点系列(/devices/aircubes/*、/airfibers/*、/airmaxes/*、/blackboxes/*、/epowers/*、/eswitches/*、/olts/*、/onus/*、/solarbeams/*、/toughswitches/*、/uispss/*、/waves/*,以及 /devices/aps/profiles、/devices/ssids、/devices/models、/devices/macs、/devices/ips、/devices/unknown、/devices/import/status)——此连接器的设备接口有意仅限于身份/状态/遥测/接口(uisp_list_devices、uisp_get_device、uisp_get_device_detail、uisp_get_device_statistics、uisp_list_device_interfaces、uisp_get_device_by_mac、uisp_list_discovered_devices),不包括按供应商型号划分的配置。

严格排除(超出核心六项的网站子资源)——从未实现: GET /sites/{id}/images、/sites/{siteId}/images/{imageId}(二进制)、/sites/{siteId}/qos、/sites/{siteId}/slastats(UISP 自己的摘要将其描述为“用于 ISP 和 SLA 评分调试”)、/sites/{siteId}/traffic、/sites/{siteId}/traffic/interval、/sites/traffic(就此连接器的用途而言,已由已实现的 uisp_get_site_traffic_summary 取代)。

严格排除(规划/模拟和现场安装工具——不属于实时网络状态)——从未实现: GET /simulation、/simulation/devices、/simulation/links、/installations/devices、/installations/{id}、/installations/{id}/{mac}/configuration。

严格排除(其他)——从未实现: GET /devices/{id}/router/*(见上文)、/tasks/{batchId}(已实现的列表/进行中数量之外的单任务详情)、/airlink/proxy/*(RF 链路规划地图/高程数据文件,与实时网络状态无关)、/nms/version/latest(检查是否有较新的 UISP 版本;属于管理功能,不是监控数据)。

如有需求,可在审慎决定范围后作为后续工作添加——默认不会添加。

开发

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

docker build -t uisp-mcp .
docker run -p 8080:8080 -e UISP_API_KEY=... -e UISP_BASE_URL=https://uisp.example.com uisp-mcp

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。