mcpField
A
Azure MCP Server

Azure MCP Server

本地服务
github.com/JCallico云与基础设施173 周前更新

关于 Azure MCP Server

Azure MCP Server 通过 Azure CLI 命令提供 Azure Cloud 操作,面向使用 MCP 客户端管理 Azure 资源的用户,并支持服务主体认证及多类云资源操作。

主要功能

  1. 01管理虚拟机和规模集
  2. 02管理存储账户与容器
  3. 03操作 Web 应用和函数应用
  4. 04查看网络与数据库资源
  5. 05管理 Key Vault 密钥和托管身份
  6. 06管理资源组、角色与订阅

适用场景

  1. 01列出或管理 Azure 计算资源
  2. 02创建或删除存储及应用资源
  3. 03查看 Azure 订阅和资源组
  4. 04管理 Key Vault 密钥及角色分配

MCP 相关

该 MCP 服务将基于 Azure CLI 的操作作为工具提供给 MCP 客户端,涵盖计算、存储、网络、数据库、安全和订阅管理。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Azure MCP 服务

一种模型上下文协议(MCP)服务实现,可通过 Azure CLI 命令以编程方式访问 Azure Cloud 资源。此服务支持与 Azure 服务无缝集成,并支持范围广泛的 Azure 操作。

功能

身份验证
  • 支持服务主体身份验证
  • 自动管理令牌
  • 环境变量配置
支持的 Azure 操作
计算
  • 虚拟机(列出、显示、启动、停止、删除、重启)
  • 虚拟机规模集(列出、缩放、更新)
  • Azure Kubernetes Service(列出集群)
存储
  • 存储帐户(列出、显示、创建、删除)
  • 存储容器(列出、创建、删除)
应用服务
  • Web 应用(列出、显示、创建、删除、启动、停止、重启)
  • Function 应用(列出、显示、删除、启动、停止、重启)
  • 部署管理
网络
  • 虚拟网络(列出)
  • 网络安全组(列出)
  • 公共 IP 地址(列出)
数据库
  • SQL 服务器(列出)
  • Cosmos DB 帐户(列出)
安全
  • Key Vault(列出、创建、删除)
  • 密钥管理(列出、设置、删除)
  • 托管标识(列出)
容器注册表
  • 注册表管理(列出、创建、删除、更新)
  • 存储库管理(列出)
资源管理
  • 资源组(列出、显示、创建、删除)
  • 角色分配(列出、创建、删除)
  • 角色定义(列出)
  • 订阅管理(列出、显示)

先决条件

  • Python 3.13 或更高版本
  • 已安装并配置 Azure CLI
  • Azure 订阅和相应权限
  • 具有所需访问权限的服务主体

安装

  1. 克隆存储库:
git clone <repository-url>
cd py-az-mcp
  1. 使用 uv 安装依赖项:
uv pip sync

或直接从 pyproject.toml 安装:

uv pip install -e .

配置

  1. 运行实用脚本,创建服务主体并配置环境变量:
python create_service_principal.py

此脚本将:

  • 通过交互方式验证你的 Azure 身份
  • 创建具有 Contributor 角色的新服务主体
  • 自动生成包含所需凭据的 .env 文件:
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_TENANT_ID
    • AZURE_SUBSCRIPTION_ID

注意:出于安全考虑,.env 文件会自动从 git 跟踪中排除。

Claude Desktop 配置

如需在 Claude Desktop 中使用此 MCP 服务,请按以下说明配置:

  1. 创建或更新 Claude Desktop 配置文件:
{
  "mcpServers": {
    "Azure": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "/your-path-to/py-az-mcp/server-azure.py"
      ]
    }
  }
}

配置文件位于:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json
  1. 将两个路径中的 YOUR_USERNAME 替换为你的系统用户名。

  2. 确保已正确设置虚拟环境:

cd /Users/YOUR_USERNAME/Source/Code/py-az-mcp
python -m venv .venv
source .venv/bin/activate
pip install mcp[cli]
  1. 验证配置:
    • 打开 Claude Desktop
    • 点击设置图标(⚙️)
    • 转到“MCP Servers”部分
    • Azure 服务应显示在列表中并已启用

注意:Claude Desktop 需要时会自动启动该服务。通过 Claude 使用 Azure 命令前,请确保已正确配置 .env 文件中的所有环境变量。

用法

  1. 启动 MCP 服务:
uv run --with mcp[cli] mcp run server-azure.py
  1. 服务将在 http://127.0.0.1:6274 上可用
API 调用示例

列出所有订阅:

curl -X POST http://127.0.0.1:6274/tool/azure-cli -H "Content-Type: application/json" -d '{"command": "account list --output json"}'

列出所有资源组:

curl -X POST http://127.0.0.1:6274/tool/azure-cli -H "Content-Type: application/json" -d '{"command": "group list --output json"}'

依赖项

  • Python >= 3.13
  • mcp[cli] >= 1.6.0
  • python-dotenv >= 1.0.0
  • asyncio >= 3.4.3
  • Azure CLI >= 2.57.0(系统要求)

项目结构

  • server-azure.py:集成 Azure CLI 的 MCP 服务主实现
  • create_service_principal.py:用于创建 Azure 服务主体的实用脚本
  • main.py:包入口点(占位文件)
  • pyproject.toml:项目依赖项和配置
  • .env:环境变量配置(不纳入 git 跟踪)
  • .python-version:Python 版本要求

错误处理

该服务包含全面的错误处理:

  • 验证所有响应的 JSON 格式
  • 捕获并格式化 Azure CLI 错误
  • 处理身份验证错误
  • 验证参数

安全注意事项

  • 使用服务主体身份验证
  • 支持通过环境变量配置敏感数据
  • 实施适当的错误处理,防止信息泄露
  • 验证所有输入参数

贡献

  1. Fork 仓库
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建新的 Pull Request

许可证

MIT 许可证

版权所有 (c) 2025

特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,以及允许获得本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论此类责任是因合同、侵权还是其他原因引起,且无论其是否与本软件或本软件的使用或其他交易有关。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。