Azure MCP Server has 15 tools with consistent naming (verb_noun pattern: get_, list_, create_, delete_, upload_, download_, restart_, start_, stop_). All tools have descriptions (avg ~50 chars, baseline 194 chars) and input schemas with type definitions and parameter descriptions. However, descriptions are significantly below the 194-char baseline and lack context on WHEN to use each tool, prerequisites, or recovery guidance. No output schemas are documented. Error handling is minimal, no recovery guidance, no categorization of retryable vs fatal errors. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Schemas use Zod types but lack enums, ranges, or format constraints. No pagination support on list tools despite potential for large result sets.
Get details of an Azure App Service
Get configuration of an Azure App Service
List all Azure App Services
Restart an Azure App Service
Start an Azure App Service
Stop an Azure App Service
Create a new container in an Azure Storage account
Descriptions are 35 - 50 characters, well below the 194-char baseline. Lack context on WHEN to use each tool, prerequisites, or what the tool returns. E.g., 'Get configuration of an Azure App Service' does not explain what configuration fields are returned or when to call this vs azure_apps_get.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., GetAppConfigTool returns a complex nested object with 20+ fields, but the tool definition does not declare this structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Delete a blob from a container in Azure Storage
Delete a container from an Azure Storage account
Download a blob from a container in Azure Storage
List all blobs in a container
List all containers in an Azure Storage account
Upload a blob to a container in Azure Storage
Delete an Azure Virtual Machine
List all Azure Virtual Machines
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked DESTRUCTIVE (azure_delete_blob, azure_delete_container, azure_vms_delete) should declare destructiveHint=true to signal to agents that these are irreversible.
List tools (azure_apps_list, azure_list_blobs, azure_list_containers, azure_vms_list) lack pagination parameters (limit, offset, cursor). No indication of result limits or how to handle large datasets. LLMs may receive truncated or overwhelming result sets.
No error handling guidance. Tools validate inputs (e.g., BaseAzureAppServiceTool.validateResourceGroup) but return generic Error objects. LLMs receive no recovery hints, categorization of retryable vs fatal errors, or suggestions for next steps.