SuperAPI AI 工具集

unifi-discovery

部署与运维

查看项目

更新于 11-02 01:23

技能介绍

UniFi Discovery 与后端选择

当你还不清楚这个服务器暴露了哪些能力,或者你预期的某个工具不存在时,从这里开始。本技能集中的其他所有技能都假定你已做出这两个决定:由哪个后端应答,以及哪些工具实际已注册。

第 1 步:查明已注册的内容

服务器自身的能力清单是权威来源。可按以下优先顺序读取:

A2A agent card(HTTP 部署)

curl -s -H "Authorization: Bearer $MCP_AUTH_TOKEN" \
  http://127.0.0.1:3000/a2a/agent-card

该卡片在 skills 下列出每个已注册工具,并在 metadata 下汇总部署情况:

字段 说明
metadata.toolCount 本次部署注册了多少个工具
metadata.readToolCount / writeToolCount / destructiveToolCount 按风险层级划分的数量
metadata.domains 存在哪些能力域(network、protect、cloud 等)
metadata.apiType 当前运行模式:local、cloud-v1 或 cloud-ea
metadata.readOnly 是否过滤掉了变更类工具
metadata.dryRun 是否所有写操作都被强制转为预览
metadata.fleet 是否配置了 fleet 注册表
metadata.apiModes 本部署可支持的模式

同一卡片也通过 /.well-known/agent-card.json 提供,而 POST /a2a/discover 的发现清单会额外给出按域划分的工具清单:

curl -s -X POST -H "Authorization: Bearer $MCP_AUTH_TOKEN" \
  -H "Content-Type: application/json" -d '{}' \
  http://127.0.0.1:3000/a2a/discover

直接使用 MCP 协议

# 列出服务器暴露的工具
npx @modelcontextprotocol/inspector unifi-mcp-server

仓库卡片

仓库根目录的 agent-card.json 是默认本地部署的参考卡片。它有助于快速了解完整工具面,但它只是参考:你的部署所暴露的可能更窄。应信任服务端返回的卡片,而非该文件。

第 2 步:选择后端

模式决定存在哪些工具。请求某个模式不提供的工具是最常见的失败原因。

模式 设置方式 可达范围 适用场景
local UNIFI_API_TYPE=local 局域网内的控制台或网关 全部能力:设备、客户端、配置、防火墙、Protect
cloud-v1 UNIFI_API_TYPE=cloud-v1 UniFi 稳定的 v1 云 API 仅站点和汇总统计
cloud-ea UNIFI_API_TYPE=cloud-ea UniFi 抢先体验云 API 仅站点和汇总统计
fleet 设置 DATABASE_URL,外加 UNIFI_API_TYPE 同一服务器后端的多个控制器 多个控制器、单一端点

云模式没有按设备控制的能力。cloud-v1 或 cloud-ea 下不会注册任何客户端、设备、防火墙或 Protect 工具。如果任务需要更改设备,就需要 local 模式。

云模式确实会注册 Site Manager、connector、Mobility、InnerSpace 和 Carrier Fabric 工具,且这些工具需要 UNIFI_SITE_MANAGER_ENABLED=true 才能运行。

第 3 步:检查暴露配置

有三个设置会收窄服务器注册的工具。在假定某工具可用之前,先从卡片上读取它们。

设置 效果 你的应对
UNIFI_PROFILE 只注册该配置下的工具模块 工具缺失可能是配置原因,而非缺陷
UNIFI_READ_ONLY=true 不注册任何变更类工具 只有读工具可用;写工具是缺失,而非被拒绝
UNIFI_DRY_RUN=true 对每次写操作强制 dry_run=True 每个变更都返回预览;不会发生任何改变

配置档有 minimal、protect、network、security、devices 和 system。minimal 是最小的有用集合。

第 4 步:确认服务器健康

# 存活检查:无需 token,不返回详细信息
curl -s http://127.0.0.1:3000/healthz

# 服务器自身的健康检查,通过工具面调用
# (作为工具调用:health_check)

health_check 报告服务器能否到达其控制器。在长时间读取或变更之前使用它,以便正确归因失败。

第 5 步:检查允许执行的操作

bearer token 的角色决定你可以运行什么。角色按权限升序排列:

角色 可运行
viewer 仅读工具
operator 读和写工具
admin 读、写及破坏性工具
fleet-admin 全部,包括 fleet 注册表和 token 工具

MCP_AUTH_TOKEN 条目可写成 <role>:<token>;裸 token 是紧急用途的 fleet-admin。客户端只发送 token 部分。

需要高于你角色的工具会以权限错误被拒绝,而非静默跳过。审计记录会指明所需的层级。

常见故障

现象 原因 处理方式
找不到工具 模式错误,或配置档不包含它 读取卡片中的 metadata.domains 和 apiType
找不到工具,云模式 云模式没有按设备工具 使用 local 模式,或 Site Manager 工具
找不到工具,Site Manager UNIFI_SITE_MANAGER_ENABLED 未开启 设为 true 并重启
缺少写工具 UNIFI_READ_ONLY=true 只读是服务器模式;请求将其关闭
写操作返回预览 UNIFI_DRY_RUN=true 预览即试运行;没有任何改变
权限被拒 token 角色太低 检查角色;admin 覆盖破坏性工具
每次调用都无法到达控制器 控制台从该主机不可达 检查 UNIFI_LOCAL_HOST 以及 health_check 结果

安全

工具存在并不意味着你应该调用它。在做变更之前,先阅读该域对应的技能。

除非工具自身的 schema 要求,否则绝不要把凭据放入工具参数,也绝不要放入提示词、日志行或报告中。

卡片和发现清单是公开元数据。它们携带工具名称和 schema,而不携带控制器地址或凭据。