diff --git a/eng/dnx/README.md b/eng/dnx/README.md new file mode 100644 index 000000000..0e281804f --- /dev/null +++ b/eng/dnx/README.md @@ -0,0 +1,37 @@ +# How the .NET Tool packaging process works + +Much like the [npm packages](https://github.com/azure/azure-mcp/blob/main/eng/npm/README.md), the Azure MCP server is published as a .NET Tool that supports specific platforms. This feature is new as of [.NET 10 preview 6](https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview6/sdk.md#platform-specific-net-tools). + +To make platform-specific .NET Tools work, it is necessary to publish + +* a platform-agnostic tool that contains a manifest with all supported platform-specific tool packages +* N different platform-specific tool packages + +In .NET 10, all of the orchestration required to generate these is contained in three gestures +* Setting relevant `` values in the project file +* Setting the `` property to `true` in the project file +* building the packages with `dotnet pack` + +As long as the application is not using AOT, this single gesture will create all of the required NuGet packages, which can then be published to feeds as necessary. + +## Supporting AOT packages + +The .NET Tools feature does support AOT platform-specific packages (aka setting `` to true in the project file), but because the .NET Toolchain does not support cross-platform AOT compilation, the individual platform-specific packages must be built on each platform, often through a CI/CD system's ability to matrix across platforms. In this case, the command to build the platform-specific packages would be + +``` +dotnet pack -r +``` + +In most cases, you can rely on the .NET SDK to fill in the appropriate RID for the current host by using + +``` +dotnet pack --use-current-runtime +``` + +In addition, you will need to create the 'wrapper' package separately via the following command: + +``` +dotnet pack +``` + +Once you have all N packages you can publish them to feeds as you would any package. \ No newline at end of file diff --git a/eng/images/VisualStudioCodeUI.png b/eng/images/VisualStudioCodeUI.png deleted file mode 100644 index b9bfea6fd..000000000 Binary files a/eng/images/VisualStudioCodeUI.png and /dev/null differ diff --git a/eng/images/microsofticon.png b/eng/images/microsofticon.png deleted file mode 100644 index 36963e9c5..000000000 Binary files a/eng/images/microsofticon.png and /dev/null differ diff --git a/eng/npm/README.md b/eng/npm/README.md new file mode 100644 index 000000000..59e6d8cb7 --- /dev/null +++ b/eng/npm/README.md @@ -0,0 +1,452 @@ +# Azure MCP NPM Package + +The Azure MCP Server implements the [MCP specification](https://modelcontextprotocol.io) to create a seamless connection between AI agents and Azure services. With [@azure/mcp npm package](https://www.npmjs.com/package/@azure/mcp) you can easily bring the power of Model Context Protocol (MCP) to your Azure projects. + +The `@azure/mcp` is a platform-agnostic wrapper that automatically detects your system architecture and loads the appropriate native package (`@azure/mcp-win32-x64`, `@azure/mcp-darwin-arm64`, etc.). It contains only `index.js`, which handles platform detection and forwards CLI arguments to the correct platform-specific implementation. + +## Table of Contents +- [Overview](#overview) +- [Getting Started](#getting-started) +- [What can you do with the Azure MCP Server?](#what-can-you-do-with-the-azure-mcp-server) +- [Complete List of Supported Azure Services](#complete-list-of-supported-azure-services) +- [Documentation](#documentation) +- [Feedback & Support](#feedback--support) +- [Contributing](#contributing) +- [License](#license) + +## Overview + +**Azure MCP Server** adds smart, context-aware AI tools right inside VS Code to help you work more efficiently with Azure resources. The Azure MCP Server supercharges your agents with Azure context across **30+ different Azure services**. + +## Getting Started + +Follow these simple steps to start using Azure MCP in an IDE of your choice. You can add the following to the mcp.json: + +1. **Install the package** + +You can install the latest version of the @azure/mcp package + ```json + { + "servers": { + "azure-mcp-server": { + "command": "npx", + "args": [ + "-y", + "@azure/mcp@latest", + "server", + "start" + ] + } + } +} +``` +Alternatively, you can also install a targeted version of the @azure/mcp package + +```json +{ + "servers": { + "azure-mcp-server": { + "command": "npx", + "args": [ + "-y", + "@azure/mcp@", + "server", + "start" + ] + } + } +} +``` + +2. **Start (or Auto-Start) the MCP Server** + + #### **Manual Start (through mcp.json)** + 1. Click Start Server button above the name of the mcp server listed in mcp.json + [Start Server tooltip in mcp.json](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/StartServerMcpJson.png) + + #### **Manual Start (through VS Code IDE)** + 1. Open Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). + 2. Run `MCP: List Servers`. + + ![List Servers](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/ListServers.png) + + 3. Select the name of the server (As defined in the mcp.json), then click **Start Server**. + + ![Select Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/SelectServer.png) + ![Start Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/StartServer.png) + + > **VS Code (version 1.103 or above):** You can now configure MCP servers to start automatically using the `chat.mcp.autostart` setting, instead of manually restarting them after configuration changes. + + #### **Enable Autostart** + 1. Open **Settings** in VS Code. + 2. Search for `chat.mcp.autostart`. + 3. Select **newAndOutdated** to automatically start MCP servers without manual refresh. + 4. You can also set this from the **refresh icon tooltip** in the Chat view, which also shows which servers will auto-start. +![VS Code MCP Autostart Tooltip](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/ToolTip.png) + +3. **Check Output for MCP server** + - Go to the **Output** tab in VS Code. + - Look for log messages confirming the server started successfully. + +![Output](https://raw.githubusercontent.com/microsoft/mcp/main/eng/npm/resources/Walkthrough/McpJsonOutput.png) + +Youโ€™re all set! Azure MCP Server is now ready to help you work smarter with Azure resources in VS Code. + +## What can you do with the Azure MCP Server? + +Here are some cool prompts you can try across our supported Azure services: + +### ๐Ÿงฎ Azure AI Foundry + +* List Azure Foundry models +* Deploy foundry models +* List foundry model deployments +* List knowledge indexes +* Get knowledge index schema configuration + +### ๐Ÿ”Ž Azure AI Search + +* "What indexes do I have in my Azure AI Search service 'mysvc'?" +* "Let's search this index for 'my search query'" + +### โš™๏ธ Azure App Configuration + +* "List my App Configuration stores" +* "Show my key-value pairs in App Config" + +### ๐Ÿ“ฆ Azure Container Registry (ACR) + +* "List all my Azure Container Registries" +* "Show me my container registries in the 'myproject' resource group" +* "List all my Azure Container Registry repositories" + +### โ˜ธ๏ธ Azure Kubernetes Service (AKS) + +* "List my AKS clusters in my subscription" +* "Show me all my Azure Kubernetes Service clusters" + +### ๐Ÿ“Š Azure Cosmos DB + +* "Show me all my Cosmos DB databases" +* "List containers in my Cosmos DB database" + +### ๐Ÿงฎ Azure Data Explorer + +* "Get Azure Data Explorer databases in cluster 'mycluster'" +* "Sample 10 rows from table 'StormEvents' in Azure Data Explorer database 'db1'" + +### โšก Azure Managed Lustre + +* "List the Azure Managed Lustre clusters in resource group 'my-resourcegroup'" +* "How many IP Addresses I need to create a 128 TiB cluster of AMLFS 500?" + +### ๐Ÿ“Š Azure Monitor + +* "Query my Log Analytics workspace" + +### ๐Ÿ”ง Azure Resource Management + +* "List my resource groups" +* "List my Azure CDN endpoints" +* "Help me build an Azure application using Node.js" + +### ๐Ÿ—„๏ธ Azure SQL Database + +* "Show me details about my Azure SQL database 'mydb'" +* "List all databases in my Azure SQL server 'myserver'" +* "List all firewall rules for my Azure SQL server 'myserver'" +* "List all elastic pools in my Azure SQL server 'myserver'" +* "List Active Directory administrators for my Azure SQL server 'myserver'" + +### ๐Ÿ’พ Azure Storage + +* "List my Azure storage accounts" +* "Get details about my storage account 'mystorageaccount'" +* "Create a new storage account in East US with Data Lake support" +* "Show me the tables in my Storage account" +* "Get details about my Storage container" +* "Upload my file to the blob container" +* "List paths in my Data Lake file system" +* "List files and directories in my File Share" +* "Send a message to my storage queue" + +## ๐Ÿ› ๏ธ Currently Supported Tools + +
+The Azure MCP Server provides tools for interacting with the following Azure services + +### ๐Ÿ”Ž Azure AI Search (search engine/vector database) + +* List Azure AI Search services +* List indexes and look at their schema and configuration +* Query search indexes + +### โš™๏ธ Azure App Configuration + +* List App Configuration stores +* Manage key-value pairs +* Handle labeled configurations +* Lock/unlock configuration settings + +### ๐Ÿ›ก๏ธ Azure Best Practices + +* Get secure, production-grade Azure SDK best practices for effective code generation. + +### ๐Ÿ“ฆ Azure Container Registry (ACR) + +* List Azure Container Registries and repositories in a subscription +* Filter container registries and repositories by resource group +* JSON output formatting +* Cross-platform compatibility + +### ๐Ÿ“Š Azure Cosmos DB (NoSQL Databases) + +* List Cosmos DB accounts +* List and query databases +* Manage containers and items +* Execute SQL queries against containers + +### ๐Ÿงฎ Azure Data Explorer + +* List Azure Data Explorer clusters +* List databases +* List tables +* Get schema for a table +* Sample rows from a table +* Query using KQL + +### ๐Ÿฌ Azure Database for MySQL - Flexible Server + +* List and query databases. +* List and get schema for tables. +* List, get configuration and get parameters for servers. + +### ๐Ÿ˜ Azure Database for PostgreSQL - Flexible Server + +* List and query databases. +* List and get schema for tables. +* List, get configuration and get/set parameters for servers. + +### ๐Ÿš€ Azure Deploy + +* Generate Azure service architecture diagrams from source code +* Create a deploy plan for provisioning and deploying the application +* Get the application service log for a specific azd environment +* Get the bicep or terraform file generation rules for an application +* Get the GitHub pipeline creation guideline for an application + +### ๐Ÿ“ฃ Azure Event Grid + +* "List all Event Grid topics in subscription 'my-subscription'" +* "Show me the Event Grid topics in my subscription" +* "List all Event Grid topics in resource group 'my-resourcegroup' in my subscription" + +### โ˜๏ธ Azure Function App + +* List Azure Function Apps +* Get details for a specific Function App + +### ๐Ÿ”‘ Azure Key Vault + +* List, create, and import certificates +* List and create keys +* List and create secrets + +### โ˜ธ๏ธ Azure Kubernetes Service (AKS) + +* List Azure Kubernetes Service clusters + +### ๐Ÿ“ฆ Azure Load Testing + +* List, create load test resources +* List, create load tests +* Get, list, (create) run and rerun, update load test runs + + +### ๐Ÿš€ Azure Managed Grafana + +* List Azure Managed Grafana + +### โšก Azure Managed Lustre + +* List Azure Managed Lustre filesystems +* Get the number of IP addresses required for a specific SKU and size of Azure Managed Lustre filesystem + +### ๐Ÿช Azure Marketplace + +* Get details about Marketplace products + +### ๐Ÿ“ˆ Azure Monitor + +#### Log Analytics + +* List Log Analytics workspaces +* Query logs using KQL +* List available tables + +#### Health Models + +* Get health of an entity + +#### Metrics + +* Query Azure Monitor metrics for resources with time series data +* List available metric definitions for resources + +### ๐Ÿฅ Azure Service Health + +* Get the availability status for a specific resource +* List availability statuses for all resources in a subscription or resource group + +### โš™๏ธ Azure Native ISV Services + +* List Monitored Resources in a Datadog Monitor + +### ๐Ÿ›ก๏ธ Azure Quick Review CLI Extension + +* Scan Azure resources for compliance related recommendations + +### ๐Ÿ“Š Azure Quota + +* List available regions +* Check quota usage + +### ๐Ÿ”ด Azure Redis Cache + +* List Redis Cluster resources +* List databases in Redis Clusters +* List Redis Cache resources +* List access policies for Redis Caches + +### ๐Ÿ—๏ธ Azure Resource Groups + +* List resource groups + +### ๐ŸŽญ Azure Role-Based Access Control (RBAC) + +* List role assignments + +### ๐ŸšŒ Azure Service Bus + +* Examine properties and runtime information about queues, topics, and subscriptions + +### ๐Ÿ—„๏ธ Azure SQL Database + +* Show database details and properties +* List the details and properties of all databases +* List SQL server firewall rules + +### ๐Ÿ—„๏ธ Azure SQL Elastic Pool + +* List elastic pools in SQL servers + +### ๐Ÿ—„๏ธ Azure SQL Server + +* List Microsoft Entra ID administrators for SQL servers + +### ๐Ÿ’พ Azure Storage + +* List and create Storage accounts +* Get detailed information about specific Storage accounts +* Manage blob containers and blobs +* Upload files to blob containers +* List and query Storage tables +* List paths in Data Lake file systems +* Get container properties and metadata +* List files and directories in File Shares + +### ๐Ÿ“‹ Azure Subscription + +* List Azure subscriptions + +### ๐Ÿ—๏ธ Azure Terraform Best Practices + +* Get secure, production-grade Azure Terraform best practices for effective code generation and command execution + +### ๐Ÿ–ฅ๏ธ Azure Virtual Desktop + +* List Azure Virtual Desktop host pools +* List session hosts in host pools +* List user sessions on a session host + +### ๐Ÿ“Š Azure Workbooks + +* List workbooks in resource groups +* Create new workbooks with custom visualizations +* Update existing workbook configurations +* Get workbook details and metadata +* Delete workbooks when no longer needed + +### ๐Ÿ—๏ธ Bicep + +* Get the Bicep schema for specific Azure resource types + +### ๐Ÿ—๏ธ Cloud Architect + +* Design Azure cloud architectures through guided questions + +
+ +For the complete list of supported services and sample prompts, see our [full documentation](https://github.com/microsoft/mcp/blob/main/README.md#-what-can-you-do-with-the-azure-mcp-server). + +## Complete List of Supported Azure Services + +The Azure MCP Server provides tools for interacting with **30+ Azure service areas**: + +- ๐Ÿงฎ **Azure AI Foundry** - AI model management, AI model deployment, and knowledge index management +- ๐Ÿ”Ž **Azure AI Search** - Search engine/vector database operations +- โš™๏ธ **Azure App Configuration** - Configuration management +- ๐Ÿ›ก๏ธ **Azure Best Practices** - Secure, production-grade guidance +- ๐Ÿ“ฆ **Azure Container Registry (ACR)** - Container registry management +- ๐Ÿ“Š **Azure Cosmos DB** - NoSQL database operations +- ๐Ÿงฎ **Azure Data Explorer** - Analytics queries and KQL +- ๐Ÿฌ **Azure Database for MySQL** - MySQL database management +- ๐Ÿ˜ **Azure Database for PostgreSQL** - PostgreSQL database management +- ๐Ÿ“Š **Azure Event Grid** - Event routing and management +- โšก **Azure Functions** - Function App management +- ๐Ÿ”‘ **Azure Key Vault** - Secrets, keys, and certificates +- โ˜ธ๏ธ **Azure Kubernetes Service (AKS)** - Container orchestration +- ๐Ÿ“ฆ **Azure Load Testing** - Performance testing +- ๐Ÿš€ **Azure Managed Grafana** - Monitoring dashboards +- ๐Ÿ—ƒ๏ธ **Azure Managed Lustre** - High-performance Lustre filesystem operations +- ๐Ÿช **Azure Marketplace** - Product discovery +- ๐Ÿ“ˆ **Azure Monitor** - Logging, metrics, and health monitoring +- โš™๏ธ **Azure Native ISV Services** - Third-party integrations +- ๐Ÿ›ก๏ธ **Azure Quick Review CLI** - Compliance scanning +- ๐Ÿ“Š **Azure Quota** - Resource quota and usage management +- ๐ŸŽญ **Azure RBAC** - Access control management +- ๐Ÿ”ด **Azure Redis Cache** - In-memory data store +- ๐Ÿ—๏ธ **Azure Resource Groups** - Resource organization +- ๐Ÿ—„๏ธ **Azure SQL Database** - Relational database management +- ๐Ÿ—„๏ธ **Azure SQL Elastic Pool** - Database resource sharing +- ๐Ÿ—„๏ธ **Azure SQL Server** - Server administration +- ๐ŸšŒ **Azure Service Bus** - Message queuing +- ๐Ÿฅ **Azure Service Health** - Resource health status and availability +- ๐Ÿ’พ **Azure Storage** - Blob storage +- ๐Ÿ“‹ **Azure Subscription** - Subscription management +- ๐Ÿ—๏ธ **Azure Terraform Best Practices** - Infrastructure as code guidance +- ๐Ÿ–ฅ๏ธ **Azure Virtual Desktop** - Virtual desktop infrastructure +- ๐Ÿ“Š **Azure Workbooks** - Custom visualizations +- ๐Ÿ—๏ธ **Bicep** - Azure resource templates +- ๐Ÿ—๏ธ **Cloud Architect** - Guided architecture design + +## Documentation + +- See our [official documentation on learn.microsoft.com](https://learn.microsoft.com/azure/developer/azure-mcp-server/) to learn how to use the Azure MCP Server to interact with Azure resources through natural language commands from AI agents and other types of clients. +- For additional command documentation and examples, see our [GitHub repository section on Azure MCP Commands](https://github.com/microsoft/mcp/blob/main/docs/azmcp-commands.md). + + +## Feedback & Support + +- Check the [Troubleshooting guide](https://aka.ms/azmcp/troubleshooting) to diagnose and resolve common issues with the Azure MCP Server. +- We're building this in the open. Your feedback is much appreciated, and will help us shape the future of the Azure MCP server. + - ๐Ÿ‘‰ Open an issue in the public [GitHub repository](https://github.com/microsoft/mcp/issues) โ€” weโ€™d love to hear from you! + +## Contributing + +Want to contribute? +Check out our [contribution guide](https://github.com/microsoft/mcp/blob/main/CONTRIBUTING.md) to get started. + +## License + +This project is licensed under the [MIT License](https://github.com/microsoft/mcp/blob/main/LICENSE). diff --git a/eng/scripts/Pack-Npm.ps1 b/eng/scripts/Pack-Npm.ps1 index 7931163cf..e55e9d283 100644 --- a/eng/scripts/Pack-Npm.ps1 +++ b/eng/scripts/Pack-Npm.ps1 @@ -13,7 +13,6 @@ $RepoRoot = $RepoRoot.Path.Replace('\', '/') $wrapperSourcePath = "$RepoRoot/eng/npm/wrapper" $platformSourcePath = "$RepoRoot/eng/npm/platform" -$readMeProcessingScript = "$RepoRoot/eng/scripts/Process-PackageReadMe.ps1" if(!$ArtifactsPath) { $ArtifactsPath = "$RepoRoot/.work/build" @@ -92,9 +91,7 @@ try { Write-Warning "Executable permissions are not set when packing on a Windows agent." } - & $readMeProcessingScript -InputReadMePath "$serverDirectory/README.md" ` - -OutputDirectory $tempFolder -PackageType "npm" -InsertPayload @{ ToolTitle = 'NPM Package' } - + Copy-Item -Path "$serverDirectory/README.md" -Destination $tempFolder -Force Copy-Item -Path "$RepoRoot/LICENSE" -Destination $tempFolder -Force Copy-Item -Path "$RepoRoot/NOTICE.txt" -Destination $tempFolder -Force Write-Host "Copied README.md, NOTICE.txt and LICENSE to $tempFolder" @@ -122,9 +119,7 @@ try { $wrapperPackageJson | ConvertTo-Json -Depth 10 | Out-File -FilePath "$tempFolder/package.json" -Encoding utf8 Write-Host "Created package.json in $tempFolder" - & $readMeProcessingScript -InputReadMePath "$serverDirectory/README.md" ` - -OutputDirectory $tempFolder -PackageType "npm" -InsertPayload @{ ToolTitle = 'NPM Package' } - + Copy-Item -Path "$serverDirectory/README.md" -Destination $tempFolder -Force Copy-Item -Path "$RepoRoot/LICENSE" -Destination $tempFolder -Force Write-Host "Copied README.md and LICENSE to $tempFolder" diff --git a/eng/scripts/Pack-Nuget.ps1 b/eng/scripts/Pack-Nuget.ps1 index 379dce64b..ccdd79cf1 100644 --- a/eng/scripts/Pack-Nuget.ps1 +++ b/eng/scripts/Pack-Nuget.ps1 @@ -21,8 +21,8 @@ $RepoRoot = $RepoRoot.Path.Replace('\', '/') $mcpServerjson = "$RepoRoot/eng/dnx/.mcp/server.json" $nuspecSourcePath = "$RepoRoot/eng/dnx/nuspec" +$azureIconPath = "$RepoRoot/eng/images/azureicon.png" $projectPropertiesScript = "$RepoRoot/eng/scripts/Get-ProjectProperties.ps1" -$readMeProcessingScript = "$RepoRoot/eng/scripts/Process-PackageReadMe.ps1" if(!$ArtifactsPath) { $ArtifactsPath = "$RepoRoot/.work/build" @@ -51,10 +51,6 @@ try { $serverProjectProperties = & "$projectPropertiesScript" -ProjectName "$serverName.csproj" $platformOutputPath = "$OutputPath/nuget/$($serverDirectory.Name)/platform" $wrapperOutputPath = "$OutputPath/nuget/$($serverDirectory.Name)/wrapper" - $packageIconPath = $serverProjectProperties.PackageIconPath - if (!$packageIconPath) { - $packageIconPath = "$RepoRoot/eng/images/microsofticon.png" - } New-Item -ItemType Directory -Force -Path $platformOutputPath | Out-Null New-Item -ItemType Directory -Force -Path $wrapperOutputPath | Out-Null @@ -98,13 +94,10 @@ try { -replace "__CommitSHA__", $CommitSha ` -replace "__TargetFramework__", $sharedProjectProperties.TargetFramework | Set-Content -Path $wrapperToolNuspec - - & $readMeProcessingScript -InputReadMePath "$serverDirectory/README.md" ` - -OutputDirectory $tempNugetWrapperDir -PackageType "nuget" -InsertPayload @{ ToolTitle = '.NET Tool' } - + Copy-Item -Path "$nuspecSourcePath/README.md" -Destination $tempNugetWrapperDir -Force Copy-Item -Path "$RepoRoot/LICENSE" -Destination $tempNugetWrapperDir -Force Copy-Item -Path "$RepoRoot/NOTICE.txt" -Destination $tempNugetWrapperDir -Force - Copy-Item -Path $packageIconPath -Destination $tempNugetWrapperDir -Force + Copy-Item -Path $azureIconPath -Destination $tempNugetWrapperDir -Force # Build the project foreach ($platformDirectory in $platformDirectories) { @@ -116,9 +109,9 @@ try { New-Item -ItemType Directory -Force -Path $platformToolDir | Out-Null Copy-Item -Path "$platformDirectory/dist/*" -Destination $platformToolDir -Recurse -Force + Copy-Item -Path $azureIconPath -Destination $tempPlatformDir -Force Copy-Item -Path "$RepoRoot/LICENSE" -Destination $tempPlatformDir -Force Copy-Item -Path "$RepoRoot/NOTICE.txt" -Destination $tempPlatformDir -Force - Copy-Item -Path $packageIconPath -Destination $tempPlatformDir -Force $platformToolEntryPoint = ( Get-ChildItem -Path $platformToolDir -Filter "$($serverProjectProperties.CliName)*" -Recurse | Where-Object { $_.PSIsContainer -eq $false -and ($_.Extension -eq ".exe" -or $_.Extension -eq "") } | diff --git a/eng/scripts/Pack-Vsix.ps1 b/eng/scripts/Pack-Vsix.ps1 index 64b16b0c7..d1870875e 100644 --- a/eng/scripts/Pack-Vsix.ps1 +++ b/eng/scripts/Pack-Vsix.ps1 @@ -9,7 +9,6 @@ $ErrorActionPreference = "Stop" . "$PSScriptRoot/../common/scripts/common.ps1" $RepoRoot = $RepoRoot.Path.Replace('\', '/') $sourcePath = "$RepoRoot/eng/vscode" -$readMeProcessingScript = "$RepoRoot/eng/scripts/Process-PackageReadMe.ps1" $buildId = $env:BUILD_BUILDID $setDevVersion = $env:SETDEVVERSION -eq "true" # spellchecker: ignore SETDEVVERSION @@ -62,9 +61,6 @@ try { $serverDirectory = $serverJsonFile.Directory $serverName = $serverDirectory.Name - & $readMeProcessingScript -InputReadMePath "$tempPath/README.md" ` - -OutputDirectory $tempPath -PackageType "vsix" -InsertPayload @{ ToolTitle = 'Extension for Visual Studio Code' } - if($setDevVersion -and $buildId) { <# VS Code Marketplace doesn't support pre-release versions. Also, the major.minor.patch portion of the diff --git a/eng/scripts/Process-PackageReadMe.ps1 b/eng/scripts/Process-PackageReadMe.ps1 deleted file mode 100644 index a4413d0da..000000000 --- a/eng/scripts/Process-PackageReadMe.ps1 +++ /dev/null @@ -1,143 +0,0 @@ -#!/bin/env pwsh -#Requires -Version 7 -<# -## Instructions - -This script is used to generate a package-specific README.md from a project README in the repository, -using special comment annotations to mark sections of the markdown that should be conditionally excluded or replaced. - -## Usage - -To generate a README tailored for a specific package type, run: - -eng\scripts\Process-PackageReadMe.ps1 -InputReadMePath "" -OutputDirectory "" -PackageType "" - -## Supported Annotations - -### 1. Section Removal - -**Purpose:** Remove one or more lines, or parts of a line of markdown for specified package types. - -**Syntax:** - - -e.g. - -...... -various markdown lines -..... - - -### 1. Insert Section - -insert-section is used to insert a chunk of text into a line for a specified package type. -e.g. - -#> - -param( - [Parameter(Mandatory=$true)] - [string] $InputReadMePath, - [Parameter(Mandatory=$true)] - [string] $OutputDirectory, - [Parameter(Mandatory=$true)] - [ValidateSet('nuget','npm','vsix')] - [string] $PackageType, - [hashtable] $InsertPayload = @{} -) - -$readMeText = Get-Content $InputReadMePath -$processedReadMe = @() -enum ActionType { - Append = 0 - Skip = 1 -} -$actionStack = [System.Collections.Generic.Stack[ActionType]]::new() -$actionStack.Push([ActionType]::Append) - -function AppendLine ([string]$Line) { - if([string]::IsNullOrWhiteSpace($Line) -and $processedReadMe.Count -gt 0 -and [string]::IsNullOrWhiteSpace($processedReadMe[-1])) { - return - } - $script:processedReadMe += $Line -} - - -# Remove leading comment block if present -if ($readMeText[0] -eq "") { - $readMeText = $readMeText | Select-Object -Skip ($i + 1) - break - } - } -} - -foreach($line in $readMeText) { - if ([string]::IsNullOrWhiteSpace($line) -and $actionStack.Peek() -eq [ActionType]::Append) { - AppendLine -Line "" - continue - } - - $lineToAppend = '' - $lineInProcess = $line - - while($lineInProcess.Length -gt 0) { - # remove-section: start marks the start of section removal for the package type - # e.g. - if ($lineInProcess -match "(?i)") { - $action = $actionStack.Peek() - $matchIdx = $lineInProcess.IndexOf($matches[0]) - if ($action -eq [ActionType]::Append) { - $lineToAppend += $lineInProcess.Substring(0, $matchIdx) - } - $lineInProcess = $lineInProcess.Substring($matchIdx + $matches[0].Length) - $pkgTypeInfo = $matches[1] - $pkgTypes = $pkgTypeInfo -split ';' - if ($pkgTypes -contains $PackageType) { - $action = [ActionType]::Skip - } - $actionStack.Push($action) - continue - } - - # remove-section: end marks the end of section removal for the package type - # e.g. - if ($lineInProcess -match "(?i)") { - $matchIdx = $lineInProcess.IndexOf($matches[0]) - if ($actionStack.Peek() -eq [ActionType]::Append) { - $lineToAppend += $lineInProcess.Substring(0, $matchIdx) - } - $lineInProcess = $lineInProcess.Substring($matchIdx + $matches[0].Length) - $actionStack.Pop() | Out-Null - continue - } - if ($actionStack.Peek() -eq [ActionType]::Append) { - $lineToAppend += $lineInProcess - } - break - } - - ## insert-chunk: start marks chunk insertion for the package type - ## e.g. - ## ToolTitle will be inserted from the InsertPayload hashtable - $insertSectionPattern = "(?i)" - $matches = [regex]::Matches($lineToAppend, $insertSectionPattern) - - foreach ($match in $matches) { - $pkgTypeInfo = $match.Groups[1].Value - $content = $match.Groups[2].Value - $pkgTypes = $pkgTypeInfo -split ';' - if ($pkgTypes -contains $PackageType) { - $contentToDisplay = if ($InsertPayload.ContainsKey($content)) { $InsertPayload[$content] } else { $content } - $lineToAppend = $lineToAppend -replace [regex]::Escape($match.Value), $contentToDisplay - } else { - $lineToAppend = $lineToAppend -replace [regex]::Escape($match.Value), '' - } - } - - if (-not [string]::IsNullOrWhiteSpace($lineToAppend)) { - AppendLine -Line $lineToAppend - } -} -Set-Content -Path "$OutputDirectory/README.md" -Value $processedReadMe -Force \ No newline at end of file diff --git a/eng/vscode/README.md b/eng/vscode/README.md new file mode 100644 index 000000000..d8951ad04 --- /dev/null +++ b/eng/vscode/README.md @@ -0,0 +1,451 @@ +# Azure MCP Server Extension for Visual Studio Code + +Easily bring the power of Model Context Protocol (MCP) to your Azure projects in VS Code. + +## Table of Contents +- [Overview](#overview) +- [Getting Started](#getting-started) +- [What can you do with the Azure MCP Server?](#what-can-you-do-with-the-azure-mcp-server) +- [Complete List of Supported Azure Services](#complete-list-of-supported-azure-services) +- [Documentation](#documentation) +- [Feedback & Support](#feedback--support) +- [Contributing](#contributing) +- [License](#license) + +## Overview + +**Azure MCP Server** adds smart, context-aware AI tools right inside VS Code to help you work more efficiently with Azure resources. The Azure MCP Server supercharges your agents with Azure context across **30+ different Azure services**. + +## Getting Started + +Follow these simple steps to start using Azure MCP in VS Code: + +1. **Install the Extension** + - Get it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-mcp-server). + +2. **Start (or Auto-Start) the MCP Server** + + > **VS Code (version 1.103 or above):** You can now configure MCP servers to start automatically using the `chat.mcp.autostart` setting, instead of manually restarting them after configuration changes. + + #### **Enable Autostart** + 1. Open **Settings** in VS Code. + 2. Search for `chat.mcp.autostart`. + 3. Select **newAndOutdated** to automatically start MCP servers without manual refresh. + 4. You can also set this from the **refresh icon tooltip** in the Chat view, which also shows which servers will auto-start. + + ![VS Code MCP Autostart Tooltip](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/ToolTip.png) + + #### **Manual Start (if autostart is off)** + 1. Open Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). + 2. Run `MCP: List Servers`. + + ![List Servers](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/ListServers.png) + + 3. Select `Azure MCP Server ext`, then click **Start Server**. + + ![Select Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/SelectServer.png) + ![Start Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/StartServer.png) + + 4. **Check That It's Running** + - Go to the **Output** tab in VS Code. + - Look for log messages confirming the server started successfully. + + ![Output](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/Output.png) + +3. (Optional) Configure tools and behavior + - Full options: control how tools are exposed and whether mutations are allowed: + + ```json + // Server Mode: collapse per service (default), single tool, or expose every tool + "azureMcp.serverMode": "namespace", // one of: "single" | "namespace" (default) | "all" + + // Filter which namespaces to expose + "azureMcp.enabledServices": ["storage", "keyvault"], + + // Run the server in read-only mode (prevents write operations) + "azureMcp.readOnly": false + ``` + + - Changes take effect after restarting the Azure MCP server from the MCP: List Servers view. (Step 2) + +Youโ€™re all set! Azure MCP Server is now ready to help you work smarter with Azure resources in VS Code. + +## What can you do with the Azure MCP Server? + +Here are some cool prompts you can try across our supported Azure services: + +### ๐Ÿงฎ Azure AI Foundry + +* List Azure Foundry models +* Deploy foundry models +* List foundry model deployments +* List knowledge indexes + +### ๐Ÿ”Ž Azure AI Search + +* "What indexes do I have in my Azure AI Search service 'mysvc'?" +* "Let's search this index for 'my search query'" + +### โš™๏ธ Azure App Configuration + +* "List my App Configuration stores" +* "Show my key-value pairs in App Config" + +### โš™๏ธ Azure App Lens + +* "Help me diagnose issues with my app" + +### ๐Ÿ“ฆ Azure Container Registry (ACR) + +* "List all my Azure Container Registries" +* "Show me my container registries in the 'my-resource-group' resource group" +* "List all my Azure Container Registry repositories" + +### โ˜ธ๏ธ Azure Kubernetes Service (AKS) + +* "List my AKS clusters in my subscription" +* "Show me all my Azure Kubernetes Service clusters" +* "List the node pools for my AKS cluster" +* "Get details for the node pool 'np1' of my AKS cluster 'my-aks-cluster' in the 'my-resource-group' resource group" + +### ๐Ÿ“Š Azure Cosmos DB + +* "Show me all my Cosmos DB databases" +* "List containers in my Cosmos DB database" + +### ๐Ÿงฎ Azure Data Explorer + +* "Get Azure Data Explorer databases in cluster 'mycluster'" +* "Sample 10 rows from table 'StormEvents' in Azure Data Explorer database 'db1'" + +### ๐Ÿ“ฃ Azure Event Grid + +* "List all Event Grid topics in subscription 'my-subscription'" +* "Show me the Event Grid topics in my subscription" +* "List all Event Grid topics in resource group 'my-resource-group' in my subscription" + +### โšก Azure Managed Lustre + +* "List the Azure Managed Lustre clusters in resource group 'my-resource-group'" +* "How many IP Addresses I need to create a 128 TiB cluster of AMLFS 500?" + +### ๐Ÿ“Š Azure Monitor + +* "Query my Log Analytics workspace" + +### ๐Ÿ”ง Azure Resource Management + +* "List my resource groups" +* "List my Azure CDN endpoints" +* "Help me build an Azure application using Node.js" + +### ๐Ÿ—„๏ธ Azure SQL Database + +* "Show me details about my Azure SQL database 'mydb'" +* "List all databases in my Azure SQL server 'myserver'" +* "List all firewall rules for my Azure SQL server 'myserver'" +* "Create a firewall rule for my Azure SQL server 'myserver'" +* "Delete a firewall rule from my Azure SQL server 'myserver'" +* "List all elastic pools in my Azure SQL server 'myserver'" +* "List Active Directory administrators for my Azure SQL server 'myserver'" +* "Create a new Azure SQL server in my resource group 'my-resource-group'" +* "Show me details about my Azure SQL server 'myserver'" +* "Delete my Azure SQL server 'myserver'" + +### ๐Ÿ’พ Azure Storage + +* "List my Azure storage accounts" +* "Get details about my storage account 'mystorageaccount'" +* "Create a new storage account in East US with Data Lake support" +* "Show me the tables in my Storage account" +* "Get details about my Storage container" +* "Upload my file to the blob container" +* "List paths in my Data Lake file system" +* "List files and directories in my File Share" +* "Send a message to my storage queue" + +## ๐Ÿ› ๏ธ Currently Supported Tools + +
+The Azure MCP Server provides tools for interacting with the following Azure services + +### ๐Ÿ”Ž Azure AI Search (search engine/vector database) + +* List Azure AI Search services +* List indexes and look at their schema and configuration +* Query search indexes + +### โš™๏ธ Azure App Configuration + +* List App Configuration stores +* Manage key-value pairs +* Handle labeled configurations +* Lock/unlock configuration settings + +### ๐Ÿ›ก๏ธ Azure Best Practices + +* Get secure, production-grade Azure SDK best practices for effective code generation. + +### ๐Ÿ“ฆ Azure Container Registry (ACR) + +* List Azure Container Registries and repositories in a subscription +* Filter container registries and repositories by resource group +* JSON output formatting +* Cross-platform compatibility + +### ๐Ÿ“Š Azure Cosmos DB (NoSQL Databases) + +* List Cosmos DB accounts +* List and query databases +* Manage containers and items +* Execute SQL queries against containers + +### ๐Ÿงฎ Azure Data Explorer + +* List Azure Data Explorer clusters +* List databases +* List tables +* Get schema for a table +* Sample rows from a table +* Query using KQL + +### ๐Ÿฌ Azure Database for MySQL - Flexible Server + +* List and query databases. +* List and get schema for tables. +* List, get configuration and get parameters for servers. + +### ๐Ÿ˜ Azure Database for PostgreSQL - Flexible Server + +* List and query databases. +* List and get schema for tables. +* List, get configuration and get/set parameters for servers. + +### ๐Ÿš€ Azure Deploy + +* Generate Azure service architecture diagrams from source code +* Create a deploy plan for provisioning and deploying the application +* Get the application service log for a specific azd environment +* Get the bicep or terraform file generation rules for an application +* Get the GitHub pipeline creation guideline for an application + +### ๐Ÿ“ฃ Azure Event Grid + +* List Event Grid topics in subscription or resource group +* View topic configuration and status information +* Access endpoint and key details for event publishing + +### โ˜๏ธ Azure Function App + +* List Azure Function Apps +* Get details for a specific Function App + +### ๐Ÿ”‘ Azure Key Vault + +* List, create, and import certificates +* List and create keys +* List and create secrets + +### โ˜ธ๏ธ Azure Kubernetes Service (AKS) + +* List Azure Kubernetes Service clusters +* List node pools in an AKS managed cluster +* Get details of a node pool in an AKS managed cluster + +### ๐Ÿ“ฆ Azure Load Testing + +* List, create load test resources +* List, create load tests +* Get, list, (create) run and rerun, update load test runs + +### ๐Ÿš€ Azure Managed Grafana + +* List Azure Managed Grafana + +### โšก Azure Managed Lustre + +* List Azure Managed Lustre filesystems +* Get the number of IP addresses required for a specific SKU and size of Azure Managed Lustre filesystem +* Get information of Azure Managed Lustre SKUs available in a specific Azure region + +### ๐Ÿช Azure Marketplace + +* List marketplace products available to a subscription with filtering capabilities +* Get details about Marketplace products + +### ๐Ÿ“ˆ Azure Monitor + +#### Log Analytics + +* List Log Analytics workspaces +* Query logs using KQL +* List available tables + +#### Health Models + +* Get health of an entity + +#### Metrics + +* Query Azure Monitor metrics for resources with time series data +* List available metric definitions for resources + +### โš™๏ธ Azure Native ISV Services + +* List Monitored Resources in a Datadog Monitor + +### ๐Ÿ›ก๏ธ Azure Quick Review CLI Extension + +* Scan Azure resources for compliance related recommendations + +### ๐Ÿ“Š Azure Quota + +* List available regions +* Check quota usage + +### ๐Ÿ”ด Azure Redis Cache + +* List Redis Cluster resources +* List databases in Redis Clusters +* List Redis Cache resources +* List access policies for Redis Caches + +### ๐Ÿ—๏ธ Azure Resource Groups + +* List resource groups + +### ๐Ÿฅ Azure Resource Health + +* Get the availability status for a specific resource +* List availability statuses for all resources in a subscription or resource group +* List service health events in a subscription + +### ๐ŸŽญ Azure Role-Based Access Control (RBAC) + +* List role assignments + +### ๐ŸšŒ Azure Service Bus + +* Examine properties and runtime information about queues, topics, and subscriptions + +### ๐Ÿ—„๏ธ Azure SQL Database + +* Show database details and properties +* List the details and properties of all databases +* List SQL server firewall rules +* Create SQL server firewall rules +* Delete SQL server firewall rules +* List elastic pools in SQL servers +* List Microsoft Entra ID administrators for SQL servers +* Create new SQL servers +* Show details and properties of SQL servers +* Delete SQL servers + +### ๐Ÿ’พ Azure Storage + +* List and create Storage accounts +* Get detailed information about specific Storage accounts +* Manage blob containers and blobs +* Upload files to blobs +* List and query Storage tables +* List paths in Data Lake file systems +* Get container properties and metadata +* List files and directories in File Shares + +### ๐Ÿ“‹ Azure Subscription + +* List Azure subscriptions + +### ๐Ÿ—๏ธ Azure Terraform Best Practices + +* Get secure, production-grade Azure Terraform best practices for effective code generation and command execution + +### ๐Ÿ–ฅ๏ธ Azure Virtual Desktop + +* List Azure Virtual Desktop host pools +* List session hosts in host pools +* List user sessions on a session host + +### ๐Ÿ“Š Azure Workbooks + +* List workbooks in resource groups +* Create new workbooks with custom visualizations +* Update existing workbook configurations +* Get workbook details and metadata +* Delete workbooks when no longer needed + +### ๐Ÿ—๏ธ Bicep + +* Get the Bicep schema for specific Azure resource types + +### ๐Ÿ—๏ธ Cloud Architect + +* Design Azure cloud architectures through guided questions + +Agents and models can discover and learn best practices and usage guidelines for the `azd` MCP tool. For more information, see [AZD Best Practices](https://github.com/microsoft/mcp/tree/main/tools/Azure.Mcp.Tools.Extension/src/Resources/azd-best-practices.txt). + +For detailed command documentation and examples, see [Azure MCP Commands](https://github.com/microsoft/mcp/blob/main/docs/azmcp-commands.md). + +
+ +## Complete List of Supported Azure Services + +The Azure MCP Server provides tools for interacting with **30+ Azure service areas**: + +- ๐Ÿงฎ **Azure AI Foundry** - AI model management, AI model deployment, and knowledge index management +- ๐Ÿ”Ž **Azure AI Search** - Search engine/vector database operations +- โš™๏ธ **Azure App Configuration** - Configuration management +- ๐Ÿ›ก๏ธ **Azure Best Practices** - Secure, production-grade guidance +- ๐Ÿ“ฆ **Azure Container Registry (ACR)** - Container registry management +- ๐Ÿ“Š **Azure Cosmos DB** - NoSQL database operations +- ๐Ÿงฎ **Azure Data Explorer** - Analytics queries and KQL +- ๐Ÿฌ **Azure Database for MySQL** - MySQL database management +- ๐Ÿ˜ **Azure Database for PostgreSQL** - PostgreSQL database management +- ๐Ÿ“Š **Azure Event Grid** - Event routing and management +- โšก **Azure Functions** - Function App management +- ๐Ÿ”‘ **Azure Key Vault** - Secrets, keys, and certificates +- โ˜ธ๏ธ **Azure Kubernetes Service (AKS)** - Container orchestration +- ๐Ÿ“ฆ **Azure Load Testing** - Performance testing +- ๐Ÿš€ **Azure Managed Grafana** - Monitoring dashboards +- ๐Ÿ—ƒ๏ธ **Azure Managed Lustre** - High-performance Lustre filesystem operations +- ๐Ÿช **Azure Marketplace** - Product discovery +- ๐Ÿ“ˆ **Azure Monitor** - Logging, metrics, and health monitoring +- โš™๏ธ **Azure Native ISV Services** - Third-party integrations +- ๐Ÿ›ก๏ธ **Azure Quick Review CLI** - Compliance scanning +- ๐Ÿ“Š **Azure Quota** - Resource quota and usage management +- ๐ŸŽญ **Azure RBAC** - Access control management +- ๐Ÿ”ด **Azure Redis Cache** - In-memory data store +- ๐Ÿ—๏ธ **Azure Resource Groups** - Resource organization +- ๐Ÿ—„๏ธ **Azure SQL Database** - Relational database management +- ๐Ÿ—„๏ธ **Azure SQL Elastic Pool** - Database resource sharing +- ๐Ÿ—„๏ธ **Azure SQL Server** - Server administration +- ๐ŸšŒ **Azure Service Bus** - Message queuing +- ๐Ÿฅ **Azure Service Health** - Resource health status and availability +- ๐Ÿ’พ **Azure Storage** - Blob storage +- ๐Ÿ“‹ **Azure Subscription** - Subscription management +- ๐Ÿ—๏ธ **Azure Terraform Best Practices** - Infrastructure as code guidance +- ๐Ÿ–ฅ๏ธ **Azure Virtual Desktop** - Virtual desktop infrastructure +- ๐Ÿ“Š **Azure Workbooks** - Custom visualizations +- ๐Ÿ—๏ธ **Bicep** - Azure resource templates +- ๐Ÿ—๏ธ **Cloud Architect** - Guided architecture design + +## Documentation + +- See our [official documentation on learn.microsoft.com](https://learn.microsoft.com/azure/developer/azure-mcp-server/) to learn how to use the Azure MCP Server to interact with Azure resources through natural language commands from AI agents and other types of clients. +- For additional command documentation and examples, see our [GitHub repository section on Azure MCP Commands](https://github.com/microsoft/mcp/blob/main/docs/azmcp-commands.md). + + +## Feedback & Support + +- Check the [Troubleshooting guide](https://aka.ms/azmcp/troubleshooting) to diagnose and resolve common issues with the Azure MCP Server. +- We're building this in the open. Your feedback is much appreciated, and will help us shape the future of the Azure MCP server. + - ๐Ÿ‘‰ Open an issue in the public [GitHub repository](https://github.com/microsoft/mcp/issues) โ€” weโ€™d love to hear from you! + +## Contributing + +Want to contribute? +Check out our [contribution guide](https://github.com/microsoft/mcp/blob/main/eng/vscode/CONTRIBUTING.md) to get started. + +## License + +This project is licensed under the [MIT License](https://github.com/microsoft/mcp/blob/main/LICENSE). diff --git a/servers/Azure.Mcp.Server/README.md b/servers/Azure.Mcp.Server/README.md index 7f471ed76..5c4e38c58 100644 --- a/servers/Azure.Mcp.Server/README.md +++ b/servers/Azure.Mcp.Server/README.md @@ -1,27 +1,26 @@ - -# Microsoft Azure Logo Azure MCP Server +# Microsoft Azure Logo Azure MCP Server -All Azure MCP tools in a single server. The Azure MCP Server implements the [MCP specification](https://modelcontextprotocol.io) to create a seamless connection between AI agents and Azure services. Azure MCP Server can be used alone or with the GitHub Copilot for Azure extension in a supported IDE. This project is in Public Preview and implementation may significantly change prior to our General Availability. +All Azure MCP tools in a single server. The Azure MCP Server implements the [MCP specification](https://modelcontextprotocol.io) to create a seamless connection between AI agents and Azure services. Azure MCP Server can be used alone or with the [GitHub Copilot for Azure extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-github-copilot) in VS Code. This project is in Public Preview and implementation may significantly change prior to our General Availability. - [![Install Azure MCP in VS Code](https://img.shields.io/badge/VS_Code-Install_Azure_MCP_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:extension/ms-azuretools.vscode-azure-mcp-server) [![Install Azure MCP in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install_Azure_MCP_Server-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode-insiders:extension/ms-azuretools.vscode-azure-mcp-server) [![Install Azure MCP in Visual Studio](https://img.shields.io/badge/Visual_Studio-Install_Azure_MCP_Server-C16FDE?style=flat-square&logo=visualstudio&logoColor=white)](https://marketplace.visualstudio.com/items?itemName=github-copilot-azure.GitHubCopilotForAzure2022) - + ## Table of Contents - [Overview](#overview) -- [Installation](#installation) - - [Prerequisites](#prerequisites) - - [Configuration](#configuration) - - [Package Managers](#package-managers) - - [NuGet](#nuget) - - [NPM](#npm) - - [Docker](#docker) +- [Installation](#installation) + - [IDE Extensions](#ide-extensions) + - [VS Code (Recommended)](#vs-code-recommended) + - [Visual Studio 2022](#visual-studio-2022) + - [IntelliJ IDEA](#intellij-idea) + - [Package Managers](#package-managers) + - [NuGet](#nuget) + - [NPM](#npm) + - [Docker](#docker) + - [Custom Clients](#custom-clients) - [Usage](#usage) - - [Getting Started](#getting-started) - - [What can you do with the Azure MCP Server?](#what-can-you-do-with-the-azure-mcp-server) - - [Complete List of Supported Azure Services](#complete-list-of-supported-azure-services) + - [Getting Started](#getting-started) + - [What can you do with the Azure MCP Server?](#what-can-you-do-with-the-azure-mcp-server) + - [Complete List of Supported Azure Services](#complete-list-of-supported-azure-services) - [Support & Reference](#support-and-reference) - [Documentation](#documentation) - [Feedback & Support](#feedback-and-support) @@ -29,233 +28,123 @@ All Azure MCP tools in a single server. The Azure MCP Server implements the [MCP - [Data Collection](#data-collection) - [Contributing & Code of Conduct](#contributing) -# Overview +# Overview **Azure MCP Server** supercharges your agents with Azure context across **30+ different Azure services**. -# Installation - - - -## Prerequisites -Before you begin, ensure you have: -- An active Azure subscription -- A supported IDE with the GitHub Copilot extension / plugin installed. - - - **Visual Studio Code (Recommended)** - - Install either the [Stable](https://code.visualstudio.com/download) or [Insiders](https://code.visualstudio.com/insiders) release of VS Code - - Install the [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) and [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) extensions - - - - **Visual Studio 2022** - - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) (Has GitHub Copilot built in) - - From within Visual Studio 2022 install [GitHub Copilot for Azure (VS 2022)](https://marketplace.visualstudio.com/items?itemName=github-copilot-azure.GitHubCopilotForAzure2022): - 1. Go to `Extensions > Manage Extensions...` - 2. Switch to the `Browse` tab in `Extension Manager` - 3. Search for `Github Copilot for Azure` - 4. Click `Install` - - - - **IntelliJ IDEA** - - Install either the [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download) or [IntelliJ IDEA Community](https://www.jetbrains.com/idea/download) edition. - - Install the [GitHub Copilot](https://plugins.jetbrains.com/plugin/17718-github-copilot) plugin. - - -- To use Azure MCP server from .NET, you must have [.NET 10 Preview 6 or later](https://dotnet.microsoft.com/download/dotnet/10.0) installed. This version of .NET adds a command, dnx, which is used to download, install, and run the MCP server from [nuget.org](https://www.nuget.org). -To verify your .NET version, run the following command in your terminal: `dotnet --info` - - -- To use Azure MCP server from node you must have Node.js (LTS) installed and available on your system PATH โ€” this provides both `npm` and `npx`. We recommend Node.js 20 LTS or later. To verify your installation run: `node --version`, `npm --version`, and `npx --version`. - - - -## Configuration - - -You can configure the Azure MCP Server by installing the appropriate extension / plugin for your IDE or editing the `mcp.json` file directly. -- Installing the extension / plugin - - - **Visual Studio Code (Recommended)** - - Install the [Azure MCP Server Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-mcp-server) - - - - **Visual Studio 2022** - - From within Visual Studio 2022 install [GitHub Copilot for Azure (VS 2022)](https://marketplace.visualstudio.com/items?itemName=github-copilot-azure.GitHubCopilotForAzure2022): - 1. Go to `Extensions > Manage Extensions...` - 2. Switch to the `Browse` tab in `Extension Manager` - 3. Search for `Github Copilot for Azure` - 4. Click `Install` - - - - **IntelliJ IDEA** - - Install the [Azure Toolkit for Intellij plugin](https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij) - -- Custom client configuration by updating the `mcp.json` file. -
- Find mcp.json file for your IDE - - - Open GitHub Copilot in your IDE. `View > Chat` for VS code, `Tools > GitHub Copilot > Open Chat` for IntelliJ IDEA - - Switch to Agent Mode then click on the Tools Configuration button - - ![VSCode](../../eng/images/VisualStudioCodeUI.png) - - Click on the button for configuring or adding tools -
- -
- Configure Azure MCP Server using .NET Tool - - - To use the latest version enter the following snippet in your `mcp.json` - ```json - "servers": { - "Azure MCP Server": { - "command": "dnx", - "args": [ - "Azure.Mcp", - "--source", - "https://api.nuget.org/v3/index.json", - "--yes", - "--", - "azmcp", - "server", - "start" - ], - "type": "stdio" - } - } - ``` +# Installation - You can also specific a version using the --version argument, like so: +## ๐Ÿงฉ IDE Extensions - ```json - "servers": { - "Azure MCP Server": { - "command": "dnx", - "args": [ - "Azure.Mcp", - "--source", - "https://api.nuget.org/v3/index.json", - "--version", - "", - "--yes", - "--", - "azmcp", - "server", - "start" - ], - "type": "stdio" - } - } - ``` -
- - -
- Configure Azure MCP Server using node tool - +Follow these simple steps to start using Azure MCP with your favorite IDE. We recommend VS Code: - To use the latest version enter the following snippet in your mcp.json +### ๐Ÿ”ท VS Code (Recommended) - ```json - "servers": { - "azure-mcp-server": { - "command": "npx", - "args": [ - "-y", - "@azure/mcp@latest", - "server", - "start" - ] - } - } - ``` +1. Install either the stable or Insiders release of VS Code: + * [๐Ÿ’ซ Stable release](https://code.visualstudio.com/download) + * [๐Ÿ”ฎ Insiders release](https://code.visualstudio.com/insiders) +1. Install the [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) and [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) extensions +1. Install the [Azure MCP Server](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-mcp-server) extension - You can also install a targeted version +### ๐Ÿ’œ Visual Studio 2022 + +From within Visual Studio 2022 install [GitHub Copilot for Azure (VS 2022)](https://marketplace.visualstudio.com/items?itemName=github-copilot-azure.GitHubCopilotForAzure2022): +1. Go to `Extensions | Manage Extensions...` +2. Switch to the `Browse` tab in `Extension Manager` +3. Search for `Github Copilot for Azure` +4. Click `Install` + +### โ˜• IntelliJ IDEA + +1. Install either the [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download) or [IntelliJ IDEA Community](https://www.jetbrains.com/idea/download) edition. +1. Install the [GitHub Copilot](https://plugins.jetbrains.com/plugin/17718-github-copilot) plugin. +1. Install the [Azure Toolkit for Intellij](https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij) plugin. - ```json - "servers": { - "azure-mcp-server": { - "command": "npx", - "args": [ - "-y", - "@azure/mcp@", - "server", - "start" - ] - } - } - ``` -
- - -
-Start (or Auto-Start) the MCP Server - - -| | Enable Auto-Start | | Manual Start (if autostart is off) | -| -- | -- | -- | -- | -| 1| Open Settings in VS Code | 1| Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P). | -| 2| Search for `chat.mcp.autostart` | 2| Run MCP: List Servers.![List Servers](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/ListServers.png) | -| 3| Select **newAndOutdated** to automatically start MCP servers without manual refresh. | 3| Select Azure MCP Server ext, then click Start Server.![Select Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/SelectServer.png)![Start Server](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/StartServer.png) | -| 4| You can also set this from the refresh icon tooltip in the Chat view, which also shows which servers will auto-start.![VS Code MCP Autostart Tooltip](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/ToolTip.png) | 4| Confirm its runing by observing the log messages in the output tab. ![Output](https://raw.githubusercontent.com/microsoft/mcp/main/eng/vscode/resources/Walkthrough/Output.png)| - -
- - ## Package Managers -#### ๐Ÿค– NuGet +### ๐Ÿค– NuGet Microsoft publishes an official Azure MCP Server .NET Tool on NuGet: [Azure.Mcp](https://www.nuget.org/packages/Azure.Mcp). -#### ๐Ÿ“ฆ NPM +### ๐Ÿ“ฆ NPM Microsoft publishes an official Azure MCP Server npm package for Node.js: [@azure/mcp](https://www.npmjs.com/package/@azure/mcp). -#### ๐Ÿ‹ Docker +### ๐Ÿ‹ Docker Microsoft publishes an official Azure MCP Server Docker container on the [Microsoft Artifact Registry](https://mcr.microsoft.com/artifact/mar/azure-sdk/azure-mcp). -
- For a step-by-step Docker installation, follow these instructions: - - 1. Create an `.env` file with environment variables that [match one of the `EnvironmentCredential`](https://learn.microsoft.com/dotnet/api/azure.identity.environmentcredential) sets. For example, a `.env` file using a service principal could look like: - - ```bash - AZURE_TENANT_ID={YOUR_AZURE_TENANT_ID} - AZURE_CLIENT_ID={YOUR_AZURE_CLIENT_ID} - AZURE_CLIENT_SECRET={YOUR_AZURE_CLIENT_SECRET} - ``` - - 2. Add `.vscode/mcp.json` or update existing MCP configuration. Replace `/full/path/to/.env` with a path to your `.env` file. - - ```json - { - "servers": { - "Azure MCP Server": { - "command": "docker", - "args": [ - "run", - "-i", - "--rm", - "--env-file", - "/full/path/to/.env", - "mcr.microsoft.com/azure-sdk/azure-mcp:latest", - ] - } +
+For a step-by-step Docker installation, follow these instructions: + +1. Create an `.env` file with environment variables that [match one of the `EnvironmentCredential`](https://learn.microsoft.com/dotnet/api/azure.identity.environmentcredential) sets. For example, a `.env` file using a service principal could look like: + + ```bash + AZURE_TENANT_ID={YOUR_AZURE_TENANT_ID} + AZURE_CLIENT_ID={YOUR_AZURE_CLIENT_ID} + AZURE_CLIENT_SECRET={YOUR_AZURE_CLIENT_SECRET} + ``` + +2. Add `.vscode/mcp.json` or update existing MCP configuration. Replace `/full/path/to/.env` with a path to your `.env` file. + + ```json + { + "servers": { + "Azure MCP Server": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "--env-file", + "/full/path/to/.env", + "mcr.microsoft.com/azure-sdk/azure-mcp:latest", + ] } } - ``` + } + ``` + +Optionally, use `--env` or `--volume` to pass authentication values. +
+ +## ๐Ÿค– Custom Clients + +You can easily configure your MCP client to use the Azure MCP Server. + +
+Have your client run the following command and access it via standard IO: - Optionally, use `--env` or `--volume` to pass authentication values. -
- +```bash +npx -y @azure/mcp@latest server start +``` -# Usage +For example, add the following `mcp.json` to VS Code. Other clients will look similar, but may be structured slightly different. Consult the documentation of the custom client for details. -## ๐Ÿš€ Getting Started +1. Example `mcp.json`: -1. Open GitHub Copilot in [VS Code](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode) or [IntelliJ](https://github.blog/changelog/2025-05-19-agent-mode-and-mcp-support-for-copilot-in-jetbrains-eclipse-and-xcode-now-in-public-preview/#agent-mode) and switch to Agent mode. + ```json + { + "servers": { + "Azure MCP Server": { + "command": "npx", + "args": [ + "-y", + "@azure/mcp@latest", + "server", + "start" + ] + } + } + } + ``` +
+ +# Usage + +## ๐Ÿš€ Getting Started + +1. Open GitHub Copilot in [VS Code](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode) or [IntelliJ](https://github.blog/changelog/2025-05-19-agent-mode-and-mcp-support-for-copilot-in-jetbrains-eclipse-and-xcode-now-in-public-preview/#agent-mode) and switch to Agent mode. 1. Click `refresh` on the tools list - You should see the Azure MCP Server in the list of tools 1. Try a prompt that tells the agent to use the Azure MCP Server, such as `List my Azure Storage containers` @@ -264,7 +153,7 @@ Microsoft publishes an official Azure MCP Server Docker container on the [Micros 1. We're building this in the open. Your feedback is much appreciated, and will help us shape the future of the Azure MCP server - ๐Ÿ‘‰ [Open an issue in the public repository](https://github.com/microsoft/mcp/issues/new/choose) -## โœจ What can you do with the Azure MCP Server? +## โœจ What can you do with the Azure MCP Server? The Azure MCP Server supercharges your agents with Azure context. Here are some cool prompts you can try: @@ -373,7 +262,8 @@ The Azure MCP Server supercharges your agents with Azure context. Here are some * "Get details about my Storage container" * "Upload my file to the blob container" -## ๐Ÿ› ๏ธ Complete List of Supported Azure Services + +## ๐Ÿ› ๏ธ Complete List of Supported Azure Services The Azure MCP Server provides tools for interacting with **30+ Azure service areas**: @@ -414,41 +304,38 @@ The Azure MCP Server provides tools for interacting with **30+ Azure service are - ๐Ÿ—๏ธ **Bicep** - Azure resource templates - ๐Ÿ—๏ธ **Cloud Architect** - Guided architecture design -# Support & Reference +# Support & Reference -## Documentation +## Documentation - See our [official documentation on learn.microsoft.com](https://learn.microsoft.com/azure/developer/azure-mcp-server/) to learn how to use the Azure MCP Server to interact with Azure resources through natural language commands from AI agents and other types of clients. - For additional command documentation and examples, see [Azure MCP Commands](https://github.com/microsoft/mcp/blob/main/docs/azmcp-commands.md). -## Feedback & Support +## Feedback & Support - Check the [Troubleshooting guide](https://aka.ms/azmcp/troubleshooting) to diagnose and resolve common issues with the Azure MCP Server. - We're building this in the open. Your feedback is much appreciated, and will help us shape the future of the Azure MCP server. - ๐Ÿ‘‰ [Open an issue](https://github.com/microsoft/mcp/issues) in the public GitHub repository โ€” weโ€™d love to hear from you! -## ๐Ÿ›ก๏ธ Security +## ๐Ÿ›ก๏ธ Security Your credentials are always handled securely through the official [Azure Identity SDK](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/README.md) - **we never store or manage tokens directly**. MCP as a phenomenon is very novel and cutting-edge. As with all new technology standards, consider doing a security review to ensure any systems that integrate with MCP servers follow all regulations and standards your system is expected to adhere to. This includes not only the Azure MCP Server, but any MCP client/agent that you choose to implement down to the model provider. -## Data Collection +## Data Collection - The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's [privacy statement](https://www.microsoft.com/privacy/privacystatement). You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. - - - ### Telemetry Configuration Telemetry collection is on by default. To opt out, set the environment variable `AZURE_MCP_COLLECT_TELEMETRY` to `false` in your environment. - -## ๐Ÿ‘ฅ Contributing + + +## ๐Ÿ‘ฅ Contributing We welcome contributions to the Azure MCP Server! Whether you're fixing bugs, adding new features, or improving documentation, your contributions are welcome. @@ -460,11 +347,11 @@ Please read our [Contributing Guide](https://github.com/microsoft/mcp/blob/main/ * ๐Ÿ”„ Making pull requests -## ๐Ÿค Code of Conduct +## ๐Ÿค Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [open@microsoft.com](mailto:open@microsoft.com) -with any additional questions or comments. \ No newline at end of file +with any additional questions or comments. diff --git a/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj b/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj index 18e079a49..7df5a6f73 100644 --- a/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj +++ b/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj @@ -10,7 +10,6 @@ azure-sdk/azure-mcp Azure.Mcp $(CliName) - $(RepoRoot)/eng/images/azureicon.png