Az
azops-mcp

Getting Started

Get azops-mcp running in under five minutes.


Prerequisites

RequirementVersionCheck
Python3.10+python3 --version
Azure CLIanyaz version
uv (recommended)anyuv --version

You need to be authenticated with Azure CLI (az login) or have Service Principal credentials ready. For Docker-based usage you also need Docker (or Podman) with Compose v2.


Installation

Option A: Install from PyPI (recommended)

The fastest way — no clone needed:

# With pip
pip install azops-mcp

# Or with uv
uv pip install azops-mcp

After installing, the azops-mcp command is available on your PATH. Verify with: azops-mcp --help

Option B: Run with uvx (zero-install)

uvx runs Python packages in temporary, isolated environments — nothing is installed permanently:

uvx azops-mcp

Option C: Quick Start Script

git clone https://github.com/artemkozlenkov/azops-mcp.git
cd azops-mcp
./quickstart.sh

The script creates a .venv, installs all dependencies, and walks you through configuration.

Option D: Manual Install from Source

git clone https://github.com/artemkozlenkov/azops-mcp.git
cd azops-mcp
uv venv --python 3.12
uv pip install -e .
cp .env.example .env

Edit .env to set at least AZURE_SUBSCRIPTION_ID, or leave it blank and use the set_subscription tool in chat.

Option E: Docker

git clone https://github.com/artemkozlenkov/azops-mcp.git
cd azops-mcp
cp .env.example .env          # edit with your credentials
docker compose build
docker compose run --rm mcp-server

Connect to Your AI Client

Claude Desktop

Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Important: You must use the full absolute path to uvx. Claude Desktop does not inherit your shell's PATH. Find the path with which uvx.

claude_desktop_config.json — uvxjson
{
  "mcpServers": {
    "azops-mcp": {
      "command": "/Users/YOUR_USERNAME/.local/bin/uvx",
      "args": ["azops-mcp"]
    }
  }
}
claude_desktop_config.json — pip installjson
{
  "mcpServers": {
    "azops-mcp": {
      "command": "/Users/YOUR_USERNAME/.local/bin/azops-mcp"
    }
  }
}

Cursor

~/.cursor/mcp.jsonjson
{
  "mcpServers": {
    "azops-mcp": {
      "command": "uvx",
      "args": ["azops-mcp"]
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.jsonjson
{
  "mcpServers": {
    "azops-mcp": {
      "command": "uvx",
      "args": ["azops-mcp"]
    }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.jsonjson
{
  "servers": {
    "azops-mcp": {
      "command": "uvx",
      "args": ["azops-mcp"]
    }
  }
}

Zed

Zed settings.jsonjson
{
  "context_servers": {
    "azops-mcp": {
      "command": {
        "path": "uvx",
        "args": ["azops-mcp"]
      }
    }
  }
}

Continue (VS Code / JetBrains)

~/.continue/config.yamlyaml
mcpServers:
  - name: azops-mcp
    command: uvx
    args:
      - azops-mcp

Environment Variables

To pass Azure credentials or other config to the server, add an "env" key:

{
  "mcpServers": {
    "azops-mcp": {
      "command": "uvx",
      "args": ["azops-mcp"],
      "env": {
        "AZURE_SUBSCRIPTION_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  }
}

Restart your AI client after saving the configuration.


First Commands

Once connected, try these in the chat:

List my Azure subscriptions
Show all resource groups
What VMs are running in the "production" resource group?
Check my Azure auth status

The assistant calls the corresponding MCP tools and returns the results inline.


Next Steps