Make common methods in BaseCommand public instead of private - #3216
Open
Alan Zimmer (alzimmermsft) wants to merge 1 commit into
Open
Make common methods in BaseCommand public instead of private#3216Alan Zimmer (alzimmermsft) wants to merge 1 commit into
Alan Zimmer (alzimmermsft) wants to merge 1 commit into
Conversation
Alan Zimmer (alzimmermsft)
requested review from
a team,
Jackson Weber (JacksonWeber),
Jonathan Cárdenas (JonathanCrd),
Achyuth Maddala Sitaram (achyuth-ms),
Audrey Toney (audreyttt),
Connie Yau (conniey),
Daniel Dror (danield137),
Ji Wang (ericshape),
Vinay Gera (g2vinay),
Jeremy Frosti (jeremyfrosti),
Leighton Chen (lzchen),
meirloichter,
msalaman,
paul1904 (prvavill),
Radhika Gupta (rads-1996),
Rajkumar Rangaraj (rajkumar-rangaraj),
Vladimir Stoayanov (vladimisms) and
xiang17
as code owners
August 5, 2026 13:14
|
Azure Pipelines: Successfully started running 1 pipeline(s). There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR standardizes error-handling API visibility across the command framework by making BaseCommand exception-handling hooks callable publicly, and updates downstream command implementations, tests, and documentation to match the new signatures.
Changes:
- Makes
BaseCommanderror-handling methods (GetErrorMessage,GetStatusCode,HandleException) public and updates derived overrides accordingly across multiple toolsets. - Updates unit tests to stop using reflection/test-only wrappers and call the now-public methods directly.
- Updates authoring docs (
AGENTS.md, new-command guidance, and the add-tool skill doc) to reflect the new public override pattern.
Reviewed changes
Copilot reviewed 95 out of 95 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/Item/OneLakeItemListDfsCommand.cs | Updates error handling overrides to public override. |
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/Item/OneLakeItemListCommand.cs | Updates error handling overrides to public override. |
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/Item/OneLakeItemDataListCommand.cs | Updates error handling overrides to public override. |
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/File/DirectoryCreateCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.VirtualDesktop/src/Commands/SessionHost/SessionHostUserSessionListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.VirtualDesktop/src/Commands/SessionHost/SessionHostListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Storage/src/Commands/Account/AccountCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Server/ServerGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Server/ServerDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Server/ServerCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/FirewallRule/FirewallRuleListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/FirewallRule/FirewallRuleDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/FirewallRule/FirewallRuleCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/EntraAdmin/EntraAdminListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/ElasticPool/ElasticPoolListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Database/DatabaseUpdateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Database/DatabaseRenameCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Database/DatabaseGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Database/DatabaseDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Sql/src/Commands/Database/DatabaseCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Speech/src/Commands/Tts/TtsSynthesizeCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.Speech/src/Commands/Stt/SttRecognizeCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ServiceFabric/src/Commands/ManagedCluster/ManagedClusterNodeTypeRestartCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ServiceFabric/src/Commands/ManagedCluster/ManagedClusterNodeGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ServiceBus/src/Commands/Topic/TopicDetailsCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ServiceBus/src/Commands/Topic/SubscriptionPeekCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ServiceBus/src/Commands/Topic/SubscriptionDetailsCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ServiceBus/src/Commands/Queue/QueuePeekCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ServiceBus/src/Commands/Queue/QueueDetailsCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ResourceHealth/src/Commands/BaseResourceHealthCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ResourceHealth/src/Commands/AvailabilityStatus/AvailabilityStatusGetCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/UsagePlans/UsagePlanGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/UsagePlans/Enrollments/UsagePlanEnrollmentGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Plans/Resources/RecoveryResourceGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Plans/RecoveryPlanGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Jobs/Resources/RecoveryJobResourceGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Jobs/RecoveryJobGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Templates/GoalTemplateGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Resources/GoalResourceGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Assignments/GoalAssignmentGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Policy/src/Commands/Assignment/PolicyAssignmentListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Monitor/src/Commands/ActivityLog/ActivityLogListCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.Marketplace/src/Commands/Product/ProductListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Marketplace/src/Commands/Product/ProductGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Kusto/src/Commands/ClusterGetCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.FunctionApp/src/Commands/FunctionApp/FunctionAppGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.EventGrid/src/Commands/Events/EventsPublishCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.DeviceRegistry/src/Commands/Namespace/NamespaceListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Deploy/src/Commands/Architecture/DiagramGenerateCommand.cs | Updates GetStatusCode override visibility to public. |
| tools/Azure.Mcp.Tools.Cosmos/src/Commands/BaseCosmosCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vmss/VmssUpdateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vmss/VmssGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vmss/VmssDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vmss/VmssCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmUpdateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmPowerStateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Vm/VmCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Disk/DiskUpdateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Disk/DiskGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Disk/DiskDeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Compute/src/Commands/Disk/DiskCreateCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.AzureTerraform/src/Commands/AzApiDocsGetCommand.cs | Updates GetStatusCode override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Vault/VaultUpdateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Vault/VaultGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Vault/VaultCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Security/SecurityConfigureMuaCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Security/SecurityConfigureEncryptionCommand.cs | Updates error handling overrides to public override. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/RecoveryPoint/RecoveryPointGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectedItem/ProtectedItemUndeleteCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectedItem/ProtectedItemProtectCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectedItem/ProtectedItemGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectableItem/ProtectableItemListCommand.cs | Removes redundant custom error message override (falls back to base). |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Policy/PolicyUpdateCommand.cs | Updates GetErrorMessage override visibility; removes custom status code override. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Policy/PolicyGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Policy/PolicyCreateCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Job/JobGetCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Governance/GovernanceImmutabilityCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Governance/GovernanceFindUnprotectedCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/DisasterRecovery/DisasterRecoveryEnableCrrCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/src/Commands/Backup/BackupStatusCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.AzureBackup/docs/architecture.md | Updates docs snippet for public overrides. |
| tools/Azure.Mcp.Tools.Advisor/src/Commands/Recommendation/RecommendationTypeListCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Advisor/src/Commands/Recommendation/RecommendationSummaryCommand.cs | Updates GetErrorMessage override visibility to public. |
| tools/Azure.Mcp.Tools.Advisor/src/Commands/Recommendation/RecommendationListCommand.cs | Updates GetErrorMessage override visibility to public. |
| servers/Azure.Mcp.Server/docs/new-command.md | Updates new-command guidance for public error-handling overrides and base methods. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Commands/CommandValidationExceptionTests.cs | Updates tests to call public HandleException directly. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Commands/AuthenticatedCommandTests.cs | Updates tests to call public GetErrorMessage / GetStatusCode directly. |
| core/Microsoft.Mcp.Core/src/Commands/BaseCommand`2.cs | Makes core error handling methods public; adjusts exception result type. |
| core/Microsoft.Mcp.Core/src/Commands/AuthenticatedCommand`2.cs | Updates overrides to match new public base signatures. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ServerStartCommand.cs | Updates GetErrorMessage override visibility to public. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/ServiceStartCommandTests.cs | Removes reflection helper methods; uses public APIs directly. |
| AGENTS.md | Updates guidance/examples to use public overrides and HttpStatusCode return types. |
| .github/skills/add-azure-mcp-tools/SKILL.md | Updates skill documentation examples for public overrides/base methods. |
| } | ||
|
|
||
| protected virtual void HandleException(CommandContext context, Exception ex) | ||
| public void HandleException(CommandContext context, Exception ex) |
| } | ||
|
|
||
| public record ExceptionResult(string Message, string? StackTrace, string Type); | ||
| public sealed record ExceptionResult(string Message, string? StackTrace, string Type); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Small change to standardize API scoping in
BaseCommandmethods, making the exception handling methodspublicinstead ofprotected.GitHub issue number?
[Link to the GitHub issue this PR addresses]Pre-merge Checklist
servers/Azure.Mcp.Server/README.mdand/orservers/Fabric.Mcp.Server/README.mddocumentationREADME.mdchanges running the script./eng/scripts/Process-PackageReadMe.ps1. See Package READMEToolDescriptionEvaluatorand obtained a score of0.4or more and a top 3 ranking for all related test promptsconsolidated-tools.jsonbreaking-changelabelservers/Azure.Mcp.Server/docs/azmcp-commands.md./eng/scripts/Update-AzCommandsMetadata.ps1to update tool metadata inazmcp-commands.md(required for CI)servers/Azure.Mcp.Server/docs/e2eTestPrompts.mdcrypto mining, spam, data exfiltration, etc.)/azp run mcp - pullrequest - liveto run Live Test Pipeline