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 #2726 (NEW-4) added command-level validation for --workload-type on azmcp azurebackup protectableitem list. An unrecognised value now returns a 400 ValidationError with a friendly message listing every accepted alias, instead of propagating to the service layer as a 500 ArgumentException.
The accepted values are defined in the new WorkloadTypeNormalizer helper:
SQL or SQLDatabase, SQLInstance,
SAPHana or SAPHanaDatabase, SAPHanaSystem, SAPHanaDBInstance or SAPHanaDBI,
VM, IaaSVM, or VirtualMachine,
FileShare, AzureFileShare, or AFS,
SAPAse, SAPAseDatabase, ASE, or Sybase
(all case-insensitive)
Gaps Found
azmcp-commands.md shows [--workload-type <workload-type>] as an opaque placeholder for the protectableitem list command — the accepted values and their aliases are not listed.
azmcp-commands.md shows --workload-type <workload-type> for policy create with the same issue (both share the same alias set).
e2eTestPrompts.md does not need a new prompt for this change (the command already exists), but the azmcp-commands.md change is needed so users and agents know the accepted tokens without having to trigger a validation error.
Files to Update
servers/Azure.Mcp.Server/docs/azmcp-commands.md
Context
# Before (ProtectableItemListCommand)
[--workload-type <workload-type>]
# After — enumerate accepted values
[--workload-type <SQL|SQLDatabase|SQLInstance|SAPHana|SAPHanaDatabase|SAPHanaSystem|
SAPHanaDBInstance|SAPHanaDBI|VM|IaaSVM|VirtualMachine|
FileShare|AzureFileShare|AFS|SAPAse|SAPAseDatabase|ASE|Sybase>]
📐 Implementation Guide
This section contains step-by-step instructions for a coding agent to implement the changes described above.
You may also add a comment line above the usage block to clarify case-insensitivity:
# --workload-type values are case-insensitive
Step 2: Verify documentation structure
servers/Azure.Mcp.Server/docs/azmcp-commands.md — confirm each azurebackup command block still renders correctly and the new <...> token syntax is consistent with how other enumerated options (e.g., --schedule-frequency <Daily|Weekly|Hourly>) are shown in the same file.
Step 3: Validate
Run these commands in order:
dotnet build servers/Azure.Mcp.Server/ — confirms the server project compiles cleanly
dotnet build tools/Azure.Mcp.Tools.AzureBackup/src/ — confirms the toolset compiles
dotnet test tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/ --filter "TestType!=Live" — runs unit tests
.\eng\common\spelling\Invoke-Cspell.ps1 — checks spelling in updated 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.AzureBackupTriggered by: 97a665b (PR #2726) by
@shrja-msChanged files:
tools/Azure.Mcp.Tools.AzureBackup/src/Services/WorkloadTypeNormalizer.cs(added)tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectableItem/ProtectableItemListCommand.cs(modified)What Changed
PR #2726 (NEW-4) added command-level validation for
--workload-typeonazmcp azurebackup protectableitem list. An unrecognised value now returns a 400ValidationErrorwith a friendly message listing every accepted alias, instead of propagating to the service layer as a 500ArgumentException.The accepted values are defined in the new
WorkloadTypeNormalizerhelper:Gaps Found
azmcp-commands.mdshows[--workload-type <workload-type>]as an opaque placeholder for theprotectableitem listcommand — the accepted values and their aliases are not listed.azmcp-commands.mdshows--workload-type <workload-type>forpolicy createwith the same issue (both share the same alias set).e2eTestPrompts.mddoes not need a new prompt for this change (the command already exists), but theazmcp-commands.mdchange is needed so users and agents know the accepted tokens without having to trigger a validation error.Files to Update
servers/Azure.Mcp.Server/docs/azmcp-commands.mdContext
📐 Implementation Guide
This section contains step-by-step instructions for a coding agent to implement the changes described above.
Step 1: Modify files
File:
servers/Azure.Mcp.Server/docs/azmcp-commands.mdAction: Edit (two locations)
Location 1 —
azurebackup protectableitem list(around line 981):Replace:
with:
Location 2 —
azurebackup policy create(around line 863):Replace:
with:
You may also add a comment line above the usage block to clarify case-insensitivity:
# --workload-type values are case-insensitiveStep 2: Verify documentation structure
servers/Azure.Mcp.Server/docs/azmcp-commands.md— confirm eachazurebackupcommand block still renders correctly and the new<...>token syntax is consistent with how other enumerated options (e.g.,--schedule-frequency <Daily|Weekly|Hourly>) are shown in the same file.Step 3: Validate
Run these commands in order:
dotnet build servers/Azure.Mcp.Server/— confirms the server project compiles cleanlydotnet build tools/Azure.Mcp.Tools.AzureBackup/src/— confirms the toolset compilesdotnet test tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/ --filter "TestType!=Live"— runs unit tests.\eng\common\spelling\Invoke-Cspell.ps1— checks spelling in updated 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