-
Notifications
You must be signed in to change notification settings - Fork 357
Migrate Cloud Architect Tool from @azure to az mcp server #890
Conversation
There was a problem hiding this comment.
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 migrates and adds the Cloud Architect tool from the @Azure repository to the Azure MCP server. The tool helps users design Azure cloud architectures through guided questions by collecting requirements and providing architecture recommendations.
- Adds a new
cloudarchitectarea with guided architecture design functionality - Implements comprehensive service layer for generating component recommendations based on workload types
- Provides detailed architecture design output including security, cost optimization, and deployment considerations
Reviewed Changes
Copilot reviewed 32 out of 32 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| areas/cloudarchitect/src/AzureMcp.CloudArchitect/* | Core implementation of the Cloud Architect tool with services, commands, models, and options |
| areas/cloudarchitect/tests/* | Unit tests for the design command functionality |
| core/src/AzureMcp.Cli/Program.cs | Registration of the new CloudArchitect area setup |
| docs/azmcp-commands.md | Documentation for the new cloudarchitect design command |
| e2eTests/e2eTestPrompts.md | Test prompt for the new tool |
| README.md | Updated feature list to include Cloud Architect |
| CHANGELOG.md | Added entry for the new command |
| AzureMcp.sln | Project references for the new area |
| .vscode/cspell.json | Added cloudarchitecture to dictionary |
Comments suppressed due to low confidence (4)
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/CloudArchitectJsonContext.cs:10
- The class name
AzureCloudArchitectJsonContextis inconsistent with the naming pattern used in the project. Based on the file in the rootCloudArchitectJsonContext.cs, it should be namedCloudArchitectJsonContextto maintain consistency.
[JsonSerializable(typeof(List<string>))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
internal partial class AzureCloudArchitectJsonContext : JsonSerializerContext
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/CloudArchitectJsonContext.cs:8
- This JSON context only includes
List<string>but the mainCloudArchitectJsonContext.csfile includes more comprehensive types likeArchitectureDesign,DesignCommandResult, etc. Consider consolidating these contexts or ensuring this one includes all necessary types for the commands area.
[JsonSerializable(typeof(List<string>))]
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/Design/DesignCommand.cs:84
- The code references
CloudArchitectJsonContext.Default.ListStringbut the actual JSON context class in the Commands folder is namedAzureCloudArchitectJsonContext. This will cause a compilation error.
context.Response.Results = ResponseResult.Create(new List<string> { designArchitecture }, CloudArchitectJsonContext.Default.ListString);
CHANGELOG.md:9
- The markdown link syntax is incorrect. It should be
[#890](https://github.com/Azure/azure-mcp/pull/890)with parentheses instead of square brackets around the URL.
- Added new command for designing Azure Cloud Architecture through guided questions. [[#890]https://github.com/Azure/azure-mcp/pull/890]
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/Design/DesignCommand.cs
Outdated
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/Design/DesignCommand.cs
Outdated
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Resources/azure-architecture-design.txt
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Resources/azure-architecture-design.txt
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Resources/azure-architecture-design.txt
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Services/CloudArchitectService.cs
Outdated
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Services/CloudArchitectService.cs
Outdated
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Resources/azure-architecture-design.txt
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Resources/azure-architecture-design.txt
Show resolved
Hide resolved
joshfree
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add the missing entry to ./github/CODEOWNERS for these new directories. Also see the CONTRIBUTING.md guide for MSFT FTE -- you'll need to also add the missing github issue label for the new area-* /cc @vcolin7 who may be able to help here
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Commands/Design/DesignCommand.cs
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Options/ArchitectureDesignRequirements.cs
Show resolved
Hide resolved
areas/cloudarchitect/src/AzureMcp.CloudArchitect/Options/CloudArchitectOptionDefinitions.cs
Show resolved
Hide resolved
|
LGTM! Thanks for adding this tool, @msalaman ! |
Created github issue label and updated code owners file
What does this PR do?
Added Cloud Architect tool that helps user design Azure cloud architectures through guided questions
The tool description instructs the language model on how to go about collecting the user's requirements, how to reach a sufficient level of detail in those requirements, and how to determine when the process of collecting information is complete. It also tasks the LM with reflecting on the information it has to determine the next question it should ask.
Meanwhile, the shape of the input parameters to the tool effectively constrains what sort of information can be incorporated into the design and keeps the LM focused. The tool implementation itself does little more than restate the information the LM has already provided and prompts it to move forward with either the next question or, if it is out of questions, to create a design with the accumulated requirements.
The core implementation of this tool is copied from
@azureGithub Copilot for Azure repoGitHub issue number?
[Link to the GitHub issue this PR addresses]Pre-merge Checklist
CHANGELOG.mdfor product changes (features, bug fixes, UI/UX, updated dependencies).\eng\common\spelling\Invoke-Cspell.ps1README.mddocumentation/docs/azmcp-commands.md/e2eTests/e2eTestPrompts.mdeng/tools/ToolDescriptionConfidenceScoretool and obtained a result >= 0.4crypto mining, spam, data exfiltration, etc.)/azp run azure - mcpto run Live Test Pipeline