Migrate Core tools to new tool design and remove old framework#3137
Merged
alzimmermsft merged 12 commits intoJul 23, 2026
Conversation
alzimmermsft
requested review from
a team,
HaofanLiao,
JacksonWeber,
JialinXin,
JonathanCrd,
KarishmaGhiya,
audreyttt,
chenkennt,
conniey,
g2vinay,
jairmyree,
jongio,
lzchen,
meirloichter,
rads-1996,
rajkumar-rangaraj and
xiang17
as code owners
July 22, 2026 20:25
|
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 migrates core and tool code from the legacy “option definitions / bind in command” framework to the newer attribute-driven tool design, including renaming server start concepts from Service to Server and refactoring subscription resolution to use ISubscriptionResolver for improved testability/mockability.
Changes:
- Replaced legacy option-definition/binding patterns with
[Option]/[OptionContainer]-based options and updated commands to the newerBaseCommand<TOptions, TResult>/AuthenticatedCommand<TOptions, TResult>patterns. - Renamed
ServiceStart*types/usages toServerStart*across servers, core runtime/tool loading, and tests. - Centralized/defaulted subscription resolution via
ISubscriptionResolver(including new unit tests) and removed the olderCommandHelper/GlobalOptionsframework pieces.
Reviewed changes
Copilot reviewed 163 out of 164 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/Fabric.Mcp.Tools.OneLake/tests/Fabric.Mcp.Tools.OneLake.Tests/Fabric.Mcp.Tools.OneLake.Tests.csproj | Removes direct System.CommandLine test dependency. |
| tools/Fabric.Mcp.Tools.OneLake/tests/Fabric.Mcp.Tools.OneLake.Tests/Commands/File/FileReadCommandTests.cs | Updates tests to use ServerStartOptions. |
| tools/Fabric.Mcp.Tools.OneLake/tests/Fabric.Mcp.Tools.OneLake.Tests/Commands/File/BlobGetCommandTests.cs | Updates tests to use ServerStartOptions. |
| tools/Fabric.Mcp.Tools.OneLake/src/Options/ShortcutListOptions.cs | Removes inheritance on legacy GlobalOptions. |
| tools/Fabric.Mcp.Tools.OneLake/src/Options/DataAccessRoleListOptions.cs | Removes inheritance on legacy GlobalOptions. |
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/File/FileReadCommand.cs | Updates command to use ServerStartOptions. |
| tools/Fabric.Mcp.Tools.OneLake/src/Commands/File/BlobGetCommand.cs | Updates command to use ServerStartOptions. |
| tools/Fabric.Mcp.Tools.DataFactory/tests/Fabric.Mcp.Tools.DataFactory.Tests/Fabric.Mcp.Tools.DataFactory.Tests.csproj | Removes direct System.CommandLine test dependency. |
| tools/Fabric.Mcp.Tools.Core/tests/Fabric.Mcp.Tools.Core.Tests/Fabric.Mcp.Tools.Core.Tests.csproj | Removes direct System.CommandLine test dependency. |
| tools/Azure.Mcp.Tools.SignalR/tests/Azure.Mcp.Tools.SignalR.Tests/SignalRCommandTests.cs | Removes test covering empty subscription behavior. |
| tools/Azure.Mcp.Tools.Monitor/tests/Azure.Mcp.Tools.Monitor.Tests/MonitorCommandTests.cs | Refactors tests to use primary constructor + removes manual service wiring and some invalid-input tests. |
| tools/Azure.Mcp.Tools.Marketplace/tests/Azure.Mcp.Tools.Marketplace.Tests/Product/ProductListCommandTests.cs | Removes TestEnvironment usage and simplifies arrange/act. |
| tools/Azure.Mcp.Tools.Marketplace/tests/Azure.Mcp.Tools.Marketplace.Tests/Product/ProductGetCommandTests.cs | Removes TestEnvironment usage and simplifies arrange/act. |
| tools/Azure.Mcp.Tools.IoTHub/tests/Azure.Mcp.Tools.IoTHub.UnitTests/IoTHub/IoTHubGetCommandTests.cs | Removes TestEnvironment usage and some legacy usings. |
| tools/Azure.Mcp.Tools.IoTHub/src/Commands/IoTHub/IoTHubGetCommand.cs | Removes unused System.CommandLine using. |
| tools/Azure.Mcp.Tools.IoTHub/src/Azure.Mcp.Tools.IoTHub.csproj | Uses $(RepoRoot) and removes System.CommandLine package reference. |
| tools/Azure.Mcp.Tools.Extension/tests/Azure.Mcp.Tools.Extension.Tests/ExtensionSetupTests.cs | Updates tests to use ServerStartOptions. |
| tools/Azure.Mcp.Tools.Extension/tests/Azure.Mcp.Tools.Extension.Tests/CliInstallCommandTests.cs | Removes unused System.CommandLine using. |
| tools/Azure.Mcp.Tools.Extension/tests/Azure.Mcp.Tools.Extension.Tests/CliGenerateCommandTests.cs | Removes unused System.CommandLine using. |
| tools/Azure.Mcp.Tools.Extension/src/ExtensionSetup.cs | Switches start option DI lookup to ServerStartOptions. |
| tools/Azure.Mcp.Tools.EventHubs/tests/Azure.Mcp.Tools.EventHubs.Tests/Namespace/NamespaceGetCommandTests.cs | Removes legacy option-def constant usage and uses literal --resource-group. |
| tools/Azure.Mcp.Tools.Compute/src/Services/ComputeService.cs | Updates service to depend on IOptions<ServerStartOptions>. |
| tools/Azure.Mcp.Tools.AppService/src/Commands/Webapp/WebappGetCommand.cs | Replaces legacy option-def constant in validation message. |
| tools/Azure.Mcp.Tools.AppConfig/tests/Azure.Mcp.Tools.AppConfig.Tests/assets.json | Updates recorded-test asset tag. |
| tools/Azure.Mcp.Tools.Acr/tests/Azure.Mcp.Tools.Acr.Tests/Registry/RegistryListCommandTests.cs | Removes TestEnvironment usage. |
| tools/Azure.Mcp.Tools.Acr/tests/Azure.Mcp.Tools.Acr.Tests/AcrCommandTests.cs | Removes tests around invalid/missing subscription behavior. |
| servers/Template.Mcp.Server/src/Program.cs | Renames ServiceStartCommand references to ServerStartCommand. |
| servers/Fabric.Mcp.Server/src/Program.cs | Renames ServiceStartCommand references to ServerStartCommand. |
| servers/Azure.Mcp.Server/tests/Azure.Mcp.Server.Tests/Infrastructure/CommandTypeInventoryTests.cs | Removes unused System.Threading.Tasks using. |
| servers/Azure.Mcp.Server/src/Program.cs | Renames ServiceStartCommand references to ServerStartCommand and adjusts options retrieval. |
| servers/Azure.Mcp.Server/src/GlobalUsings.cs | Removes global System.Text.Json using (explicit usings used instead). |
| servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj | Removes System.CommandLine package reference and uses $(RepoRoot) for SKILL.md include. |
| servers/Azure.Mcp.Server/docs/new-command.md | Removes System.CommandLine mentions from example using block. |
| eng/tools/ToolMetadataExporter/src/Program.cs | Fixes options binding call to non-generic .Bind(...). |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Tests/Helpers/TestHttpClientFactoryProvider.cs | Configures ServerStartOptions instead of ServiceStartOptions. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Tests/Helpers/TestEnvironment.cs | Removes TestEnvironment helper class implementation. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Services/Telemetry/TelemetryServiceTests.cs | Updates tests to use ServerStartOptions. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Extensions/CommandResultExtensionsTests.cs | Adds tests for HasOptionResult behavior. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Commands/CommandValidationExceptionTests.cs | Updates tests for BaseCommand<TOptions, TResult> and list literal usage. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Commands/BaseCommandMetadataTests.cs | Updates tests for BaseCommand<TOptions, TResult>. |
| core/Microsoft.Mcp.Core/tests/Microsoft.Mcp.Core.Tests/Areas/Server/Commands/ToolLoading/ToolLoaderTelemetryTests.cs | Updates runtime creation to use ServerStartOptions. |
| core/Microsoft.Mcp.Core/src/Services/Telemetry/TelemetryService.cs | Updates service to consume IOptions<ServerStartOptions>. |
| core/Microsoft.Mcp.Core/src/Services/ServicesJsonContext.cs | Converts serializer context to file-scoped type declaration. |
| core/Microsoft.Mcp.Core/src/Services/ProcessExecution/IExternalProcessService.cs | Adds System.Text.Json dependency for JsonElement parsing API. |
| core/Microsoft.Mcp.Core/src/Services/ProcessExecution/ExternalProcessService.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Services/Http/HttpClientFactoryConfigurator.cs | Uses ServerStartOptions to build transport-based user agent. |
| core/Microsoft.Mcp.Core/src/Services/Azure/Authentication/CustomChainedCredential.cs | Updates doc reference to ServerStartCommand. |
| core/Microsoft.Mcp.Core/src/Services/Azure/Authentication/AzureCloudConfiguration.cs | Updates options type to ServerStartOptions. |
| core/Microsoft.Mcp.Core/src/Options/SubscriptionOptions.cs | Removes legacy subscription options base type. |
| core/Microsoft.Mcp.Core/src/Options/RetryPolicyOptions.cs | Replaces legacy option-def JSON names with explicit JsonPropertyName strings. |
| core/Microsoft.Mcp.Core/src/Options/OptionTypeHandler.cs | Uses option-instance-based GetValueOrDefault(option) binding approach. |
| core/Microsoft.Mcp.Core/src/Options/OptionBinder.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Options/GlobalOptions.cs | Removes legacy global options base type. |
| core/Microsoft.Mcp.Core/src/Options/AuthMethodOptions.cs | Removes legacy auth method options helper. |
| core/Microsoft.Mcp.Core/src/Models/Option/OptionExtensions.cs | Removes legacy required/optional option helpers. |
| core/Microsoft.Mcp.Core/src/Models/Option/OptionDefinitions.cs | Removes most legacy static option definitions; retains subscription const. |
| core/Microsoft.Mcp.Core/src/Models/Option/OptionDefinition.cs | Removes legacy helpers that produced System.CommandLine.Option instances. |
| core/Microsoft.Mcp.Core/src/Models/ModelsJsonContext.cs | Updates serialized type from ToolNamesResult to ToolsListResult and file-scopes the context. |
| core/Microsoft.Mcp.Core/src/Models/HiddenCommandAttribute.cs | File-scopes attribute declaration. |
| core/Microsoft.Mcp.Core/src/Models/Command/CommandResponse.cs | Refactors ResponseResult to primary-constructor style and adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Models/Command/CommandContext.cs | Adds MCP server/progress token support on context. |
| core/Microsoft.Mcp.Core/src/Logging/FileLoggingExtensions.cs | Minor lambda simplification for logger provider registration. |
| core/Microsoft.Mcp.Core/src/Helpers/RegistryServerHelper.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Helpers/McpHelper.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Helpers/CommandHelper.cs | Removes legacy subscription helper implementation. |
| core/Microsoft.Mcp.Core/src/Helpers/AzureCliProfileHelper.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/GlobalUsings.cs | Removes global usings for System.CommandLine, System.Text.Json, and ModelContextProtocol.Server. |
| core/Microsoft.Mcp.Core/src/Extensions/ParseResultExtensions.cs | Simplifies to option-instance-based GetValueOrDefault(option) and reduces visibility. |
| core/Microsoft.Mcp.Core/src/Extensions/McpServerElicitationExtensions.cs | Adds missing explicit ModelContextProtocol.Server using. |
| core/Microsoft.Mcp.Core/src/Extensions/CommandResultExtensions.cs | Moves to option-instance-based access and reduces visibility. |
| core/Microsoft.Mcp.Core/src/CoreJsonContext.cs | File-scopes serializer context declaration. |
| core/Microsoft.Mcp.Core/src/Commands/TrimAnnotations.cs | Formatting cleanup for trim annotations. |
| core/Microsoft.Mcp.Core/src/Commands/ToolMetadataJsonConverter.cs | Adds explicit System.Text.Json using and minor formatting. |
| core/Microsoft.Mcp.Core/src/Commands/ToolMetadata.cs | Refactors metadata backing fields into init-only properties and uses field ??= caching. |
| core/Microsoft.Mcp.Core/src/Commands/JsonSourceGenerationContext.cs | Adds explicit System.Text.Json using and file-scopes context. |
| core/Microsoft.Mcp.Core/src/Commands/ICommandFactory.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Commands/IBaseCommand.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Commands/GlobalCommand.cs | Removes legacy global command base class. |
| core/Microsoft.Mcp.Core/src/Commands/ExtendedCommand.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Commands/EmptyOptions.cs | File-scopes empty options type. |
| core/Microsoft.Mcp.Core/src/Commands/CustomHelpAction.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Commands/CommandMetadataAttribute.cs | Updates doc reference to BaseCommand<TOptions, TResult>. |
| core/Microsoft.Mcp.Core/src/Commands/CommandGroup.cs | Adds explicit System.CommandLine using. |
| core/Microsoft.Mcp.Core/src/Commands/CommandFactory.cs | Adds explicit System.CommandLine + System.Text.Json usings and renames start-command detection. |
| core/Microsoft.Mcp.Core/src/Commands/CommandExtensions.cs | Adds explicit System.CommandLine/System.Text.Json and minor refactors. |
| core/Microsoft.Mcp.Core/src/Commands/BaseCommand`2.cs | Improves CommandValidationException missing-option message formatting and relocates ExceptionResult. |
| core/Microsoft.Mcp.Core/src/Commands/BaseCommand.cs | Removes duplicate ExceptionResult definition (now in BaseCommand2). |
| core/Microsoft.Mcp.Core/src/Areas/Tools/Options/ToolsListOptions.cs | Converts options to attribute-based form and changes namespace filter shape. |
| core/Microsoft.Mcp.Core/src/Areas/Tools/Options/ToolsListOptionDefinitions.cs | Removes legacy option definitions for tools listing. |
| core/Microsoft.Mcp.Core/src/Areas/Tools/Commands/ToolsListCommand.cs | Converts to BaseCommand<TOptions, TResult> and changes response payload to ToolsListResult. |
| core/Microsoft.Mcp.Core/src/Areas/Server/ServerSetup.cs | Renames server commands to ServerStartCommand/ServerInfoCommand. |
| core/Microsoft.Mcp.Core/src/Areas/Server/ServerJsonContext.cs | Adds explicit System.Text.Json using and file-scopes context. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Options/ServiceOptionDefinitions.cs | Removes legacy server option definitions. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Options/ServerStartOptions.cs | Introduces ServerStartOptions with [Option] metadata and renamed properties. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Options/ServerOptionDescriptions.cs | Adds centralized option description strings for server options. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Options/PluginTelemetryOptions.cs | Converts telemetry options to attribute-based options (no longer inherits start options). |
| core/Microsoft.Mcp.Core/src/Areas/Server/Options/PluginTelemetryOptionDefinitions.cs | Removes legacy telemetry option definitions. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Models/OAuthProtectedResourceMetadata.cs | File-scopes serializer context. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/SingleProxyToolLoader.cs | Adds explicit System.Text.Json and MCP server usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/ServerToolLoader.cs | Adds explicit System.Text.Json and MCP server usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/RegistryToolLoader.cs | Adds explicit System.Text.Json and MCP server usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/NamespaceToolLoader.cs | Updates to IOptions<ServerStartOptions> and adds explicit usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/IToolLoader.cs | Adds MCP server using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/IPluginSkillNameAllowlistProvider.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/IPluginFileReferenceAllowlistProvider.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/CompositeToolLoader.cs | Adds MCP server using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/CommandFactoryToolLoader.cs | Adds explicit System.CommandLine/System.Text.Json and MCP server usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/BaseToolLoader.cs | Adds explicit System.CommandLine/System.Text.Json and MCP server usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ServiceCollectionExtensions.cs | Updates APIs to use ServerStartOptions and new support-logging property name. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ServerInfoJsonContext.cs | Renames context to ServerInfoJsonContext and file-scopes. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ServerInfoCommand.cs | Renames ServiceInfoCommand to ServerInfoCommand and updates to BaseCommand<TOptions, TResult>. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Runtime/McpRuntime.cs | Updates to IOptions<ServerStartOptions> and simplifies subscription argument lookup. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Runtime/IMcpRuntime.cs | Adds MCP server using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/PluginTelemetryCommand.cs | Converts to BaseCommand<TOptions, TResult>, updates option binding, and support logging option name. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/OptionSchemaGenerator.cs | Adds explicit System.CommandLine/System.Text.Json usings. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/RegistryDiscoveryStrategy.cs | Updates to IOptions<ServerStartOptions>. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/IConsolidatedToolDefinitionProvider.cs | Adds explicit System.Text.Json using. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/ConsolidatedToolServerProvider.cs | Uses literal --read-only arg instead of legacy constants. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/ConsolidatedToolDiscoveryStrategy.cs | Updates to IOptions<ServerStartOptions>. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/CommandGroupServerProvider.cs | Uses literal --read-only arg instead of legacy constants. |
| core/Microsoft.Mcp.Core/src/Areas/Server/Commands/Discovery/CommandGroupDiscoveryStrategy.cs | Updates to IOptions<ServerStartOptions>. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Services/Azure/Subscription/SubscriptionResolverTests.cs | Adds unit tests for the new resolver behavior (CLI/env/placeholder precedence). |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Services/Azure/Authentication/AzureCloudConfigurationTests.cs | Updates tests to use ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Services/Azure/Authentication/AuthenticationIntegrationTests.cs | Registers ISubscriptionResolver in test DI. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/RegistryDiscoveryStrategyHelper.cs | Updates helper to use ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Helpers/CommandHelperTests.cs | Removes tests for removed legacy CommandHelper. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Subscription/SubscriptionListCommandTests.cs | Updates to SubscriptionCommandUnitTestsBase and command invocation patterns. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Subscription/SubscriptionCommandTests.cs | Updates to SubscriptionCommandUnitTestsBase and replaces env-var reliance with resolver stubbing. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ToolLoading/SingleProxyToolLoaderTests.cs | Updates tests to use ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ToolLoading/ServerToolLoaderTests.cs | Updates tests to use ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ToolLoading/PluginTelemetryCommandTests.cs | Updates logging DI type to ServerInfoCommand. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ToolLoading/NamespaceToolLoaderTests.cs | Updates tests to use ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ServiceInfoCommandTests.cs | Renames tests to ServerInfoCommand + updates JSON context. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ServiceCollectionExtensionsTests.cs | Updates tests to ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/ServiceCollectionExtensionsSerializedTests.cs | Updates tests for renamed support logging option property. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/Runtime/McpRuntimeTests.cs | Updates tests to ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/Discovery/RegistryDiscoveryStrategyTests.cs | Updates tests to ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/Discovery/ConsolidatedToolDiscoveryStrategyTests.cs | Updates tests to ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Server/Commands/Discovery/CommandGroupDiscoveryStrategyTests.cs | Updates tests to ServerStartOptions. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Group/ResourceListCommandTests.cs | Moves to SubscriptionCommandUnitTestsBase. |
| core/Azure.Mcp.Core/tests/Azure.Mcp.Core.Tests/Areas/Group/ResourceGroupListCommandTests.cs | Moves to SubscriptionCommandUnitTestsBase. |
| core/Azure.Mcp.Core/src/Services/Azure/Subscription/SubscriptionService.cs | Injects ISubscriptionResolver and uses it for default subscription ID. |
| core/Azure.Mcp.Core/src/Services/Azure/Subscription/SubscriptionResolver.cs | Moves subscription fallback logic into SubscriptionResolver (CLI/env/placeholder handling). |
| core/Azure.Mcp.Core/src/Services/Azure/Subscription/ISubscriptionResolver.cs | Refactors interface to expose specific resolver operations (default/profile/env). |
| core/Azure.Mcp.Core/src/Services/Azure/BaseAzureResourceService.cs | Adds explicit System.Text.Json using. |
| core/Azure.Mcp.Core/src/Options/RetryOptionsExtensions.cs | Removes unused usings. |
| core/Azure.Mcp.Core/src/GlobalUsings.cs | Removes global usings for System.CommandLine and System.Text.Json. |
| core/Azure.Mcp.Core/src/Commands/Subscription/SubscriptionCommand`2.cs | Post-binds subscription via resolver and trims quotes. |
| core/Azure.Mcp.Core/src/Commands/Subscription/SubscriptionCommand.cs | Removes legacy SubscriptionCommand<TOptions> base class. |
| core/Azure.Mcp.Core/src/Areas/Subscription/Options/SubscriptionListOptions.cs | Converts options to a flat [Option]-based POCO. |
| core/Azure.Mcp.Core/src/Areas/Subscription/Models/SubscriptionInfo.cs | Makes subscription info record public. |
| core/Azure.Mcp.Core/src/Areas/Subscription/Commands/SubscriptionListCommand.cs | Converts to AuthenticatedCommand<TOptions, TResult> and updates execution signature. |
| core/Azure.Mcp.Core/src/Areas/Subscription/Commands/SubscriptionJsonContext.cs | File-scopes serializer context. |
| core/Azure.Mcp.Core/src/Areas/Group/Options/ResourceListOptions.cs | Converts options to flat POCO implementing ISubscriptionOption. |
| core/Azure.Mcp.Core/src/Areas/Group/Options/BaseGroupOptions.cs | Converts options to flat POCO implementing ISubscriptionOption. |
| core/Azure.Mcp.Core/src/Areas/Group/Commands/ResourceListCommand.cs | Converts command to SubscriptionCommand<TOptions, TResult> and injects ISubscriptionResolver. |
| core/Azure.Mcp.Core/src/Areas/Group/Commands/GroupListCommand.cs | Converts command to SubscriptionCommand<TOptions, TResult> and injects ISubscriptionResolver. |
| core/Azure.Mcp.Core/src/Areas/Group/Commands/GroupJsonContext.cs | File-scopes serializer context. |
msalaman
approved these changes
Jul 22, 2026
msalaman
approved these changes
Jul 23, 2026
Iris20050110
added a commit
that referenced
this pull request
Jul 24, 2026
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?
Migrates Core tools to the new tool design and removes the previous framework for tool creation.
Additionally, updated the
servertools to useServerinstead ofServicein their class names and migrated remaining spots using static subscription resolution to usingISubscriptionResolverto enable mockability.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