这是一个基于Model Context Protocol (MCP) 实现的服务器,用于赋能大型语言模型 (LLM) 客户端,使其能够与微软Azure云服务进行交互,执行管理和查询操作。
项目简介
Azure MCP 服务器将复杂的Azure命令行界面 (Azure CLI) 操作封装成MCP定义的工具 (Tools) 和资源 (Resources),使得LLM客户端(如支持MCP的聊天助手)可以通过标准协议调用这些功能,从而实现对Azure云资源的智能管理和自动化。
主要功能点
-
Azure资源管理: 支持列举、查看、创建、删除、启动、停止等多种Azure服务资源,包括:
- 虚拟机 (VMs) 和虚拟机规模集 (VMSS)
- Azure Kubernetes Service (AKS)
- 存储账户和容器
- Web应用和函数应用
- 虚拟网络和网络安全组
- 公共IP地址
- SQL服务器和Cosmos DB账户
- Key Vault 和密钥管理
- 容器注册表和仓库
- 资源组
- 角色分配和定义
- 订阅信息
-
Azure CLI 封装: 将Azure CLI命令作为核心执行机制,提供强大的灵活性。
-
服务主体认证: 使用Azure服务主体进行安全认证和权限控制。
-
自动化配置: 提供脚本帮助用户创建服务主体并生成 '.env' 配置文件。
-
标准MCP接口: 遵循MCP协议,通过JSON-RPC与客户端通信。
安装步骤
- 安装 Python 3.13 或更高版本。
- 安装并配置 Azure CLI: 确保您已安装 Azure CLI,并能通过 'az login' 登录您的 Azure 账号。
- 克隆仓库:
git clone https://github.com/JCallico/py-az-mcp.git cd py-az-mcp - 安装依赖: 使用 'uv' 或 'pip' 安装项目依赖。建议使用 'uv'。
# 使用 uv 安装 (推荐) uv pip sync # 或者 使用 uv 从 pyproject.toml 安装 uv pip install -e . # 或者 使用 pip 安装到虚拟环境 python -m venv .venv source .venv/bin/activate # 或 .venv\Scripts\activate.bat on Windows pip install -e . pip install 'mcp[cli]' # 确保 mcp[cli] 也安装在环境中 - 配置Azure服务主体: 运行脚本自动创建服务主体并生成 '.env' 配置文件。
按照提示进行交互式认证。脚本将在当前目录下生成一个包含Azure凭据的 '.env' 文件。python create_service_principal.py
服务器配置 (供 MCP 客户端使用)
此 MCP 服务器是为 MCP 客户端设计的后端服务。您的 MCP 客户端(例如支持 MCP 的 LLM 应用)需要配置如何启动并连接到此服务器。配置信息通常是一个 JSON 格式的结构,指定服务器的名称、启动服务器所需的命令及其参数。
以下是一个示例配置结构,您需要根据您的 MCP 客户端的要求进行调整和填写:
{ "mcpServers": { "Azure": { // MCP服务器的名称,供客户端界面显示 "command": "uv", // 启动服务器的可执行命令,例如 'uv', 'python', 或虚拟环境中的路径 "args": [ // 传递给 command 的参数列表 "run", // uv 的参数 "--with", "mcp[cli]", // uv 的参数,确保运行环境包含 mcp[cli] "mcp", // mcp 命令 "run", // mcp run 命令 "/your-path-to/py-az-mcp/server-azure.py" // 指向服务器主脚本的绝对路径或相对路径 ] } } }
- 请将 '"/your-path-to/py-az-mcp/"' 替换为您实际克隆仓库的路径。
- 确保您的MCP客户端的执行环境能够找到 'uv' 命令或您指定的 Python 解释器,并且能够加载 '.env' 文件中的 Azure 凭据。
- 一些MCP客户端可能直接支持通过 StdIO 方式启动服务器,您只需配置好正确的启动命令即可。
基本使用方法
服务器通过 MCP 协议暴露功能。LLM 客户端会识别服务器提供的工具和资源。
-
调用工具: 客户端可以通过调用名为 'azure_cli' 的工具,并提供一个包含 Azure CLI 命令字符串的参数,来执行任意 Azure CLI 操作。
- 例如:向 LLM 提问 "运行 'az account list --output json' 命令",客户端可能会调用 'azure_cli' 工具,参数为 '{"command": "account list --output json"}'。
-
访问资源: 客户端可以访问 MCP 服务器定义的资源路径,以获取特定类型的 Azure 数据。
- 例如:向 LLM 提问 "列出所有虚拟机",客户端可能会请求资源路径 'azure://compute/vm/list',服务器将执行相应的 Azure CLI 命令并返回结果。
在配置好您的 MCP 客户端并连接到此服务器后,您可以通过与客户端进行自然语言交互来管理您的 Azure 资源。
信息
分类
开发者工具