Azure MCP Server

Microsoft's MCP server for querying and managing Azure resources, from storage and databases to AKS.

Official · Microsoft C# Local · stdio Cloud platformsDatabasesDevOps and monitoring

103 popularity score ★ 3.8k ↓ 199k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add azure -- npx -y @azure/mcp@latest server start
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "azure": {
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "azure": {
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "azure": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.azure]
command = "npx"
args = ["-y", "@azure/mcp@latest", "server", "start"]
Gemini CLITerminal
gemini mcp add --scope user azure npx -- -y @azure/mcp@latest server start
Local (PyPI)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add azure -- uvx --from msmcp-azure azmcp server start
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "azure": {
      "command": "uvx",
      "args": [
        "--from",
        "msmcp-azure",
        "azmcp",
        "server",
        "start"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "azure": {
      "command": "uvx",
      "args": [
        "--from",
        "msmcp-azure",
        "azmcp",
        "server",
        "start"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "azure": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "msmcp-azure",
        "azmcp",
        "server",
        "start"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.azure]
command = "uvx"
args = ["--from", "msmcp-azure", "azmcp", "server", "start"]
Gemini CLITerminal
gemini mcp add --scope user azure uvx -- --from msmcp-azure azmcp server start
Local (container)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Claude CodeTerminal
claude mcp add azure -- docker run -i --rm --env-file '<ABSOLUTE_PATH_TO_ENV_FILE>' mcr.microsoft.com/azure-sdk/azure-mcp:latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "azure": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "<ABSOLUTE_PATH_TO_ENV_FILE>",
        "mcr.microsoft.com/azure-sdk/azure-mcp:latest"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "azure": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "<ABSOLUTE_PATH_TO_ENV_FILE>",
        "mcr.microsoft.com/azure-sdk/azure-mcp:latest"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "azure": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "<ABSOLUTE_PATH_TO_ENV_FILE>",
        "mcr.microsoft.com/azure-sdk/azure-mcp:latest"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.azure]
command = "docker"
args = ["run", "-i", "--rm", "--env-file", "<ABSOLUTE_PATH_TO_ENV_FILE>", "mcr.microsoft.com/azure-sdk/azure-mcp:latest"]
Gemini CLITerminal
gemini mcp add --scope user azure docker -- run -i --rm --env-file '<ABSOLUTE_PATH_TO_ENV_FILE>' mcr.microsoft.com/azure-sdk/azure-mcp:latest

Settings 10

AZURE_TOKEN_CREDENTIALS Optional: Pins the credential to use: dev, prod or one credential name such as AzureCliCredential. Unset, it tries developer sign-ins in turn.
AZURE_CLOUD Optional: Sovereign cloud such as AzureChinaCloud or AzureUSGovernment. Same as --cloud. Default AzureCloud.
AZURE_MCP_COLLECT_TELEMETRY Optional: Set to false to stop all telemetry. Default true.
AZURE_MCP_COLLECT_TELEMETRY_MICROSOFT Optional: Set to false to stop only the telemetry sent to Microsoft. Default true.
APPLICATIONINSIGHTS_CONNECTION_STRING secret Optional: Sends telemetry to your own Application Insights resource as well.
AZURE_MCP_CLIENT_ID Optional: Client ID of the app registration to sign in with.
AZURE_MCP_ONLY_USE_BROKER_CREDENTIAL Optional: Set true to sign in only through the browser or system broker.
AZURE_MCP_BROWSER_AUTH_TIMEOUT_SECONDS Optional: How long interactive browser sign-in waits, in seconds. Default 300.
AZURE_MCP_ENABLE_OTLP_EXPORTER Optional: Set true to export traces over OTLP.
ASPNETCORE_URLS Optional: Address to listen on with --transport http. One URL only. Default http://127.0.0.1:5001. For HTTP transport.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

Microsoft's own server for working with Azure from a chat client. It reaches a long list of services, from storage accounts and Cosmos DB to Key Vault, AKS, App Service, Service Bus, Log Analytics queries, AI Search and Foundry. Next to the resource tools sit guidance tools for Bicep and Terraform, a retail price lookup and a helper that writes Azure CLI commands.

In the default namespace mode each service is one tool. The client sends an intent and can ask the tool to list its sub-commands before it picks one. Counted in the source of the published release, that comes to 69 tools, or 70 when the azqr extension is switched on. The code also has a consolidated mode with 168 task-shaped tools, which the README never mentions. --mode all gives one tool per command and --mode single gives one azure tool. Unless you pass --disable-proxy-tools, it also proxies the Microsoft Learn documentation tools.

You can run it locally through npx, uvx, a .NET tool or the Docker image, or host it yourself over HTTP. In HTTP mode it listens on 127.0.0.1:5001 unless ASPNETCORE_URLS points elsewhere. Sign-in goes through the Azure Identity credential chain, so an existing az login usually does the job. Before a command returns something sensitive such as a Key Vault secret, the server asks the user to confirm. Starting it with --dangerously-disable-elicitation removes that prompt.

What it needs

RuntimeNode.js
Runs onmacOS, Windows, Linux
AzurePaid planActs with the RBAC roles of the signed-in identity, and resources it creates are billed to that subscription.
Also
  • An Azure sign-in on the machine, for example az login

Sign in before starting it, for example with az login or Connect-AzAccount, or pick a credential with AZURE_TOKEN_CREDENTIALS. The uvx way needs uv. The .NET tool needs the .NET 10 SDK. For Docker, put a service principal's tenant ID, client ID and client credential in an env file and pass its full path with --env-file.

Limits

  • Early release The current release on npm is a prerelease beta.
  • Limit It can do whatever the signed-in identity's roles allow, deletes included. Start it with --read-only to block writes.
  • Limit The default mode exposes 69 tools. --namespace or --tool narrows the set for clients with a tool cap.
  • Not covered Over HTTP, a namespace whose commands all need local access is left out.
  • Region Uses the public cloud unless --cloud or AZURE_CLOUD names the China or US Government cloud.
  • Limit Telemetry goes to Microsoft by default. Setting AZURE_MCP_COLLECT_TELEMETRY to false stops it.
  • Limit Interactive browser sign-in gives up after 300 seconds unless AZURE_MCP_BROWSER_AUTH_TIMEOUT_SECONDS is raised.

Who it suits

Teams already on Azure who want a chat client to look at and change their resources with their own credentials, from a laptop or a shared self-hosted endpoint. Because it can delete anything the signed-in roles permit, give it a least-privilege identity or run it with --read-only. If all you need is Microsoft documentation, the Microsoft Learn server (microsoft-learn-mcp, which we also list) answers that without touching a subscription.

Tools 60 of 69

34 only read, 4 change things, 22 can delete or overwrite. A ? marks an optional parameter.

get_azure_bestpractices
Azure best-practice guidance for code generation and deployment.intent: stringcommand?: stringparameters?: objectlearn?: boolean
subscription_list
Lists the Azure subscriptions the signed-in identity can see.
group_list
Lists resource groups in a subscription.
group_resource_list
Lists the resources inside one resource group.
storage deletes
Storage accounts, blob containers, blobs and tables.intent: stringcommand?: stringparameters?: objectlearn?: boolean
fileshares deletes
Managed file shares and their snapshots.intent: stringcommand?: stringparameters?: objectlearn?: boolean
storagesync deletes
Azure File Sync services, groups and endpoints.intent: stringcommand?: stringparameters?: objectlearn?: boolean
managedlustre deletes
Managed Lustre file systems.intent: stringcommand?: stringparameters?: objectlearn?: boolean
cosmos
Cosmos DB accounts, databases, containers and item queries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
sql deletes
Azure SQL servers, databases, firewall rules and elastic pools.intent: stringcommand?: stringparameters?: objectlearn?: boolean
postgres deletes
PostgreSQL flexible servers, databases, tables and queries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
mysql deletes
MySQL flexible servers, databases, tables and queries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
redis deletes
Azure Cache for Redis and Azure Managed Redis resources.intent: stringcommand?: stringparameters?: objectlearn?: boolean
kusto
Data Explorer clusters, databases, tables and KQL queries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
keyvault deletes
Key Vault keys, secrets and certificates.intent: stringcommand?: stringparameters?: objectlearn?: boolean
confidentialledger changes
Reads and appends Confidential Ledger entries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
role
Role assignments and definitions.intent: stringcommand?: stringparameters?: objectlearn?: boolean
policy
Policy assignments in a subscription.intent: stringcommand?: stringparameters?: objectlearn?: boolean
compute deletes
Virtual machines, scale sets and managed disks.intent: stringcommand?: stringparameters?: objectlearn?: boolean
aks
Kubernetes Service clusters and node pools.intent: stringcommand?: stringparameters?: objectlearn?: boolean
acr
Container Registry registries and repositories.intent: stringcommand?: stringparameters?: objectlearn?: boolean
containerapps
Container Apps in a subscription.intent: stringcommand?: stringparameters?: objectlearn?: boolean
appservice deletes
App Service web apps, settings and deployments.intent: stringcommand?: stringparameters?: objectlearn?: boolean
functionapp
Function apps and their settings.intent: stringcommand?: stringparameters?: objectlearn?: boolean
functions
Templates and guidance for writing Azure Functions.intent: stringcommand?: stringparameters?: objectlearn?: boolean
appconfig deletes
App Configuration stores and key-values.intent: stringcommand?: stringparameters?: objectlearn?: boolean
servicebus
Service Bus queues, topics, subscriptions and messages.intent: stringcommand?: stringparameters?: objectlearn?: boolean
eventhubs deletes
Event Hubs namespaces, hubs and consumer groups.intent: stringcommand?: stringparameters?: objectlearn?: boolean
eventgrid changes
Event Grid topics, subscriptions and publishing events.intent: stringcommand?: stringparameters?: objectlearn?: boolean
signalr
SignalR Service runtimes.intent: stringcommand?: stringparameters?: objectlearn?: boolean
communication changes
Sends SMS and email through Communication Services.intent: stringcommand?: stringparameters?: objectlearn?: boolean
monitor deletes
Log Analytics queries, metrics, workspaces and web tests.intent: stringcommand?: stringparameters?: objectlearn?: boolean
applicationinsights
Application Insights code recommendations.intent: stringcommand?: stringparameters?: objectlearn?: boolean
grafana
Managed Grafana workspaces.intent: stringcommand?: stringparameters?: objectlearn?: boolean
workbooks deletes
Monitor workbooks.intent: stringcommand?: stringparameters?: objectlearn?: boolean
advisor deletes
Advisor recommendations.intent: stringcommand?: stringparameters?: objectlearn?: boolean
resourcehealth
Availability status and service health events.intent: stringcommand?: stringparameters?: objectlearn?: boolean
applens
Runs App Lens diagnostics on a resource.intent: stringcommand?: stringparameters?: objectlearn?: boolean
search
AI Search services, indexes and queries.intent: stringcommand?: stringparameters?: objectlearn?: boolean
speech changes
Speech to text and text to speech.intent: stringcommand?: stringparameters?: objectlearn?: boolean
foundryextensions
Foundry models, deployments and agents.intent: stringcommand?: stringparameters?: objectlearn?: boolean
loadtesting deletes
Load Testing resources, tests and runs.intent: stringcommand?: stringparameters?: objectlearn?: boolean
virtualdesktop
Virtual Desktop host pools and session hosts.intent: stringcommand?: stringparameters?: objectlearn?: boolean
iothub
IoT Hub resources.intent: stringcommand?: stringparameters?: objectlearn?: boolean
iotoperations
IoT Operations instances.intent: stringcommand?: stringparameters?: objectlearn?: boolean
azurebackup deletes
Backup vaults, policies and protected items.intent: stringcommand?: stringparameters?: objectlearn?: boolean
resiliency deletes
Resilience management and drills.intent: stringcommand?: stringparameters?: objectlearn?: boolean
sreagent deletes
SRE Agent resources.intent: stringcommand?: stringparameters?: objectlearn?: boolean
servicefabric deletes
Service Fabric managed clusters and nodes.intent: stringcommand?: stringparameters?: objectlearn?: boolean
quota
Quota usage and region availability.intent: stringcommand?: stringparameters?: objectlearn?: boolean
pricing
Retail prices for Azure services.intent: stringcommand?: stringparameters?: objectlearn?: boolean
marketplace
Marketplace products.intent: stringcommand?: stringparameters?: objectlearn?: boolean
azuremigrate deletes
Azure Migrate projects and platform landing zones.intent: stringcommand?: stringparameters?: objectlearn?: boolean
deploy
Deployment plans, app logs and pipeline guidance.intent: stringcommand?: stringparameters?: objectlearn?: boolean
bicepschema
Bicep schemas for resource types.intent: stringcommand?: stringparameters?: objectlearn?: boolean
azureterraform
Terraform guidance for Azure resources.intent: stringcommand?: stringparameters?: objectlearn?: boolean
cloudarchitect
Walks through a cloud architecture design.intent: stringcommand?: stringparameters?: objectlearn?: boolean
wellarchitectedframework
Well-Architected Framework service guides.intent: stringcommand?: stringparameters?: objectlearn?: boolean
optimization
Cost optimization recommendations and cheaper alternatives.intent: stringcommand?: stringparameters?: objectlearn?: boolean
datadog
Lists resources watched by an Azure Native Datadog monitor.intent: stringcommand?: stringparameters?: objectlearn?: boolean

Similar servers