You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #2687 introduced a breaking change to compute vm delete and compute vmss delete: these commands now return a not-found outcome (Success: false) when the target resource does not exist, instead of reporting a successful deletion. The changelog entry marks this as a Breaking Change that "may affect automation that previously treated non-existent VM/VMSS deletions as success."
While the parameter descriptions in azmcp-commands.md were updated in the same PR, the Command Behavior sections for both azmcp compute vm delete and azmcp compute vmss delete do not describe this not-found behavior — despite both commands already carrying the ✅ Idempotent annotation in their examples.
Gaps Found
azmcp-commands.md — ## azmcp compute vm delete Command Behavior section does not document that the command returns Success: false (with a descriptive message) when the VM does not exist, rather than throwing an error
azmcp-commands.md — ## azmcp compute vmss delete Command Behavior section has the same omission
e2eTestPrompts.md — no test prompt exists for the "delete non-existent resource" (idempotent/not-found) scenario for either compute_vm_delete or compute_vmss_delete
Files to Update
servers/Azure.Mcp.Server/docs/azmcp-commands.md
servers/Azure.Mcp.Server/docs/e2eTestPrompts.md
Context
Changelog entry from the PR:
changes:
- section: "Breaking Changes"description: | `vm delete` and `vmss delete` now return a not-found outcome (`Success: false`) when the target resource does not exist, instead of reporting a successful deletion. This may affect automation that previously treated non-existent VM/VMSS deletions as success.
Current (incomplete) Command Behavior section for vm delete:
**Command Behavior:**
- Deletes the VM. Associated resources (disks, NICs, public IPs) are NOT automatically deleted.
- **With `--force-deletion`**: Passes `forceDeletion=true` to the Azure API, which force-deletes the VM even if it is in a running or failed state.
Missing: a bullet point explaining the not-found behavior (analogous to how disk delete documents this: "returns Deleted = false if the disk was not found").
📐 Implementation Guide
This section contains step-by-step instructions for a coding agent to implement the changes described above.
For ## azmcp compute vm delete — add a bullet to the Command Behavior section:
**Command Behavior:**- Deletes the VM. Associated resources (disks, NICs, public IPs) are NOT automatically deleted.
-**With `--force-deletion`**: Passes `forceDeletion=true` to the Azure API, which force-deletes the VM even if it is in a running or failed state.
-**Not-found handling**: If the specified VM does not exist, the command returns `Success: false` with a descriptive message rather than throwing an error. This makes the operation idempotent.
For ## azmcp compute vmss delete — add a bullet to the Command Behavior section:
**Command Behavior:**- Deletes the VMSS and all its VM instances. This operation is irreversible.
-**With `--force-deletion`**: Passes `forceDeletion=true` to the Azure API, which force-deletes the VMSS even if it is in a running or failed state.
-**Not-found handling**: If the specified VMSS does not exist, the command returns `Success: false` with a descriptive message rather than throwing an error. This makes the operation idempotent.
In the ## Azure Compute section, add test prompts covering the idempotent/not-found scenario:
| compute_vm_delete | Delete VM <vm-name> that does not exist in resource group <resource-group-name> |
| compute_vmss_delete | Delete scale set <vmss-name> that does not exist in resource group <resource-group-name> |
Insert these after the existing compute_vm_delete and compute_vmss_delete rows, respectively.
Step 3: Verify documentation structure
servers/Azure.Mcp.Server/docs/azmcp-commands.md — confirm the two Command Behavior sections include the not-found bullet and match the idiomatic pattern used elsewhere (e.g., the disk delete section at line 1946: "returns Deleted = true if the disk was successfully removed, or Deleted = false if the disk was not found").
servers/Azure.Mcp.Server/docs/e2eTestPrompts.md — confirm new rows are placed alphabetically within their tool group.
Step 4: Validate
Run these commands in order:
dotnet build servers/Azure.Mcp.Server/ — confirms the server project compiles cleanly
dotnet build tools/Azure.Mcp.Tools.Compute/src/ — confirms the Compute toolset compiles
.\eng\common\spelling\Invoke-Cspell.ps1 — checks spelling in modified documentation
Next Steps
Tip
Ready for automated implementation? Assign this issue to @copilot to have Copilot coding agent implement the changes described in the Implementation Guide above
Documentation Gap
Server:
Azure.Mcp.ServerTool directory:
tools/Azure.Mcp.Tools.ComputeTriggered by: commit 9519f9b (PR #2687) by
@g2vinayChanged files:
tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmDeleteCommand.cstools/Azure.Mcp.Tools.Compute/src/Commands/Vmss/VmssDeleteCommand.csservers/Azure.Mcp.Server/docs/azmcp-commands.mdservers/Azure.Mcp.Server/changelog-entries/1779264486206.yamlWhat Changed
PR #2687 introduced a breaking change to
compute vm deleteandcompute vmss delete: these commands now return a not-found outcome (Success: false) when the target resource does not exist, instead of reporting a successful deletion. The changelog entry marks this as a Breaking Change that "may affect automation that previously treated non-existent VM/VMSS deletions as success."While the parameter descriptions in
azmcp-commands.mdwere updated in the same PR, the Command Behavior sections for bothazmcp compute vm deleteandazmcp compute vmss deletedo not describe this not-found behavior — despite both commands already carrying the✅ Idempotentannotation in their examples.Gaps Found
azmcp-commands.md—## azmcp compute vm deleteCommand Behavior section does not document that the command returnsSuccess: false(with a descriptive message) when the VM does not exist, rather than throwing an errorazmcp-commands.md—## azmcp compute vmss deleteCommand Behavior section has the same omissione2eTestPrompts.md— no test prompt exists for the "delete non-existent resource" (idempotent/not-found) scenario for eithercompute_vm_deleteorcompute_vmss_deleteFiles to Update
servers/Azure.Mcp.Server/docs/azmcp-commands.mdservers/Azure.Mcp.Server/docs/e2eTestPrompts.mdContext
Changelog entry from the PR:
Current (incomplete) Command Behavior section for
vm delete:Missing: a bullet point explaining the not-found behavior (analogous to how disk delete documents this: "returns
Deleted = falseif the disk was not found").📐 Implementation Guide
This section contains step-by-step instructions for a coding agent to implement the changes described above.
Step 1: Modify
servers/Azure.Mcp.Server/docs/azmcp-commands.mdFor
## azmcp compute vm delete— add a bullet to the Command Behavior section:For
## azmcp compute vmss delete— add a bullet to the Command Behavior section:Step 2: Modify
servers/Azure.Mcp.Server/docs/e2eTestPrompts.mdIn the
## Azure Computesection, add test prompts covering the idempotent/not-found scenario:Insert these after the existing
compute_vm_deleteandcompute_vmss_deleterows, respectively.Step 3: Verify documentation structure
servers/Azure.Mcp.Server/docs/azmcp-commands.md— confirm the two Command Behavior sections include the not-found bullet and match the idiomatic pattern used elsewhere (e.g., the disk delete section at line 1946: "returnsDeleted = trueif the disk was successfully removed, orDeleted = falseif the disk was not found").servers/Azure.Mcp.Server/docs/e2eTestPrompts.md— confirm new rows are placed alphabetically within their tool group.Step 4: Validate
Run these commands in order:
dotnet build servers/Azure.Mcp.Server/— confirms the server project compiles cleanlydotnet build tools/Azure.Mcp.Tools.Compute/src/— confirms the Compute toolset compiles.\eng\common\spelling\Invoke-Cspell.ps1— checks spelling in modified documentationNext Steps
Tip
Ready for automated implementation? Assign this issue to
@copilotto have Copilot coding agent implement the changes described in the Implementation Guide above