Note
Azure MCP Server 1.0 is now generally available.
All Azure MCP tools in a single server. The Azure MCP Server implements the MCP specification 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 VS Code.
Azure MCP Server supercharges your agents with Azure context across 40+ different Azure services.
Install Azure MCP Server using either an IDE extension or package manager. Choose one method below.
Important
Authenticate to Azure before running the Azure MCP server. See the Authentication guide for authentication methods and instructions.
Start using Azure MCP with your favorite IDE. We recommend VS Code:
Compatible with both the Stable and Insiders builds of VS Code.
- Install the GitHub Copilot Chat extension.
- Install the Azure MCP Server extension.
- Sign in to Azure (Command Palette:
Azure: Sign In).
- Download Visual Studio 2026 or Visual Studio 2026 Insiders and install using the Visual Studio Installer.
- If Visual Studio 2026 is already installed, open the Visual Studio Installer and select the Modify button, which displays the available workloads.
- On the Workloads tab, select Azure and AI development and select GitHub Copilot.
- Click install while downloading to complete the installation.
For more information, visit Install GitHub Copilot for Azure in Visual Studio 2026
From within Visual Studio 2022 install GitHub Copilot for Azure (VS 2022):
- Go to
Extensions | Manage Extensions... - Switch to the
Browsetab inExtension Manager - Search for
Github Copilot for Azure - Click
Install
- Install either the IntelliJ IDEA Ultimate or IntelliJ IDEA Community edition.
- Install the GitHub Copilot plugin.
- Install the Azure Toolkit for Intellij plugin.
- Install Eclipse IDE.
- Install the GitHub Copilot plugin.
- Install the Azure Toolkit for Eclipse plugin.
Azure MCP Server can also be configured across other IDEs, CLIs, and MCP clients:
Manual setup instructions
Use one of the following options to configure your mcp.json:
-
To use Azure MCP server from .NET, you must have .NET 10 Preview 6 or later installed. This version of .NET adds a command, dnx, which is used to download, install, and run the MCP server from nuget.org. To verify the .NET version, run the following command in the terminal:
dotnet --info -
Configure the
mcp.jsonfile with the following:{ "mcpServers": { "Azure MCP Server": { "command": "dnx", "args": [ "Azure.Mcp", "--source", "https://api.nuget.org/v3/index.json", "--yes", "--", "azmcp", "server", "start" ], "type": "stdio" } } }
-
To use Azure MCP server from node one must have Node.js (LTS) installed and available on your system PATH — this provides both
npmandnpx. We recommend Node.js 20 LTS or later. To verify your installation run:node --version,npm --version, andnpx --version. -
Configure the
mcp.jsonfile with the following:{ "mcpServers": { "Azure MCP Server": { "command": "npx", "args": [ "-y", "@azure/mcp@latest", "server", "start" ] } } }
-
To use Azure MCP server from Python, you must have uv installed. uv is a fast Python package installer and resolver. To verify your installation run:
uv --versionanduvx --version. -
Configure the
mcp.jsonfile with the following:{ "mcpServers": { "Azure MCP Server": { "command": "uvx", "args": [ "--from", "msmcp-azure", "azmcp", "server", "start" ] } } }
Note: When manually configuring Visual Studio and Visual Studio Code, use servers instead of mcpServers as the root object.
Client-Specific Configuration
| IDE | File Location | Documentation Link |
|---|---|---|
| VS Code | .vscode/mcp.json (workspace)settings.json (user) |
VS Code MCP Documentation |
| Visual Studio | .mcp.json (solution/workspace) |
Visual Studio MCP Setup |
| GitHub Copilot CLI | ~/.copilot/mcp-config.json |
Copilot CLI MCP Configuration |
| Claude Code | ~/.claude.json or .mcp.json (project) |
Claude Code MCP Configuration |
| Eclipse IDE | GitHub Copilot Chat -> Configure Tools -> MCP Servers | Eclipse MCP Documentation |
| IntelliJ IDEA | Built-in MCP server (2025.2+) Settings > Tools > MCP Server |
IntelliJ MCP Documentation |
| Cursor | ~/.cursor/mcp.json or .cursor/mcp.json |
Cursor MCP Documentation |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
Windsurf Cascade MCP Integration |
| Amazon Q Developer | ~/.aws/amazonq/mcp.json (global).amazonq/mcp.json (workspace) |
AWS Q Developer MCP Guide |
| Claude Desktop | ~/.claude/claude_desktop_config.json (macOS)%APPDATA%\Claude\claude_desktop_config.json (Windows) |
Claude Desktop MCP Setup |
Package manager installation offers several advantages over IDE-specific setup, including centralized dependency management, CI/CD integration, support for headless/server environments, version control, and project portability.
Install Azure MCP Server via a package manager:
Install the .NET Tool: Azure.Mcp.
dotnet tool install Azure.Mcpor
dotnet tool install Azure.Mcp --version <version>Install the Node.js package: @azure/mcp.
Local installation (recommended):
npm install @azure/mcp@latestInstall a specific version:
npm install @azure/mcp@<version>Run a command without installing (using npx):
npx -y @azure/mcp@latest [command]For example,
Start a server
npx -y @azure/mcp@latest server startList tools
npx -y @azure/mcp@latest tools listAdditional instructions
When to use local vs global installation:
- Local (recommended): Install in the project directory for project-specific tooling, CI/CD pipelines, or when using mcp.json configuration.
- Global: Install system-wide to run
azmcpcommands directly from any terminal.
Troubleshooting: To troubleshoot @azure/mcp package (or respective binaries) installation, review the troubleshooting guide.
Architecture: To understand how platform-specific binaries are installed with @azure/mcp, review the wrapper binaries architecture.
Install the Python package: msmcp-azure.
Run directly without installation (using uvx - recommended):
uvx --from msmcp-azure azmcp server startInstall as a global tool (using pipx):
pipx install msmcp-azureInstall using pip:
pip install msmcp-azureInstall a specific version:
pip install msmcp-azure==<version>Additional instructions
When to use uvx vs pipx vs pip:
- uvx (recommended): Run directly without installation. Best for MCP server usage where you want the latest version without managing installations.
- pipx: Install as an isolated global tool. Best when you want a persistent installation that doesn't interfere with other Python projects.
- pip: Install in the current Python environment. Best for integration into existing Python projects or virtual environments.
Prerequisites:
- uv for
uvxcommands - Python 3.10+ for
piporpipxinstallation
Run the Azure MCP server as a Docker container for easy deployment and isolation. The container image is available at mcr.microsoft.com/azure-sdk/azure-mcp.
Docker instructions
- Create a
.envfile with Azure credentials (see EnvironmentCredential options):
AZURE_TENANT_ID={YOUR_AZURE_TENANT_ID}
AZURE_CLIENT_ID={YOUR_AZURE_CLIENT_ID}
AZURE_CLIENT_SECRET={YOUR_AZURE_CLIENT_SECRET}- Add or update existing
mcp.json. Replace/full/path/to/.envwith the actual.envfile path.
{
"mcpServers": {
"Azure MCP Server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/full/path/to/.env",
"mcr.microsoft.com/azure-sdk/azure-mcp:latest"
]
}
}
}To use Azure Entra ID, review the troubleshooting guide.
GitHub Copilot CLI supports MCP servers via the /mcp command.
GitHub Copilot CLI setup instructions
-
In a Copilot CLI session, run
/mcp addto open the MCP server configuration form. -
Fill in the fields:
Field Value Server Name azure-mcpServer Type 1(Local)Command npx -y @azure/mcp@latest server startEnvironment Variables (leave blank - uses Azure CLI auth) Tools *Alternative Command (using .NET):
dotnet dnx -p Azure.Mcp server start -
Press Ctrl+S (or Cmd+S on macOS) to save the server configuration.
Verify the MCP server is configured by running:
/mcp show
You should see output similar to:
● MCP Server Configuration:
• azure-mcp (local): Command: npx
Total servers: 1
Config file: ~/.copilot/mcp-config.json
- List servers:
/mcp show - Remove a server:
/mcp remove azure-mcp - Get help:
/mcp help
The GitHub Copilot SDK enables programmatic integration of Azure MCP tools into your applications across multiple languages.
GitHub Copilot SDK snippets
This guide explains how to configure the GitHub Copilot SDK to use Azure MCP (Model Context Protocol) tools for interacting with Azure resources.
Azure MCP provides a set of tools that enable AI assistants to interact with Azure resources directly. When integrated with the Copilot SDK, you can build applications that leverage natural language to manage Azure subscriptions, resource groups, storage accounts, and more.
- GitHub Copilot CLI - Install from GitHub Copilot CLI
- Azure MCP Server - Available via npm:
@azure/mcp - Azure CLI - Authenticated via
az login - Valid GitHub Copilot subscription
# Option 1: Use npx (downloads on demand)
npx -y @azure/mcp@latest server start
# Option 2: Install globally (faster startup)
npm install -g @azure/mcp@latestImportant: MCP servers must be configured in the session config for tools to be available. The critical configuration is:
{
"mcp_servers": {
"azure-mcp": {
"type": "local",
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"],
"tools": ["*"]
}
}
}The tools: ["*"] parameter is essential - it enables all tools from the MCP server for the session.
pip install github-copilot-sdkimport asyncio
from copilot import CopilotClient
from copilot.generated.session_events import SessionEventType
async def main():
# Initialize the Copilot client
client = CopilotClient({
"cli_args": [
"--allow-all-tools",
"--allow-all-paths",
]
})
await client.start()
# Configure Azure MCP server in session config
azure_mcp_config = {
"azure-mcp": {
"type": "local",
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"],
"tools": ["*"], # Enable all Azure MCP tools
}
}
# Create session with MCP servers
session = await client.create_session({
"model": "gpt-4.1", # Default model; BYOK can override
"streaming": True,
"mcp_servers": azure_mcp_config,
})
# Handle events
def handle_event(event):
if event.type == SessionEventType.ASSISTANT_MESSAGE_DELTA:
if hasattr(event.data, 'delta_content') and event.data.delta_content:
print(event.data.delta_content, end="", flush=True)
elif event.type == SessionEventType.TOOL_EXECUTION_START:
tool_name = getattr(event.data, 'tool_name', 'unknown')
print(f"\n[TOOL: {tool_name}]")
session.on(handle_event)
# Send prompt
await session.send_and_wait({
"prompt": "List all resource groups in my Azure subscription"
})
await client.stop()
if __name__ == "__main__":
asyncio.run(main())npm install @github/copilot-sdkimport { CopilotClient, SessionEventType } from '@github/copilot-sdk';
async function main() {
// Initialize the Copilot client
const client = new CopilotClient({
cliArgs: [
'--allow-all-tools',
'--allow-all-paths',
]
});
await client.start();
// Configure Azure MCP server in session config
const azureMcpConfig = {
'azure-mcp': {
type: 'local' as const,
command: 'npx',
args: ['-y', '@azure/mcp@latest', 'server', 'start'],
tools: ['*'], // Enable all Azure MCP tools
}
};
// Create session with MCP servers
const session = await client.createSession({
model: 'gpt-4.1', // Default model; BYOK can override
streaming: true,
mcpServers: azureMcpConfig,
});
// Handle events
session.on((event) => {
if (event.type === SessionEventType.ASSISTANT_MESSAGE_DELTA) {
if (event.data?.deltaContent) {
process.stdout.write(event.data.deltaContent);
}
} else if (event.type === SessionEventType.TOOL_EXECUTION_START) {
const toolName = event.data?.toolName || 'unknown';
console.log(`\n[TOOL: ${toolName}]`);
}
});
// Send prompt
await session.sendAndWait({
prompt: 'List all resource groups in my Azure subscription'
});
await client.stop();
}
main().catch(console.error);go get github.com/github/copilot-sdk/gopackage main
import (
"context"
"fmt"
"log"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
ctx := context.Background()
// Initialize the Copilot client
client, err := copilot.NewClient(copilot.ClientOptions{
CLIArgs: []string{
"--allow-all-tools",
"--allow-all-paths",
},
})
if err != nil {
log.Fatal(err)
}
if err := client.Start(ctx); err != nil {
log.Fatal(err)
}
defer client.Stop(ctx)
// Configure Azure MCP server in session config
azureMcpConfig := map[string]copilot.MCPServerConfig{
"azure-mcp": {
Type: "local",
Command: "npx",
Args: []string{"-y", "@azure/mcp@latest", "server", "start"},
Tools: []string{"*"}, // Enable all Azure MCP tools
},
}
// Create session with MCP servers
session, err := client.CreateSession(ctx, copilot.SessionConfig{
Model: "gpt-4.1", // Default model; BYOK can override
Streaming: true,
MCPServers: azureMcpConfig,
})
if err != nil {
log.Fatal(err)
}
// Handle events
session.OnEvent(func(event copilot.SessionEvent) {
switch event.Type {
case copilot.AssistantMessageDelta:
if event.Data.DeltaContent != "" {
fmt.Print(event.Data.DeltaContent)
}
case copilot.ToolExecutionStart:
fmt.Printf("\n[TOOL: %s]\n", event.Data.ToolName)
}
})
// Send prompt
err = session.SendAndWait(ctx, copilot.Message{
Prompt: "List all resource groups in my Azure subscription",
})
if err != nil {
log.Fatal(err)
}
}dotnet add package GitHub.Copilot.SDKusing GitHub.Copilot.SDK;
using GitHub.Copilot.SDK.Models;
class Program
{
static async Task Main(string[] args)
{
// Initialize the Copilot client
var client = new CopilotClient(new CopilotClientOptions
{
CliArgs = new[] { "--allow-all-tools", "--allow-all-paths" }
});
await client.StartAsync();
// Configure Azure MCP server in session config
var azureMcpConfig = new Dictionary<string, MCPServerConfig>
{
["azure-mcp"] = new MCPServerConfig
{
Type = "local",
Command = "npx",
Args = new[] { "-y", "@azure/mcp@latest", "server", "start" },
Tools = new[] { "*" } // Enable all Azure MCP tools
}
};
// Create session with MCP servers
var session = await client.CreateSessionAsync(new SessionConfig
{
Model = "gpt-4.1", // Default model; BYOK can override
Streaming = true,
McpServers = azureMcpConfig
});
// Handle events
session.OnEvent += (sender, e) =>
{
switch (e.Type)
{
case SessionEventType.AssistantMessageDelta:
if (!string.IsNullOrEmpty(e.Data?.DeltaContent))
{
Console.Write(e.Data.DeltaContent);
}
break;
case SessionEventType.ToolExecutionStart:
Console.WriteLine($"\n[TOOL: {e.Data?.ToolName}]");
break;
}
};
// Send prompt
await session.SendAndWaitAsync(new Message
{
Prompt = "List all resource groups in my Azure subscription"
});
await client.StopAsync();
}
}Note: If startup is slow, use a pinned version (
@azure/mcp@2.0.0-beta.13instead of@latest) or install globally (npm install -g @azure/mcp@latest).
Microsoft Foundry and Microsoft Copilot Studio require remote MCP server endpoints. To self-host the Azure MCP Server for use with these platforms, deploy it as a remote MCP server on Azure Container Apps.
Check out the remote hosting azd templates for deployment options.
- Open GitHub Copilot in VS Code or IntelliJ and switch to Agent mode.
- Click
refreshon the tools list- You should see the Azure MCP Server in the list of tools
- Try a prompt that tells the agent to use the Azure MCP Server, such as
List my Azure Storage containers- The agent should be able to use the Azure MCP Server tools to complete your query
- Check out the documentation and review the troubleshooting guide for commonly asked questions
- We're building this in the open. Your feedback is much appreciated, and will help us shape the future of the Azure MCP server
✨ The Azure MCP Server supercharges your agents with Azure context. Here are some cool prompts you can try:
- List Microsoft Foundry models
- Deploy Microsoft Foundry models
- List Microsoft Foundry model deployments
- List knowledge indexes
- Get knowledge index schema configuration
- Create Microsoft Foundry agents
- List Microsoft Foundry agents
- Connect and query Microsoft Foundry agents
- Evaluate Microsoft Foundry agents
- Get SDK samples for interacting with Microsoft Foundry agent
- Create Microsoft Foundry agent threads
- List Microsoft Foundry agent threads
- Get messages of a Microsoft Foundry thread
- "List my Advisor recommendations"
- "What indexes do I have in my Azure AI Search service 'mysvc'?"
- "Let's search this index for 'my search query'"
- "Convert this audio file to text using Azure Speech Services"
- "Recognize speech from my audio file with language detection"
- "Transcribe speech from audio with profanity filtering"
- "Transcribe audio with phrase hints for better accuracy"
- "Convert text to speech and save to output.wav"
- "Synthesize speech from 'Hello, welcome to Azure' with Spanish voice"
- "Generate MP3 audio from text with high quality format"
- "List my App Configuration stores"
- "Show my key-value pairs in App Config"
- "Help me diagnose issues with my app"
- "Add a database connection for an App Service web app"
- "List the web apps in my subscription"
- "Show me the web apps in my 'my-resource-group' resource group"
- "Get the details for web app 'my-webapp' in 'my-resource-group'"
- "Get the application settings for my web app 'my-webapp' in 'my-resource-group'"
- "Add application setting 'LogLevel' with value 'INFO' to my 'my-webapp' in 'my-resource-group'"
- "Set application setting 'LogLevel' to 'WARNING' to my 'my-webapp' in 'my-resource-group'"
- "Delete application setting 'LogLevel' from my 'my-webapp' in 'my-resource-group'"
- "List the deployments for web app 'my-webapp' in 'my-resource-group'"
- "Get the deployment 'deployment-id' for web app 'my-webapp' in 'my-resource-group'"
- Generate Azure CLI commands based on user intent
Example prompts that generate Azure CLI commands:
- "Get the details for app service plan 'my-app-service-plan'"
- Get installation instructions for Azure CLI, Azure Developer CLI and Azure Functions Core Tools CLI for your platform.
- "Send an SMS message to +1234567890"
- "Send SMS with delivery reporting enabled"
- "Send a broadcast SMS to multiple recipients"
- "Send SMS with custom tracking tag"
- "Send an email from 'sender@example.com' to 'recipient@example.com' with subject 'Hello' and message 'Welcome!'"
- "Send an HTML email to multiple recipients with CC and BCC using Azure Communication Services"
- "Send an email with reply-to address 'reply@example.com' and subject 'Support Request'"
- "Send an email from my communication service endpoint with custom sender name and multiple recipients"
- "Send an email to 'user1@example.com' and 'user2@example.com' with subject 'Team Update' and message 'Please review the attached document.'"
- "List all my managed disks in subscription 'my-subscription'"
- "Show me all disks in resource group 'my-resource-group'"
- "Get details of disk 'my-disk' in resource group 'my-resource-group'"
- "List all virtual machines in my subscription"
- "Show me all VMs in resource group 'my-resource-group'"
- "Get details for virtual machine 'my-vm' in resource group 'my-resource-group'"
- "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"
- "List the container apps in my subscription"
- "Show me the container apps in my 'my-resource-group' resource group"
- "Append entry {"foo":"bar"} to ledger contoso"
- "Get entry with id 2.40 from ledger contoso"
- "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"
- "Show me all my Cosmos DB databases"
- "List containers in my Cosmos DB database"
- "Get Azure Data Explorer databases in cluster 'mycluster'"
- "Sample 10 rows from table 'StormEvents' in Azure Data Explorer database 'db1'"
- "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"
- "List Event Grid subscriptions for topic 'my-topic' in resource group 'my-resourcegroup'"
- "List Event Grid subscriptions for topic 'my-topic' in subscription 'my-subscription'"
- "List Event Grid Subscriptions in subscription 'my-subscription'"
- "List Event Grid subscriptions for topic 'my-topic' in location 'my-location'"
- "Publish an event with data '{"name": "test"}' to topic 'my-topic' using CloudEvents schema"
- "Send custom event data to Event Grid topic 'analytics-events' with EventGrid schema"
- "Get details about a specific file share in my resource group"
- "Create a new Azure managed file share with NFS protocol"
- "Create a file share with 64 GiB storage, 3000 IOPS, and 125 MiB/s throughput"
- "Update the provisioned storage size of my file share"
- "Update network access settings for my file share"
- "Delete a file share from my resource group"
- "Check if a file share name is available"
- "Get details about a file share snapshot"
- "Create a snapshot of my file share"
- "Update tags on a file share snapshot"
- "Delete a file share snapshot"
- "Get a private endpoint connection for my file share"
- "Update private endpoint connection status to Approved"
- "Delete a private endpoint connection"
- "Get file share limits and quotas for a region"
- "Get provisioning recommendations for my file share workload"
- "Get usage data and metrics for my file share"
- "List all secrets in my key vault 'my-vault'"
- "Create a new secret called 'apiKey' with value 'xyz' in key vault 'my-vault'"
- "List all keys in key vault 'my-vault'"
- "Create a new RSA key called 'encryption-key' in key vault 'my-vault'"
- "List all certificates in key vault 'my-vault'"
- "Import a certificate file into key vault 'my-vault' using the name 'tls-cert'"
- "Get the account settings for my key vault 'my-vault'"
- "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"
- "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?"
- "Check if 'my-subnet-id' can host an Azure Managed Lustre with 'my-size' TiB and 'my-sku' in 'my-region'
- Create a 4 TIB Azure Managed Lustre filesystem in 'my-region' attaching to 'my-subnet' in virtual network 'my-virtual-network'
- "Query my Log Analytics workspace"
- "List my resource groups"
- "List my Azure CDN endpoints"
- "Help me build an Azure application using Node.js"
- "List all SQL servers in my subscription"
- "List all SQL servers in my resource group 'my-resource-group'"
- "Show me details about my Azure SQL database 'mydb'"
- "List all databases in my Azure SQL server 'myserver'"
- "Update the performance tier of my Azure SQL database 'mydb'"
- "Rename my Azure SQL database 'mydb' to 'newname'"
- "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'"
- "List my Azure storage accounts"
- "Get details about my storage account 'mystorageaccount'"
- "Create a new storage account in East US with Data Lake support"
- "Get details about my Storage container"
- "Upload my file to the blob container"
- "Generate a Platform Landing Zone"
- "Turn off DDoS protection in my Platform Landing Zone"
- "Turn off Bastion host in my Platform Landing Zone"
The Azure MCP Server provides tools for interacting with 42+ Azure service areas:
- 🧮 Microsoft Foundry - AI model management, AI model deployment, and knowledge index management
- 📊 Azure Advisor - Advisor recommendations
- 🔎 Azure AI Search - Search engine/vector database operations
- 🎤 Azure AI Services Speech - Speech-to-text recognition and text-to-speech synthesis
- ⚙️ Azure App Configuration - Configuration management
- 🕸️ Azure App Service - Web app hosting
- 🛡️ Azure Best Practices - Secure, production-grade guidance
- 🖥️ Azure CLI Generate - Generate Azure CLI commands from natural language
- 📞 Azure Communication Services - SMS messaging and communication
- � Azure Compute - Virtual Machine, Virtual Machine Scale Set, and Disk management
- �🔐 Azure Confidential Ledger - Tamper-proof ledger operations
- 📦 Azure Container Apps - Container hosting
- 📦 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 File Shares - Azure managed file share operations
- ⚡ 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 Migrate - Platform Landing Zone generation and modification guidance
- 📈 Azure Monitor - Logging, metrics, and health monitoring
- ⚖️ Azure Policy - Policies set to enforce organizational standards
- ⚙️ 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 Service Bus - Message queuing
- 🧵 Azure Service Fabric - Managed cluster node operations
- 🏥 Azure Service Health - Resource health status and availability
- 🗄️ Azure SQL Database - Relational database management
- 🗄️ Azure SQL Elastic Pool - Database resource sharing
- 🗄️ Azure SQL Server - Server administration
- 💾 Azure Storage - Blob storage
- Azure Storage Sync - Azure File Sync management operations
- 📋 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
- See our official documentation on learn.microsoft.com 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.
- Use Prompt Templates to set tenant and subscription context once at the beginning of your Copilot session, avoiding repetitive information in subsequent prompts.
- Check the Troubleshooting guide to diagnose and resolve common issues with the Azure MCP Server.
- Review the Known Issues for current limitations and workarounds.
- For advanced troubleshooting, you can enable support logging using the
--dangerously-write-support-logs-to-diroption. - 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 — we’d love to hear from you!
Your credentials are always handled securely through the official Azure Identity SDK - 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.
You should follow Microsoft security guidance for MCP servers, including enabling Entra ID authentication, secure token management, and network isolation. Refer to Microsoft Security Documentation for details.
MCP clients can invoke operations based on the user’s Azure RBAC permissions. Autonomous or misconfigured clients may perform destructive actions. You should review and apply least-privilege RBAC roles and implement safeguards before deployment. Certain safeguards, such as flags to prevent destructive operations, are not standardized in the MCP specification and may not be supported by all clients.
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. 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 collection is on by default. The server supports two telemetry streams:
-
User-provided telemetry: If you configure your own Application Insights connection string via the
APPLICATIONINSIGHTS_CONNECTION_STRINGenvironment variable, telemetry will be sent to your Application Insights resource. -
Microsoft telemetry: By default, telemetry is also sent to Microsoft to help improve the product. This can be disabled separately from user-provided telemetry. See Disabling All Telemetry section below for more details.
To disable all telemetry collection (both user-provided and Microsoft), set the environment variable AZURE_MCP_COLLECT_TELEMETRY to false:
export AZURE_MCP_COLLECT_TELEMETRY=falseTo disable only Microsoft telemetry collection while keeping your own Application Insights telemetry active, set the environment variable AZURE_MCP_COLLECT_TELEMETRY_MICROSOFT to false:
export AZURE_MCP_COLLECT_TELEMETRY_MICROSOFT=falseThis MCP server may interact with clients and services outside Microsoft compliance boundaries. You are responsible for ensuring that any integration complies with applicable organizational, regulatory, and contractual requirements.
This MCP server may use or depend on third party components. You are responsible for reviewing and complying with the licenses and security posture of any third-party components.
Use of this software must comply with all applicable export laws and regulations, including U.S. Export Administration Regulations and local jurisdiction requirements.
This software is provided “as is” without warranties or conditions of any kind, either express or implied. Microsoft shall not be liable for any damages arising from use, misuse, or misconfiguration of this software.
We welcome contributions to the Azure MCP Server! Whether you're fixing bugs, adding new features, or improving documentation, your contributions are welcome.
Please read our Contributing Guide for guidelines on:
- 🛠️ Setting up your development environment
- ✨ Adding new commands
- 📝 Code style and testing requirements
- 🔄 Making pull requests
This project has adopted the Microsoft Open Source Code of Conduct. For more information, see the Code of Conduct FAQ or contact open@microsoft.com with any additional questions or comments.
