关于 azure-resource-lookup
azure-resource-lookup 是一个 Agent Skill,用于跨订阅和资源组列出、查找和发现各类 Azure 资源。当没有专用 MCP 工具覆盖某种资源类型时,它通过 Azure Resource Graph 执行查询。
主要功能
- 01跨订阅和资源组的资源清单查询
- 02通过 Azure Resource Graph 生成 KQL 查询
- 03专用 MCP 工具优先的资源类型路由
- 04查找孤立资源与缺失标签的资源
- 05查询结果的范围限定与输出格式化
适用场景
- 01列出订阅中的 Web 应用、容器应用等资源
- 02查找未挂载的磁盘或未使用的网卡等孤立资源
- 03审计资源标签或按状态筛选资源
MCP 相关
该 Skill 通过 extension_cli_generate 等 Azure MCP 工具生成 az graph query 命令,并结合订阅和资源组列表工具缩小查询范围。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ azure-skills --skill azure-resource-lookup安装后在 Claude Code 中输入/azure-resource-lookup确认已加载。
附带文件references/azure-resource-graph.md
详细介绍
Azure Resource Lookup
列出、查找和发现订阅及资源组中的任意类型 Azure 资源。当专用 MCP 工具无法覆盖资源类型时,使用 Azure Resource Graph(ARG)执行快速的跨范围查询。
何时使用此技能
当用户希望执行以下操作时,请使用此技能:
- 列出资源,无论类型为何(VM、Web 应用、存储帐户、容器应用、数据库等)
- 显示资源,指定订阅或资源组中的资源
- 查询多个订阅或多种资源类型中的资源
- 查找孤立资源(未附加的磁盘、未使用的 NIC、空闲的 IP)
- 发现缺少必需标记或配置的资源
- 获取跨多种类型的资源清单
- 查找处于特定状态的资源(运行状况不佳、预配失败、已停止)
- 回答“我有哪些资源?”或“显示我的 Azure 资源”
- 列出 Web 应用、网站或 App Services
⚠️ 警告: App Service / Web Apps 没有专用 MCP
list命令。“列出网站”“列出 Web 应用”或“列出 App Services”之类的提示必须通过此技能路由,以使用 Azure Resource Graph。
💡 提示: 对于单一资源类型的查询,先检查是否有专用 MCP 工具可以处理(请参阅下方的路由表)。如果没有,请使用 Azure Resource Graph。
快速参考
| 属性 | 值 |
|---|---|
| 查询语言 | KQL(Kusto 查询语言子集) |
| CLI 命令 | az graph query -q "<KQL>" -o table |
| 扩展 | az extension add --name resource-graph |
| MCP 工具 | extension_cli_generate,意图为 az graph query |
| 最适用场景 | 跨订阅查询、孤立资源、标记审计 |
MCP 工具
| 工具 | 用途 | 使用时机 |
|---|---|---|
extension_cli_generate | 生成 az graph query 命令 | 主要工具 — 根据用户意图生成 ARG 查询 |
mcp_azure_mcp_subscription_list | 列出可用订阅 | 查询前确定订阅范围 |
mcp_azure_mcp_group_list | 列出资源组 | 缩小查询范围 |
工作流
步骤 1:检查是否有专用 MCP 工具
对于单一资源类型的查询,检查是否有专用 MCP 工具可以处理:
| 资源类型 | MCP 工具 | 覆盖范围 |
|---|---|---|
| 虚拟机 | compute | ✅ 完整 — 列表、详细信息、大小 |
| 存储帐户 | storage | ✅ 完整 — 帐户、Blob、表 |
| Cosmos DB | cosmos | ✅ 完整 — 帐户、数据库、查询 |
| Key Vault | keyvault | ⚠️ 部分 — 仅密钥和机密,不支持列出保管库 |
| SQL 数据库 | sql | ⚠️ 部分 — 需要资源组名称 |
| 容器注册表 | acr | ✅ 完整 — 列出注册表 |
| Kubernetes(AKS) | aks | ✅ 完整 — 集群、节点池 |
| App Service / Web Apps | appservice | ❌ 无列表命令 — 使用 ARG |
| 容器应用 | — | ❌ 无 MCP 工具 — 使用 ARG |
| Event Hubs | eventhubs | ✅ 完整 — 命名空间、事件中心 |
| Service Bus | 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 查询模式。
步骤 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 | KQL 语法无效 | 确认表名/列名;使用 =~ 进行不区分大小写的类型匹配 |
| 结果为空 | 没有匹配的资源或范围错误 | 检查 --subscriptions 标志;确认资源类型的拼写 |
限制
- ✅ 始终使用
=~进行不区分大小写的类型匹配(类型为小写) - ✅ 对大型租户,始终使用
--subscriptions或--first限定查询范围 - ✅ 对单一资源类型的查询,优先使用专用 MCP 工具
- ❌ 切勿将 ARG 用于实时监控(数据会有轻微延迟)
- ❌ 切勿尝试通过 ARG 执行变更操作(只读)