Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d9c4f5c
adding first commit
Jan 12, 2026
55ad41e
Refactor option binding to use updated property names for ResourceGro…
Jan 15, 2026
f5c2e98
Refactor code structure for improved readability and maintainability
Jan 20, 2026
d7d1e05
Add unit and live tests for Azure MCP Compute tools
Jan 22, 2026
53d0bd2
Add test projects and update test assertions for VM and VMSS details
Jan 22, 2026
12c4388
Enhance VMSS command functionality with optional parameters for insta…
Jan 27, 2026
e626f39
Merge branch 'main' of https://github.com/microsoft/mcp into vm-vmss-…
Jan 27, 2026
971765a
Refactor VMSS operations and tests
Jan 27, 2026
4d3c7d3
Refactor ComputeCommandTests to use resource base names and improve s…
Jan 28, 2026
4053d07
Update CODEOWNERS to add additional owners for Compute tools
Jan 28, 2026
a2654b4
Update CODEOWNERS to correct ServiceLabel for Compute tools
Jan 28, 2026
cd3caf3
Refactor command descriptions for VM and VMSS retrieval
Jan 30, 2026
86540c8
Remove changelog entry for Azure Compute VM operations
Jan 30, 2026
af938c4
feat: Add VM creation command with workload-based defaults
Feb 3, 2026
39eadcb
feat: Enhance VM creation command with detailed authentication requir…
Feb 9, 2026
c1d6361
Merge origin/main and improve VM create SSH key handling
Feb 10, 2026
a9759cc
Add VM update and VMSS create/update commands
Feb 11, 2026
ceec41f
Add documentation, unit tests, live tests, and changelog for VM/VMSS …
Feb 11, 2026
dd31c1b
Merge remote-tracking branch 'origin/main' into haagha/vm-create
Feb 11, 2026
5ece66f
Enhance README and command descriptions for VM and VMSS updates with …
Feb 11, 2026
b1feaa4
Refactor VM and VMSS commands to use ComputeUtilities for OS type det…
Feb 11, 2026
0443d8b
Update .gitignore to include VM-specific documentation directory; rem…
Feb 12, 2026
9f39d9c
Merge remote-tracking branch 'origin/main' into haagha/vm-create
Feb 13, 2026
f8f6d61
Update test resources configuration and parameters for VM creation
Feb 13, 2026
82ba1da
chore: clean up empty code change sections in the changes log
Feb 13, 2026
21626bf
Merge remote-tracking branch 'origin/main' into haagha/vm-create
Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ eng/tools/ToolDescriptionEvaluator/prompts.json
eng/tools/ToolDescriptionEvaluator/results.md
eng/tools/ToolDescriptionEvaluator/tools.json
deploy-log.txt

# VM-specific documentation (internal/personal notes)
docs/vm-docs/
Original file line number Diff line number Diff line change
Expand Up @@ -2239,6 +2239,74 @@
"aks_nodepool_get"
]
},
{
"name": "create_azure_compute_resources",
"description": "Create Azure compute resources including Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS). Create VMs with smart workload-based defaults (development, web, database, compute, memory, gpu, general). Supports Linux and Windows with SSH key or password authentication. Create VMSS for scalable workloads with configurable instance count and upgrade policies.",
"toolMetadata": {
"destructive": {
"value": true,
"description": "This tool creates new resources which may incur costs."
},
"idempotent": {
"value": false,
"description": "Running this operation multiple times may create duplicate resources."
},
"openWorld": {
"value": false,
"description": "This tool's domain of interaction is closed and well-defined, limited to a specific set of entities."
},
"readOnly": {
"value": false,
"description": "This tool creates new Azure resources."
},
"secret": {
"value": true,
"description": "This tool handles sensitive authentication information like passwords and SSH keys."
},
"localRequired": {
"value": false,
"description": "This tool is available in both local and remote server modes."
}
},
"mappedToolList": [
"compute_vm_create",
"compute_vmss_create"
]
},
{
"name": "update_azure_compute_resources",
"description": "Update Azure compute resources including Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS). Modify VM properties like size, tags, license type, boot diagnostics, and user data. Update VMSS capacity, upgrade policy, overprovision settings, auto OS upgrade, and scale-in policies. Uses PATCH semantics - only specified properties are updated.",
"toolMetadata": {
"destructive": {
"value": true,
"description": "This tool modifies existing resources."
},
"idempotent": {
"value": true,
"description": "Running this operation multiple times with the same arguments produces the same result."
},
"openWorld": {
"value": false,
"description": "This tool's domain of interaction is closed and well-defined, limited to a specific set of entities."
},
"readOnly": {
"value": false,
"description": "This tool modifies Azure resources."
},
"secret": {
"value": false,
"description": "This tool does not handle sensitive or secret information."
},
"localRequired": {
"value": false,
"description": "This tool is available in both local and remote server modes."
}
},
"mappedToolList": [
"compute_vm_update",
"compute_vmss_update"
]
},
{
"name": "get_azure_virtual_desktop_details",
"description": "Get details about Azure Virtual Desktop resources. List host pools in subscriptions or resource groups. Retrieve session hosts (virtual machines) within host pools including their status, availability, and configuration. View active user sessions on session hosts with details such as user principal name, session state, application type, and creation time.",
Expand Down
10 changes: 8 additions & 2 deletions eng/scripts/Deploy-TestResources.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ param(
[string]$SubscriptionId,
[string]$ResourceGroupName,
[string]$BaseName,
[string]$Location,
[int]$DeleteAfterHours = 12,
[switch]$Unique,
[switch]$Parallel,
Expand Down Expand Up @@ -69,6 +70,7 @@ function Deploy-TestResources
[string]$SubscriptionName,
[string]$ResourceGroupName,
[string]$BaseName,
[string]$Location,
[int]$DeleteAfterHours,
[string]$TestResourcesDirectory,
[switch]$AsJob
Expand All @@ -81,29 +83,32 @@ Deploying$($AsJob ? ' in background job' : ''):
SubscriptionName: '$SubscriptionName'
ResourceGroupName: '$ResourceGroupName'
BaseName: '$BaseName'
Location: '$Location'
DeleteAfterHours: $DeleteAfterHours
TestResourcesDirectory: '$TestResourcesDirectory'`n
"@ -ForegroundColor Yellow

if($AsJob) {
Start-Job -ScriptBlock {
param($RepoRoot, $SubscriptionId, $ResourceGroupName, $BaseName, $testResourcesDirectory, $DeleteAfterHours, $UseHttpTransport)
param($RepoRoot, $SubscriptionId, $ResourceGroupName, $BaseName, $Location, $testResourcesDirectory, $DeleteAfterHours, $UseHttpTransport)

& "$RepoRoot/eng/common/TestResources/New-TestResources.ps1" `
-SubscriptionId $SubscriptionId `
-ResourceGroupName $ResourceGroupName `
-BaseName $BaseName `
-Location $Location `
-TestResourcesDirectory $testResourcesDirectory `
-DeleteAfterHours $DeleteAfterHours `
-UseHttpTransport:$UseHttpTransport `
-Force

} -ArgumentList $RepoRoot, $SubscriptionId, $ResourceGroupName, $BaseName, $TestResourcesDirectory, $DeleteAfterHours, $UseHttpTransport
} -ArgumentList $RepoRoot, $SubscriptionId, $ResourceGroupName, $BaseName, $Location, $TestResourcesDirectory, $DeleteAfterHours, $UseHttpTransport
} else {
& "$RepoRoot/eng/common/TestResources/New-TestResources.ps1" `
-SubscriptionId $SubscriptionId `
-ResourceGroupName $ResourceGroupName `
-BaseName $BaseName `
-Location $Location `
-TestResourcesDirectory $testResourcesDirectory `
-DeleteAfterHours $DeleteAfterHours `
-UseHttpTransport:$UseHttpTransport `
Expand All @@ -129,6 +134,7 @@ $jobInputs = $testablePaths | ForEach-Object {
SubscriptionName = $subscriptionName
ResourceGroupName = $ResourceGroupName ? $ResourceGroupName : "$accountName-mcp$($suffix)"
BaseName = $BaseName ? $BaseName : "mcp$($suffix)"
Location = $Location
DeleteAfterHours = $DeleteAfterHours
TestResourcesDirectory = Resolve-Path -Path "$RepoRoot/$_/tests"
}
Expand Down
6 changes: 6 additions & 0 deletions servers/Azure.Mcp.Server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,12 @@ Check out the remote hosting [azd templates](https://github.com/microsoft/mcp/bl
* "Get virtual machine 'my-vm' with instance view including power state and runtime status"
* "Show me the power state and provisioning status of VM 'my-vm'"
* "What is the current status of my virtual machine 'my-vm'?"
* "Create a new VM named 'my-vm' in resource group 'my-rg' for web workloads"
* "Create a Linux VM with Ubuntu 22.04 and SSH key authentication"
* "Create a development VM with Standard_B2s size in East US"
* "Update VM 'my-vm' tags to environment=production"
* "Create a VMSS named 'my-vmss' with 3 instances for web workloads"
* "Update VMSS 'my-vmss' capacity to 5 instances"

### �📦 Azure Container Apps

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
changes:
- section: "Features Added"
description: "Added Azure Compute tools for Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS). Includes VM get (list, details, instance view), VMSS get (list, details, VM instances), VM create/update with smart workload-based defaults, and VMSS create/update operations"
Loading