Azure MCP Python 服务器

一个基于Python的Azure Model Context Protocol (MCP)服务器实现,通过轻量级的异步JSON-RPC接口提供Azure资源访问和管理工具。

  • by dkuwcreator
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dkuwcreator/azure-mcp-python

使用说明

Azure MCP Python服务器

Azure模型上下文协议(MCP)服务器的基于Python的实现。通过与MCP规范兼容的轻量级异步JSON-RPC接口提供Azure资源访问和管理工具,无需Node.js或npm。

特性

  • ✅ 纯Python实现:使用asyncio和官方MCP Python SDK构建
  • ✅ Azure身份验证:用途 azure.identity.DefaultAzureCredential 用于灵活的身份验证
  • ✅ 基于stdio的JSON-RPC:标准MCP stdio传输,实现最大兼容性
  • ✅ Azure管理工具:访问Azure订阅、资源和存储帐户
  • ✅ 异步/等待:用于高效I/O操作的现代异步Python

安装

先决条件

  • Python 3.10或更高版本
  • Azure订阅和适当的凭据

从源代码安装

git clone https://github.com/dkuwcreator/azure-mcp-python.git
cd azure-mcp-python
pip install -e .

开发安装

pip install -e ".[dev]"

认证

服务器使用Azure DefaultAzureCredential,按以下顺序支持多种身份验证方法:

  1. 环境变量: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
  2. 管理身份:在Azure中运行时(VM、应用服务等)
  3. Azure命令行界面: az login 凭证
  4. Azure PowerShell: Connect-AzAccount 凭证
  5. 交互式浏览器:作为后备方案

对于当地发展,最简单的方法是:

az login

用法

运行服务器

使用stdio传输启动MCP服务器:

python -m azure_mcp.server

或者使用已安装的脚本:

azure-mcp

可用工具

服务器公开了以下Azure管理工具:

1. list_subscriptions

列出经过身份验证的用户可访问的所有Azure订阅。

参数:无

示例响应:

Found 2 subscription(s):

- My Dev Subscription (12345678-1234-1234-1234-123456789012) - Enabled
- My Prod Subscription (87654321-4321-4321-4321-210987654321) - Enabled

2. get_subscription_info

获取特定Azure订阅的详细信息。

参数:

  • subscription_id (必需):Azure订阅ID

示例:

{
  "subscription_id": "12345678-1234-1234-1234-123456789012"
}

3. list_resource_groups

列出Azure订阅中的所有资源组。

参数:

  • subscription_id (必需):Azure订阅ID

示例响应:

Found 3 resource group(s):

- rg-webapp-dev (Location: eastus)
- rg-storage-prod (Location: westus2)
- rg-networking (Location: centralus)

4. list_resources

列出Azure订阅或资源组中的所有资源。

参数:

  • subscription_id (必需):Azure订阅ID
  • resource_group (可选):按资源组名称筛选

示例:

{
  "subscription_id": "12345678-1234-1234-1234-123456789012",
  "resource_group": "rg-webapp-dev"
}

5. list_storage_accounts

列出Azure订阅中的所有存储帐户。

参数:

  • subscription_id (必需):Azure订阅ID
  • resource_group (可选):按资源组名称筛选

示例响应:

Found 2 storage account(s) in subscription:

- mystorageaccount (Standard_LRS, StorageV2) in eastus
- backupstorage (Standard_GRS, StorageV2) in westus2

MCP配置

要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将其添加到MCP设置配置中:

Claude桌面配置

编辑您的Claude Desktop配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

添加服务器配置:

{
  "mcpServers": {
    "azure": {
      "command": "python",
      "args": ["-m", "azure_mcp.server"]
    }
  }
}

建筑

服务器遵循MCP规范并实现:

  • JSON-RPC 2.0:所有消息都符合JSON-RPC标准
  • stdio运输:通过标准输入/输出进行通信
  • 异步操作:基于异步构建,用于高效的Azure API调用
  • 错误处理:优雅的错误处理,信息丰富

项目结构

azure-mcp-python/
├── src/
│   └── azure_mcp/
│       ├── __init__.py       # Package initialization
│       ├── __main__.py       # Module entry point
│       └── server.py         # Main MCP server implementation
├── pyproject.toml            # Project configuration and dependencies
├── README.md                 # This file
└── .gitignore               # Git ignore rules

发展

运行测试

pytest

代码格式化

black src/

代码检查

ruff check src/

依赖项

  • 主控程序:官方模型上下文协议SDK
  • 蔚蓝身份:Azure身份验证库
  • azure mgmt资源:Azure资源管理客户端
  • azure mgmt存储:Azure存储管理客户端
  • azure mgmt订阅:Azure订阅管理客户端
  • 点击:命令行界面框架
  • 安尼奥:异步I/O库

与@azure/mcp的比较

此Python实现遵循与官方Azure MCP服务器相同的设计原则(@azure/mcp):

  • ✅ 使用Azure SDK进行身份验证和资源管理
  • ✅ 通过stdio传输实现MCP规范
  • ✅ 提供类似的Azure管理工具
  • ✅ 通过DefaultAzureCredential支持相同的身份验证方法

主要区别:

  • 用Python而不是TypeScript/Node.js编写
  • 使用Python的async/await而不是JavaScript Promise
  • 不需要npm或Node.js运行时
  • 重量更轻,更容易嵌入Python应用程序

故障排除

身份验证问题

如果遇到身份验证错误:

  1. 验证您是否已登录: az login
  2. 检查您的订阅访问权限: az account list
  3. 确保适当的RBAC权限(读者角色最低)

MCP客户端连接问题

  1. 验证服务器是否正确启动: python -m azure_mcp.server start
  2. 检查stderr中的日志消息(stdout是为MCP协议保留的)
  3. 确保您的MCP客户端配置正确

导入错误

如果您收到模块导入错误:

pip install -e .

贡献

欢迎投稿!请随时提交拉取请求或未决问题。

许可证

本项目按原样提供,用于教育和发展目的。

参考文献