使用说明
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,按以下顺序支持多种身份验证方法:
- 环境变量:
AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_CLIENT_SECRET - 管理身份:在Azure中运行时(VM、应用服务等)
- Azure命令行界面:
az login凭证 - Azure PowerShell:
Connect-AzAccount凭证 - 交互式浏览器:作为后备方案
对于当地发展,最简单的方法是:
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订阅IDresource_group(可选):按资源组名称筛选
示例:
{
"subscription_id": "12345678-1234-1234-1234-123456789012",
"resource_group": "rg-webapp-dev"
}
5. list_storage_accounts
列出Azure订阅中的所有存储帐户。
参数:
subscription_id(必需):Azure订阅IDresource_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应用程序
故障排除
身份验证问题
如果遇到身份验证错误:
- 验证您是否已登录:
az login - 检查您的订阅访问权限:
az account list - 确保适当的RBAC权限(读者角色最低)
MCP客户端连接问题
- 验证服务器是否正确启动:
python -m azure_mcp.server start - 检查stderr中的日志消息(stdout是为MCP协议保留的)
- 确保您的MCP客户端配置正确
导入错误
如果您收到模块导入错误:
pip install -e .
贡献
欢迎投稿!请随时提交拉取请求或未决问题。
许可证
本项目按原样提供,用于教育和发展目的。
