Skip to content

Migrate Device Registry tools to new tool design#3088

Merged
alzimmermsft merged 1 commit into
microsoft:mainfrom
alzimmermsft:MigrateDeviceRegistryToolsToNewDesign
Jul 18, 2026
Merged

Migrate Device Registry tools to new tool design#3088
alzimmermsft merged 1 commit into
microsoft:mainfrom
alzimmermsft:MigrateDeviceRegistryToolsToNewDesign

Conversation

@alzimmermsft

Copy link
Copy Markdown
Contributor

What does this PR do?

Migrates Device Registry tools to new design where Register and Bind options are based on Option attributes.

GitHub issue number?

[Link to the GitHub issue this PR addresses]

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

@alzimmermsft alzimmermsft self-assigned this Jul 17, 2026
Copilot AI review requested due to automatic review settings July 17, 2026 20:49
@alzimmermsft
alzimmermsft requested review from a team as code owners July 17, 2026 20:49
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

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

Migrates the Azure.Mcp.Tools.DeviceRegistry toolset to the newer command/options pattern where CLI options are derived from [Option] / [OptionContainer] attributes, removing the legacy RegisterOptions / BindOptions and System.CommandLine dependency.

Changes:

  • Converted NamespaceListCommand to the two-generic SubscriptionCommand<TOptions, TResult> pattern and switched options binding to [Option] attributes.
  • Simplified Device Registry service/model JSON (property naming + source-gen context usage) and removed legacy option/command scaffolding (*OptionDefinitions, Base*Command, System.CommandLine global using).
  • Updated unit tests to use SubscriptionCommandUnitTestsBase for the new command shape.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tools/Azure.Mcp.Tools.DeviceRegistry/tests/Azure.Mcp.Tools.DeviceRegistry.Tests/Namespace/NamespaceListCommandTests.cs Updates command test base class/imports to align with the new subscription command pattern.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Services/Models/DeviceRegistryNamespaceData.cs Renames JSON-mapped properties and simplifies FromJson deserialization via source-gen context.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Services/DeviceRegistryService.cs Removes logger/try-catch wrapper; keeps a direct ExecuteResourceQueryAsync call and updated model mapping.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Options/Namespace/NamespaceListOptions.cs Replaces legacy base options with a flat [Option]-based options POCO.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Options/DeviceRegistryOptionDefinitions.cs Removes legacy System.CommandLine option definition for namespace.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Options/BaseDeviceRegistryOptions.cs Removes legacy base options class inheriting SubscriptionOptions.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Models/DeviceRegistryNamespaceInfo.cs Removes explicit JsonPropertyName attributes from the public response model.
tools/Azure.Mcp.Tools.DeviceRegistry/src/GlobalUsings.cs Removes System.CommandLine global using.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Commands/Namespace/NamespaceListCommand.cs Migrates command to SubscriptionCommand<TOptions, TResult> with attribute-bound options and source-gen response serialization.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Commands/DeviceRegistryJsonContext.cs Simplifies the source-gen context declaration and ensures result/model types are registered.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Commands/BaseDeviceRegistryCommand.cs Removes legacy subscription command base class.
tools/Azure.Mcp.Tools.DeviceRegistry/src/Azure.Mcp.Tools.DeviceRegistry.csproj Drops System.CommandLine package reference and adjusts the core project reference.
servers/Azure.Mcp.Server/changelog-entries/1784321301060.yaml Adds a changelog entry for the Device Registry toolset change.

Comment thread servers/Azure.Mcp.Server/changelog-entries/1784321301060.yaml
@alzimmermsft
alzimmermsft merged commit f136e51 into microsoft:main Jul 18, 2026
25 checks passed
@alzimmermsft
alzimmermsft deleted the MigrateDeviceRegistryToolsToNewDesign branch July 18, 2026 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants