SuperAPI AI 工具集

azure-resource-lookup

部署与运维

查看项目

更新于 10-13 20:09

技能介绍

用途

Azure Resource Lookup 用于列出、查找和发现 Azure 中任意类型的资源,可跨订阅和资源组执行查询。当用户提出“列出我订阅中的网站”“列出我的 Web 应用”“我有哪些 Azure 资源”等需求时,该技能可借助 Azure Resource Graph(ARG)完成查询。在专用 MCP 工具无法覆盖某类资源时,它作为补充手段使用。

主要能力

  • 列出任意类型的资源,包括虚拟机、Web 应用、存储账户、容器应用、数据库等。
  • 显示特定订阅或资源组中的资源。
  • 跨多个订阅或资源类型进行查询。
  • 查找孤立资源,例如未挂载的磁盘、未使用的网卡、闲置 IP。
  • 发现缺少必需标签或配置的资源。
  • 获取跨多种类型的资源清单。
  • 查找处于特定状态的资源,例如不健康、预配失败、已停止。
  • 列出 Web 应用、网站或 App Services。

注意:App Service / Web Apps 没有专用的 MCP 列表命令。类似“list websites”“list web apps”“list app services”的提示必须通过本技能路由,使用 Azure Resource Graph 完成。

提示:对于单一资源类型的查询,应先检查是否有专用 MCP 工具可以处理(见下方路由表)。如果没有,则使用 Azure Resource Graph。

使用方式

查询语言为 KQL(Kusto Query Language 子集),CLI 命令示例为:

az graph query -q "<KQL>" -o table

所需扩展安装命令:

az extension add --name resource-graph

MCP 工具:extension_cli_generate 用于生成 az graph query 命令,是主要工具,可从用户意图生成 ARG 查询;mcp_azure_mcp_subscription_list 用于列出可用订阅,在查询前发现订阅范围;mcp_azure_mcp_group_list 用于列出资源组,缩小查询范围。

工作流程

第 1 步:检查是否有专用 MCP 工具。对于单一资源类型查询,先检查专用工具覆盖情况:

  • 虚拟机:compute 工具,完整覆盖(列表、详情、规格)。
  • 存储账户:storage 工具,完整覆盖(账户、Blob、表)。
  • Cosmos DB:cosmos 工具,完整覆盖(账户、数据库、查询)。
  • Key Vault:keyvault 工具,部分覆盖(仅密钥/机密,无保管库列表)。
  • SQL 数据库:sql 工具,部分覆盖(需要资源组名称)。
  • 容器注册表:acr 工具,完整覆盖(列出注册表)。
  • Kubernetes(AKS):aks 工具,完整覆盖(集群、节点池)。
  • App Service / Web Apps:appservice 工具,无列表命令,使用 ARG。
  • 容器应用:无 MCP 工具,使用 ARG。
  • 事件中心:eventhubs 工具,完整覆盖(命名空间、中心)。
  • 服务总线:servicebus 工具,完整覆盖(队列、主题)。

如果有完整覆盖的专用工具,则使用它;否则进入第 2 步。

第 2 步:生成 ARG 查询。使用 extension_cli_generate 构建 az graph query 命令:

mcp_azure_mcp_extension_cli_generate
  intent: "query Azure Resource Graph to <user's request>"
  cli-type: "az"

常见 KQL 模式可参考 Azure Resource Graph Query Patterns。

第 3 步:执行并格式化结果。运行生成的命令,使用 --query(JMESPath)塑形输出:

az graph query -q "<KQL>" --query "data[].{name:name, type:type, rg:resourceGroup}" -o table

使用 --first N 限制结果数量,使用 --subscriptions 限定范围。

错误处理

  • resource-graph extension not found:扩展未安装,修复方式为 az extension add --name resource-graph。
  • AuthorizationFailed:无订阅读取权限,检查 RBAC,需要 Reader 角色。
  • BadRequest on query:KQL 语法无效,验证表/列名称,使用 =~ 进行不区分大小写的类型匹配。
  • Empty results:没有匹配资源或范围错误,检查 --subscriptions 参数,验证资源类型拼写。

约束

  • 始终使用 =~ 进行不区分大小写的类型匹配(类型为小写)。
  • 始终使用 --subscriptions 或 --first 为大型租户限定查询范围。
  • 单一资源类型查询优先使用专用 MCP 工具。
  • 切勿将 ARG 用于实时监控(数据有轻微延迟)。
  • 切勿通过 ARG 尝试变更操作(只读)。