Skip to content

[ResilienceManagement] Onboard read-only get commands (namespace: resilience)#2948

Open
LavishSingal wants to merge 10 commits into
microsoft:mainfrom
LavishSingal:user/lsingal/get-tools-resilience
Open

[ResilienceManagement] Onboard read-only get commands (namespace: resilience)#2948
LavishSingal wants to merge 10 commits into
microsoft:mainfrom
LavishSingal:user/lsingal/get-tools-resilience

Conversation

@LavishSingal

@LavishSingal LavishSingal commented Jun 25, 2026

Copy link
Copy Markdown

What does this PR do?

Onboards the new Azure Resilience Management toolset (Azure.Mcp.Tools.ResilienceManagement, command namespace resilience) as a new Azure MCP toolset.

This is PR 1 of the rollout plan in #2894 — the read-only surface across all command groups (all get commands). It establishes the toolset plumbing end-to-end (IAreaSetup, BaseAzureResourceService, non-standard serviceGroup path-parameter handling, pagination, parameter shapes, telemetry, and test scaffolding) with zero blast radius. Authoring (create-or-update) and lifecycle/action commands follow in PR 2 and PR 3 respectively.

All commands are read-only (ReadOnly = true, Destructive = false, Idempotent = true). Each get command returns details for a named resource, or lists resources (id + name only) when the name is omitted.

Commands added:

  • Goal
    • resilience goal template get (GoalTemplates_List / GoalTemplates_Get)
    • resilience goal assignment get (GoalAssignments_List / GoalAssignments_Get)
    • resilience goal resource get (GoalResources_List / GoalResources_Get)
  • Usage Plan
    • resilience usageplan get (UsagePlans_ListBySubscription / UsagePlans_ListByResourceGroup / UsagePlans_Get)
    • resilience usageplan enrollment get (Enrollments_List / Enrollments_Get)
  • Drill
    • resilience drill get (Drills_List / Drills_Get)
    • resilience drill resource get (DrillResources_List / DrillResources_Get)
    • resilience drill run get (DrillRuns_List / DrillRuns_Get)
    • resilience drill run resource get (DrillRunResources_List / DrillRunResources_Get)
  • Recovery
    • resilience recovery plan get (RecoveryPlans_List / RecoveryPlans_Get)
    • resilience recovery plan resource get (RecoveryResources_List / RecoveryResources_Get)
    • resilience recovery job get (RecoveryJobs_List / RecoveryJobs_Get)
    • resilience recovery job resource get (RecoveryJobResources_List / RecoveryJobResources_Get)

GitHub issue number?

Part of #2894

Pre-merge Checklist

  • Required for All PRs
    • Read contribution guidelines
    • PR title clearly describes the change
    • Commit history is clean with descriptive messages (cleanup guide)
    • Added comprehensive tests for new/modified functionality
    • Created a changelog entry if the change falls among the following: new feature, bug fix, UI/UX update, breaking change, or updated dependencies. Follow the changelog entry guide
  • For MCP tool changes:
    • One tool per PR: This PR adds or modifies only one MCP tool for faster review cycles
    • Updated servers/Azure.Mcp.Server/README.md and/or servers/Fabric.Mcp.Server/README.md documentation
    • Validate README.md changes running the script ./eng/scripts/Process-PackageReadMe.ps1. See Package README
    • For new or modified tool descriptions, ran ToolDescriptionEvaluator and obtained a score of 0.4 or more and a top 3 ranking for all related test prompts
    • For tools with new names, including new tools or renamed tools, update consolidated-tools.json
    • For renamed tools, follow the Tool Rename Checklist and tag the PR with the breaking-change label
    • For new tools associated with Azure services or publicly available tools/APIs/products, add URL to documentation in the PR description
  • Extra steps for Azure MCP Server tool changes:
    • Updated command list in servers/Azure.Mcp.Server/docs/azmcp-commands.md
    • Ran ./eng/scripts/Update-AzCommandsMetadata.ps1 to update tool metadata in azmcp-commands.md (required for CI)
    • Updated test prompts in servers/Azure.Mcp.Server/docs/e2eTestPrompts.md
    • 👉 For Community (non-Microsoft team member) PRs:
      • Security review: Reviewed code for security vulnerabilities, malicious code, or suspicious activities before running tests (crypto mining, spam, data exfiltration, etc.)
      • Manual tests run: added comment /azp run mcp - pullrequest - live to run Live Test Pipeline

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR onboards the new Azure Resilience Management toolset (Azure.Mcp.Tools.ResilienceManagement, namespace resilience) into Azure MCP, providing the initial read-only (get + list) command surface across goals, usage plans, drills, and recovery resources.

Changes:

  • Adds the Azure.Mcp.Tools.ResilienceManagement toolset (service layer + models) and registers it with Azure.Mcp.Server.
  • Introduces read-only commands for goals (templates/assignments/resources), usage plans (and enrollments), drills (and runs/resources), and recovery (plans/resources/jobs).
  • Adds unit test scaffolding and updates tool consolidation + command documentation.

Reviewed changes

Copilot reviewed 64 out of 64 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/UsagePlans/UsagePlanGetCommandTests.cs Unit tests for usage plan get/list behaviors
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/UsagePlans/Enrollments/UsagePlanEnrollmentGetCommandTests.cs Unit tests for enrollment get/list behaviors
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Recovery/Plans/Resources/RecoveryResourceGetCommandTests.cs Unit tests for recovery plan member get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Recovery/Plans/RecoveryPlanGetCommandTests.cs Unit tests for recovery plan get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Recovery/Jobs/Resources/RecoveryJobResourceGetCommandTests.cs Unit tests for recovery job target get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Recovery/Jobs/RecoveryJobGetCommandTests.cs Unit tests for recovery job get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Goals/Templates/GoalTemplateGetCommandTests.cs Unit tests for goal template get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Goals/Resources/GoalResourceGetCommandTests.cs Unit tests for goal assignment member get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Goals/Assignments/GoalAssignmentGetCommandTests.cs Unit tests for goal assignment get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Drills/Runs/Resources/DrillRunResourceGetCommandTests.cs Unit tests for drill run target get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Drills/Runs/DrillRunGetCommandTests.cs Unit tests for drill run get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Drills/Resources/DrillResourceGetCommandTests.cs Unit tests for drill target get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Drills/DrillGetCommandTests.cs Unit tests for drill get/list
tools/Azure.Mcp.Tools.ResilienceManagement/tests/Azure.Mcp.Tools.ResilienceManagement.Tests/Azure.Mcp.Tools.ResilienceManagement.Tests.csproj Adds new test project for the toolset
tools/Azure.Mcp.Tools.ResilienceManagement/src/Services/ResilienceManagementService.cs Implements ARM interactions and mapping for resilience read-only operations
tools/Azure.Mcp.Tools.ResilienceManagement/src/Services/IReseilienceManagementService.cs Service interface for resilience operations
tools/Azure.Mcp.Tools.ResilienceManagement/src/ResilienceManagementSetup.cs Registers the toolset services and command group hierarchy
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/UsagePlans/UsagePlanGetOption.cs CLI options model for usage plan get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/UsagePlans/Enrollments/UsagePlanEnrollmentGetOption.cs CLI options model for enrollment get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/ResilienceManagementOptionDefinitions.cs Shared option definition for service-group
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Recovery/Plans/Resources/RecoveryResourceGetOption.cs CLI options model for recovery plan resource get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Recovery/Plans/RecoveryPlanGetOption.cs CLI options model for recovery plan get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Recovery/Jobs/Resources/RecoveryJobResourceGetOption.cs CLI options model for recovery job resource get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Recovery/Jobs/RecoveryJobGetOption.cs CLI options model for recovery job get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Goals/Templates/GoalTemplateGetOption.cs CLI options model for goal template get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Goals/Resources/GoalResourceGetOption.cs CLI options model for goal resource get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Goals/Assignments/GoalAssignmentGetOption.cs CLI options model for goal assignment get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Drills/Runs/Resources/DrillRunResourceGetOption.cs CLI options model for drill run resource get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Drills/Runs/DrillRunGetOption.cs CLI options model for drill run get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Drills/Resources/DrillResourceGetOption.cs CLI options model for drill resource get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Options/Drills/DrillGetOption.cs CLI options model for drill get/list
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/UsagePlanKind.cs Enum model for usage plan kind
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/UsagePlanInfo.cs Response model for usage plan details
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/UsagePlanEnrollmentInfo.cs Response model for enrollment details
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/ResourceSummary.cs Shared id/name list item model
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalTemplateKind.cs Enum model for goal template kind
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalTemplateInfo.cs Response model for goal template details
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalResourceInfo.cs Response model for goal member details
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalRequirement.cs Enum model for goal requirement
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalAssignmentKind.cs Enum model for goal assignment kind
tools/Azure.Mcp.Tools.ResilienceManagement/src/Models/GoalAssignmentInfo.cs Response model for goal assignment details
tools/Azure.Mcp.Tools.ResilienceManagement/src/GlobalUsings.cs Adds toolset-wide global usings
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/UsagePlans/UsagePlanGetCommand.cs Implements usage plan get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/UsagePlans/Enrollments/UsagePlanEnrollmentGetCommand.cs Implements usage plan enrollment get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/ResilienceManagementJsonContext.cs Registers JSON source-gen types for AOT
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Plans/Resources/RecoveryResourceGetCommand.cs Implements recovery plan resource get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Plans/RecoveryPlanGetCommand.cs Implements recovery plan get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Jobs/Resources/RecoveryJobResourceGetCommand.cs Implements recovery job resource get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Recovery/Jobs/RecoveryJobGetCommand.cs Implements recovery job get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Templates/GoalTemplateGetCommand.cs Implements goal template get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Resources/GoalResourceGetCommand.cs Implements goal resource get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Goals/Assignments/GoalAssignmentGetCommand.cs Implements goal assignment get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Drills/Runs/Resources/DrillRunResourceGetCommand.cs Implements drill run resource get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Drills/Runs/DrillRunGetCommand.cs Implements drill run get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Drills/Resources/DrillResourceGetCommand.cs Implements drill resource get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Commands/Drills/DrillGetCommand.cs Implements drill get/list command
tools/Azure.Mcp.Tools.ResilienceManagement/src/Azure.Mcp.Tools.ResilienceManagement.csproj Adds new toolset project + package references
tools/Azure.Mcp.Tools.ResilienceManagement/src/AssemblyInfo.cs Enables InternalsVisibleTo for tests
servers/Azure.Mcp.Server/src/Resources/consolidated-tools.json Adds a consolidated tool mapping for the resilience namespace commands
servers/Azure.Mcp.Server/src/Program.cs Registers the new ResilienceManagement area setup
servers/Azure.Mcp.Server/docs/azmcp-commands.md Documents the new resilience commands
servers/Azure.Mcp.Server/Azure.Mcp.Server.slnx Adds the toolset projects to the server solution
Microsoft.Mcp.slnx Adds the toolset projects to the repo solution
Directory.Packages.props Pins Azure.ResourceManager.ResilienceManagement dependency version

Comment on lines +56 to +60
var subscriptionId = _subscriptionService.IsSubscriptionId(subscription)
? subscription
: (await _subscriptionService.GetSubscription(subscription, tenant, retryPolicy, cancellationToken)).Data.SubscriptionId;

ArmClient armClient = await CreateArmClientAsync(tenantIdOrName: tenant, cancellationToken: cancellationToken);
Comment on lines +103 to +107
var subscriptionId = _subscriptionService.IsSubscriptionId(subscription)
? subscription
: (await _subscriptionService.GetSubscription(subscription, tenant, retryPolicy, cancellationToken)).Data.SubscriptionId;

ArmClient armClient = await CreateArmClientAsync(tenantIdOrName: tenant, cancellationToken: cancellationToken);
Comment on lines +125 to +129
var subscriptionId = _subscriptionService.IsSubscriptionId(subscription)
? subscription
: (await _subscriptionService.GetSubscription(subscription, tenant, retryPolicy, cancellationToken)).Data.SubscriptionId;

ArmClient armClient = await CreateArmClientAsync(tenantIdOrName: tenant, cancellationToken: cancellationToken);
? subscription
: (await _subscriptionService.GetSubscription(subscription, tenant, retryPolicy, cancellationToken)).Data.SubscriptionId;

ArmClient armClient = await CreateArmClientAsync(tenantIdOrName: tenant, cancellationToken: cancellationToken);
LavishSingal and others added 2 commits June 26, 2026 08:09
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

@g2vinay g2vinay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing updates in e2eTestPrompts.md

@g2vinay g2vinay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing a Changelog entry.
Follow the guidance in changelog-entries.md file to add a changelog.

@LavishSingal LavishSingal requested a review from g2vinay June 27, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

3 participants