{"id":"abc35ba8-14d7-4d22-ae39-c48054b60724","shortId":"L4grr7","kind":"skill","title":"azure-resource-lookup","tagline":"Official agent plugin providing skills and MCP server configurations for Azure scenarios.","description":"# Azure Resource Lookup\r\n\r\nList, find, and discover Azure resources of any type across subscriptions and resource groups. Use Azure Resource Graph (ARG) for fast, cross-cutting queries when dedicated MCP tools don't cover the resource type.\r\n\r\n## When to Use This Skill\r\n\r\nUse this skill when the user wants to:\r\n- **List resources** of any type (VMs, web apps, storage accounts, container apps, databases, etc.)\r\n- **Show resources** in a specific subscription or resource group\r\n- Query resources **across multiple subscriptions** or resource types\r\n- Find **orphaned resources** (unattached disks, unused NICs, idle IPs)\r\n- Discover resources **missing required tags** or configurations\r\n- Get a **resource inventory** spanning multiple types\r\n- Find resources in a **specific state** (unhealthy, failed provisioning, stopped)\r\n- Answer \"**what resources do I have?**\" or \"**show me my Azure resources**\"\r\n- **List web apps, websites, or App Services**\r\n\r\n> ⚠️ **Warning:** App Service / Web Apps have no dedicated MCP `list` command. Prompts like \"list websites\", \"list web apps\", or \"list app services\" **must** route through this skill to use Azure Resource Graph.\r\n\r\n> 💡 **Tip:** For single-resource-type queries, first check if a dedicated MCP tool can handle it (see routing table below). If none exists, use Azure Resource Graph.\r\n\r\n## Quick Reference\r\n\r\n| Property | Value |\r\n|----------|-------|\r\n| **Query Language** | KQL (Kusto Query Language subset) |\r\n| **CLI Command** | `az graph query -q \"<KQL>\" -o table` |\r\n| **Extension** | `az extension add --name resource-graph` |\r\n| **MCP Tool** | `extension_cli_generate` with intent for `az graph query` |\r\n| **Best For** | Cross-subscription queries, orphaned resources, tag audits |\r\n\r\n## MCP Tools\r\n\r\n| Tool | Purpose | When to Use |\r\n|------|---------|-------------|\r\n| `extension_cli_generate` | Generate `az graph query` commands | Primary tool — generate ARG queries from user intent |\r\n| `mcp_azure_mcp_subscription_list` | List available subscriptions | Discover subscription scope before querying |\r\n| `mcp_azure_mcp_group_list` | List resource groups | Narrow query scope |\r\n\r\n## Workflow\r\n\r\n### Step 1: Check for a Dedicated MCP Tool\r\n\r\nFor single-resource-type queries, check if a dedicated MCP tool can handle it:\r\n\r\n| Resource Type | MCP Tool | Coverage |\r\n|---|---|---|\r\n| Virtual Machines | `compute` | ✅ Full — list, details, sizes |\r\n| Storage Accounts | `storage` | ✅ Full — accounts, blobs, tables |\r\n| Cosmos DB | `cosmos` | ✅ Full — accounts, databases, queries |\r\n| Key Vault | `keyvault` | ⚠️ Partial — secrets/keys only, no vault listing |\r\n| SQL Databases | `sql` | ⚠️ Partial — requires resource group name |\r\n| Container Registries | `acr` | ✅ Full — list registries |\r\n| Kubernetes (AKS) | `aks` | ✅ Full — clusters, node pools |\r\n| App Service / Web Apps | `appservice` | ❌ No list command — use ARG |\r\n| Container Apps | — | ❌ No MCP tool — use ARG |\r\n| Event Hubs | `eventhubs` | ✅ Full — namespaces, hubs |\r\n| Service Bus | `servicebus` | ✅ Full — queues, topics |\r\n\r\nIf a dedicated tool is available with full coverage, use it. Otherwise proceed to Step 2.\r\n\r\n### Step 2: Generate the ARG Query\r\n\r\nUse `extension_cli_generate` to build the `az graph query` command:\r\n\r\n```yaml\r\nmcp_azure_mcp_extension_cli_generate\r\n  intent: \"query Azure Resource Graph to <user's request>\"\r\n  cli-type: \"az\"\r\n```\r\n\r\nSee [Azure Resource Graph Query Patterns](references/azure-resource-graph.md) for common KQL patterns.\r\n\r\n### Step 3: Execute and Format Results\r\n\r\nRun the generated command. Use `--query` (JMESPath) to shape output:\r\n\r\n```bash\r\naz graph query -q \"<KQL>\" --query \"data[].{name:name, type:type, rg:resourceGroup}\" -o table\r\n```\r\n\r\nUse `--first N` to limit results. Use `--subscriptions` to scope.\r\n\r\n## Error Handling\r\n\r\n| Error | Cause | Fix |\r\n|-------|-------|-----|\r\n| `resource-graph extension not found` | Extension not installed | `az extension add --name resource-graph` |\r\n| `AuthorizationFailed` | No read access to subscription | Check RBAC — need Reader role |\r\n| `BadRequest` on query | Invalid KQL syntax | Verify table/column names; use `=~` for case-insensitive type matching |\r\n| Empty results | No matching resources or wrong scope | Check `--subscriptions` flag; verify resource type spelling |\r\n\r\n## Constraints\r\n\r\n- ✅ **Always** use `=~` for case-insensitive type matching (types are lowercase)\r\n- ✅ **Always** scope queries with `--subscriptions` or `--first` for large tenants\r\n- ✅ **Prefer** dedicated MCP tools for single-resource-type queries\r\n- ❌ **Never** use ARG for real-time monitoring (data has slight delay)\r\n- ❌ **Never** attempt mutations through ARG (read-only)","tags":["azure","resource","lookup","skills","microsoft","agent-skills"],"capabilities":["skill","source-microsoft","skill-azure-resource-lookup","topic-agent-skills"],"categories":["azure-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/microsoft/azure-skills/azure-resource-lookup","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add microsoft/azure-skills","source_repo":"https://github.com/microsoft/azure-skills","install_from":"skills.sh"}},"qualityScore":"0.950","qualityRationale":"deterministic score 0.95 from registry signals: · indexed on github topic:agent-skills · official publisher · 1014 github stars · SKILL.md body (4,695 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:53:17.012Z","embedding":null,"createdAt":"2026-04-18T20:23:26.345Z","updatedAt":"2026-05-18T18:53:17.012Z","lastSeenAt":"2026-05-18T18:53:17.012Z","tsv":"'1':308 '2':430,432 '3':480 'access':544 'account':77,343,346,353 'acr':375 'across':29,93 'add':233,536 'agent':6 'ak':380,381 'alway':584,595 'answer':132 'app':75,79,146,149,152,155,168,171,386,389,397 'appservic':390 'arg':38,277,395,402,435,617,631 'attempt':628 'audit':258 'authorizationfail':541 'avail':288,420 'az':224,231,246,270,444,467,496,534 'azur':2,15,17,24,35,142,180,208,283,296,450,457,469 'azure-resource-lookup':1 'badrequest':552 'bash':495 'best':249 'blob':347 'build':442 'bus':410 'case':564,588 'case-insensit':563,587 'caus':523 'check':191,309,321,547,576 'cli':222,241,267,439,453,465 'cli-typ':464 'cluster':383 'command':161,223,273,393,447,488 'common':476 'comput':337 'configur':13,114 'constraint':583 'contain':78,373,396 'cosmos':349,351 'cover':51 'coverag':334,423 'cross':42,252 'cross-cut':41 'cross-subscript':251 'cut':43 'data':501,623 'databas':80,354,366 'db':350 'dedic':46,158,194,312,324,417,606 'delay':626 'detail':340 'discov':23,108,290 'disk':103 'empti':568 'error':520,522 'etc':81 'event':403 'eventhub':405 'execut':481 'exist':206 'extens':230,232,240,266,438,452,528,531,535 'fail':129 'fast':40 'find':21,99,122 'first':190,511,601 'fix':524 'flag':578 'format':483 'found':530 'full':338,345,352,376,382,406,412,422 'generat':242,268,269,276,433,440,454,487 'get':115 'graph':37,182,210,225,237,247,271,445,459,471,497,527,540 'group':33,90,298,302,371 'handl':198,328,521 'hub':404,408 'idl':106 'insensit':565,589 'instal':533 'intent':244,281,455 'invalid':555 'inventori':118 'ip':107 'jmespath':491 'key':356 'keyvault':358 'kql':217,477,556 'kubernet':379 'kusto':218 'languag':216,220 'larg':603 'like':163 'limit':514 'list':20,68,144,160,164,166,170,286,287,299,300,339,364,377,392 'lookup':4,19 'lowercas':594 'machin':336 'match':567,571,591 'mcp':11,47,159,195,238,259,282,284,295,297,313,325,332,399,449,451,607 'miss':110 'monitor':622 'multipl':94,120 'must':173 'mutat':629 'n':512 'name':234,372,502,503,537,560 'namespac':407 'narrow':303 'need':549 'never':615,627 'nic':105 'node':384 'none':205 'o':228,508 'offici':5 'orphan':100,255 'otherwis':426 'output':494 'partial':359,368 'pattern':473,478 'plugin':7 'pool':385 'prefer':605 'primari':274 'proceed':427 'prompt':162 'properti':213 'provid':8 'provis':130 'purpos':262 'q':227,499 'queri':44,91,189,215,219,226,248,254,272,278,294,304,320,355,436,446,456,472,490,498,500,554,597,614 'queue':413 'quick':211 'rbac':548 'read':543,633 'read-on':632 'reader':550 'real':620 'real-tim':619 'refer':212 'references/azure-resource-graph.md':474 'registri':374,378 'request':463 'requir':111,369 'resourc':3,18,25,32,36,53,69,83,89,92,97,101,109,117,123,134,143,181,187,209,236,256,301,318,330,370,458,470,526,539,572,580,612 'resource-graph':235,525,538 'resourcegroup':507 'result':484,515,569 'rg':506 'role':551 'rout':174,201 'run':485 'scenario':16 'scope':292,305,519,575,596 'secrets/keys':360 'see':200,468 'server':12 'servic':150,153,172,387,409 'servicebus':411 'shape':493 'show':82,139 'singl':186,317,611 'single-resource-typ':185,316,610 'size':341 'skill':9,59,62,177 'skill-azure-resource-lookup' 'slight':625 'source-microsoft' 'span':119 'specif':86,126 'spell':582 'sql':365,367 'state':127 'step':307,429,431,479 'stop':131 'storag':76,342,344 'subscript':30,87,95,253,285,289,291,517,546,577,599 'subset':221 'syntax':557 'tabl':202,229,348,509 'table/column':559 'tag':112,257 'tenant':604 'time':621 'tip':183 'tool':48,196,239,260,261,275,314,326,333,400,418,608 'topic':414 'topic-agent-skills' 'type':28,54,72,98,121,188,319,331,466,504,505,566,581,590,592,613 'unattach':102 'unhealthi':128 'unus':104 'use':34,57,60,179,207,265,394,401,424,437,489,510,516,561,585,616 'user':65,280,461 'valu':214 'vault':357,363 'verifi':558,579 'virtual':335 'vms':73 'want':66 'warn':151 'web':74,145,154,167,388 'websit':147,165 'workflow':306 'wrong':574 'yaml':448","prices":[{"id":"de418aab-e227-4cd6-b95e-f56ea6a5a0fe","listingId":"abc35ba8-14d7-4d22-ae39-c48054b60724","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"microsoft","category":"azure-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:23:26.345Z"}],"sources":[{"listingId":"abc35ba8-14d7-4d22-ae39-c48054b60724","source":"github","sourceId":"microsoft/azure-skills/azure-resource-lookup","sourceUrl":"https://github.com/microsoft/azure-skills/tree/main/skills/azure-resource-lookup","isPrimary":false,"firstSeenAt":"2026-04-18T21:57:16.280Z","lastSeenAt":"2026-05-18T18:53:17.012Z"},{"listingId":"abc35ba8-14d7-4d22-ae39-c48054b60724","source":"skills_sh","sourceId":"microsoft/azure-skills/azure-resource-lookup","sourceUrl":"https://skills.sh/microsoft/azure-skills/azure-resource-lookup","isPrimary":true,"firstSeenAt":"2026-04-18T20:23:26.345Z","lastSeenAt":"2026-05-07T22:40:11.820Z"}],"details":{"listingId":"abc35ba8-14d7-4d22-ae39-c48054b60724","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"microsoft","slug":"azure-resource-lookup","github":{"repo":"microsoft/azure-skills","stars":1014,"topics":["agent-skills"],"license":"mit","html_url":"https://github.com/microsoft/azure-skills","pushed_at":"2026-05-18T14:38:04Z","description":"Official agent plugin providing skills and MCP server configurations for Azure scenarios.","skill_md_sha":"3eab7cf0e18c728b88d8f50c66ab02b07fc7b8f0","skill_md_path":"skills/azure-resource-lookup/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/microsoft/azure-skills/tree/main/skills/azure-resource-lookup"},"layout":"multi","source":"github","category":"azure-skills","frontmatter":{},"skills_sh_url":"https://skills.sh/microsoft/azure-skills/azure-resource-lookup"},"updatedAt":"2026-05-18T18:53:17.012Z"}}