使用说明
🔷 Azure MCP服务器(Python)
一个强大的 Python实现 Azure服务的模型上下文协议(MCP)服务器。启用AI助手,如 GitHub Copilot, 克劳德, GPT-4,以及其他与Azure资源无缝交互的工具。
✨ 亮点
| 特性 | 描述 |
|---|---|
| 🔐 安全认证 | 具有DefaultAzureCredentialchain的Azure标识 |
| 🛠️ 94 Azure工具 | 全面覆盖10个Azure服务系列 |
| 💰 成本管理 | 查询成本、预测、预算 (不在微软的.NET版本中) |
| 👥 参赛者ID | 通过Microsoft Graph访问用户、组和应用程序 (不在微软的.NET版本中) |
| 📱 通信服务 | 短信、电子邮件、电话号码 (不在微软的.NET版本中) |
| 🔎 Azure人工智能搜索 | 全文搜索、索引、文档管理 (不在微软的.NET版本中) |
| ☁️ AI铸造就绪 | 与Azure AI Foundry代理服务兼容 |
| 🧩 模块化设计 | 仅安装所需的Azure服务 |
| 📚 证据充分的 | 面向用户和贡献者的全面指南 |
🚀 快速开始
安装
```bash
底座安装
pip安装azure mcp
提供特定服务
pip安装azure mcp[宇宙,成本,存储]
所有服务
pip安装azure mcp[全部] ```
使用VS代码
添加到您的VS代码`settings.json `:
```json { “mcp.servers”:{ “蔚蓝”:{ “命令”:“azure mcp”, “args”: [“--stdio”] } } } ```
认证
```bash
登录Azure
az登录
运行服务器
蔚蓝mcp ```
� 先决条件和权限
认证
# Local development - just login with Azure CLI
az login
对于生产部署(Azure容器应用程序),请使用 管理身份。参见 身份验证指南.
所需权限(快速参考)
| 家庭 | 角色/权限 | 范围 |
|---|---|---|
| 所有工具 | Reader |
订阅 |
| 成本管理 | Cost Management Reader |
订阅 |
| 存储 | Storage Blob/Table/Queue Data Reader 或 Contributor |
订阅或帐户 |
| 监视器 | Monitoring Reader + Log Analytics Reader |
订阅/工作区 |
| 应用洞察 | Log Analytics Reader |
工作区 |
| Cosmos DB(控制) | Cosmos DB Account Reader Role |
订阅 |
| Cosmos数据库(数据) | Built-in Data Contributor +自定义角色 |
每个帐户 |
| Azure人工智能搜索 | Search Index Data Reader/Contributor |
按搜索服务 |
| 参赛者ID | User.Read.All, Group.Read.All等等。 |
Microsoft Graph API |
| 通信 | 基于连接字符串 | 按资源 |
📖 全参考:参见 docs/permissions.md 了解每个工具的完整RBAC文档、最小权限与完全访问权限角色集、自定义角色要求和设置脚本。
�🛠️ 可用工具(共99个)
📊 摘要
| 家庭 | 工具 | 读 | 写 | 描述 |
|---|---|---|---|---|
| 🔍 资源图 | 1 | 1 | 0 | 使用KQL查询Azure资源 |
| 🗄️ Cosmos DB | 12 | 6 | 6 | 帐户、数据库、容器和项目CRUD |
| 💰 成本管理 | 7 | 7 | 0 | 成本、预测、预算、建议 |
| 📦 存储 | 9 | 6 | 3 | 块、队列、表、帐户 |
| 👥 Entra ID | 18 | 18 | 0 | 用户、组、应用程序、服务主体 |
| 📈 监视器 | 17 | 17 | 0 | 度量、警报、日志、自动缩放 |
| 🔬 应用洞察 | 8 | 8 | 0 | 日志、指标、可用性、异常 |
| 🔑 RBAC | 8 | 8 | 0 | 角色、分配、权限 |
| 📱 通讯 | 7 | 4 | 3 | 短信、电子邮件、电话号码 |
| 🔎 Azure AI搜索 | 12 | 9 | 3 | 全文搜索、索引、文档 |
| 总计 | 99 | 84 | 15 |
🔍 Resource Graph (1 tool)
| 工具 | 类型 | 描述 |
|---|---|---|
| `resourcegraph_query ` | 📖 读取 | 使用KQL执行Azure资源图查询 |
例子: ``` 查询我订阅中的所有虚拟机 ```
🗄️ Cosmos DB (12 tools)
| 工具 | 类型 | 描述 |
|---|---|---|
| `cosmos_account_list` | 📖 阅读 | 列出订阅中的Cosmos DB帐户 |
| `cosmos_account_get` | 📖 阅读 | 获取特定Cosmos DB帐户的详细信息 |
| `cosmos_database_list` | 📖 读取 | 列出Cosmos DB帐户中的数据库 |
| `cosmos_database_create` | ✏️ 写入 | 创建数据库(幂等) |
| `cosmos_database_delete` | ⚠️ 删除 | 删除数据库及其所有数据 |
| `cosmos_container_list` | 📖 读取 | 列出数据库中的容器 |
| `cosmos_container_create` | ✏️ 写 | 用分区键(幂等)创建一个容器 |
| `cosmos_container_delete` | ⚠️ 删除 | 删除容器及其所有数据 |
| `cosmos_item_query ` | 📖 读取 | 使用类似SQL的语法查询项目 |
| `cosmos_item_get` | 📖 读取 | 通过ID和分区键获取单个项目 |
| `cosmos_item_upsert` | ✏️ 编写 | 创建或更新项目 |
| `cosmos_item_delete` | ⚠️ 删除 | 按ID和分区键删除项目 |
例子: ``` 列出我的生产订阅中的所有Cosmos DB帐户 在我的Cosmos帐户中创建一个名为“analytics”的新数据库 从状态为“活动”的用户容器中查询项目 ```
💰 Cost Management (7 tools) ⭐ Exclusive
🌟 在Microsoft中不可用。NET Azure MCP服务器!
| 工具 | 类型 | 描述 |
|---|---|---|
cost_query |
📖 读取 | 灵活分组查询成本和使用数据 |
cost_forecast |
📖 阅读 | 获取未来时期的成本预测 |
cost_usage_by_resource |
📖 阅读 | 按资源获取详细的使用数据 |
cost_budgets_list |
📖 阅读 | 列出范围内的所有预算 |
cost_budgets_get |
📖 阅读 | 获取预算详细信息,包括警报 |
cost_recommendations |
📖 阅读 | 列出Azure Advisor的成本建议 |
| `cost_exports_list` | 📖 阅读 | 列出计划成本导出 |
例子: ``` 给我看上个月按服务分类的成本明细 本季度我的订阅预计费用是多少? 列出所有已消耗超过80%的预算 ```
📦 Storage (9 tools)
| 工具 | 类型 | 描述 |
|---|---|---|
| `storage_account_list` | 📖 读取 | 列出订阅中的存储帐户 |
| `storage_account_get` | 📖 阅读 | 获取存储帐户详细信息 |
| `storage_container_list` | 📖 读取 | 列出blob容器 |
| `storage_blob_list` | 📖 读取 | 列出容器中的blob |
| `storage_blob_read` | 📖 读取 | 读取blob内容 |
| `storage_blob_write` | ✏️ 写入 | 将内容写入blob |
storage_blob_delete |
✏️ 写入 | 从容器中删除blob |
storage_queue_list |
📖 读取 | 列出存储帐户中的队列 |
| `storage_table_query ` | 📖 读取 | 查询表实体 |
例子: ``` 列出“documents”容器中的所有blob 从我的存储帐户读取config.json文件 ```
👥 Entra ID (18 tools) ⭐ Exclusive
🌟 在Microsoft中不可用。NET Azure MCP服务器!
| 工具 | 类型 | 描述 |
|---|---|---|
| `intrused_user_list` | 📖 读取 | 列出目录中的用户 |
| `intrused_user_get` | 📖 读取 | 按ID或UPN获取用户详细信息 |
| `intrused_user_groups` | 📖 读取 | 列出用户所属的组 |
| `intrused_user_manager ` | 📖 阅读 | 获取用户经理 |
| `intrused_user_direct_reports` | 📖 阅读 | 列出用户的直接下属 |
| `intrused_group_list` | 📖 读取 | 列出目录中的组 |
| `intrused_group_get` | 📖 阅读 | 获取组详细信息 |
| `intrused_group_members`📖 阅读 | 列出组成员 | |
| `集团所有者' | 📖 阅读 | 列出组所有者 |
| `intrused_app_list` | 📖 阅读 | 列出应用程序注册 |
| `intrused_app_get` | 📖 阅读 | 获取应用程序注册详细信息 |
| `intrused_splist` | 📖 阅读 | 列出服务主体 |
| `intrused_spget` | 📖 阅读 | 获取服务主体详细信息 |
| `intrused_role_list` | 📖 读取 | 列出目录角色 |
| `intrused_role_members`📖 阅读 | 列出角色成员 | |
| `intrused-domain_list` | 📖 读取 | 列出已验证的域 |
| `intrused_device_list` | 📖 读取 | 列出已注册的设备 |
| `intrused_device_get` | 📖 阅读 | 获取设备详细信息 |
例子: ``` 查找销售部门的所有用户 列出“IT管理员”组的成员 显示今年创建的所有应用程序注册 ```
📈 Monitor (17 tools)
| 工具 | 类型 | 描述 |
|---|---|---|
| `monitor_metrics_list` | 📖 阅读 | 列出资源的可用指标 |
| `monitor_metrics_get` | 📖 读取 | 使用聚合获取度量值 |
| `monitor_alerts_list` | 📖 读取 | 列出度量警报规则 |
| `monitor_alerts_get` | 📖 阅读 | 获取警报规则详细信息 |
| `monitor_alerts_history`📖 阅读 | 获取警报历史/事件 | |
| `monitor_action_groups_list` | 📖 阅读 | 列出行动组 |
| `monitor_action_groups_get` | 📖 阅读 | 获取行动组详细信息 |
| `monitor_active_log` | 📖 读取 | 查询活动日志事件 |
| `monitor_dignostic_settings_list` | 📖 读取 | 列出诊断设置 |
| `monitor_dignostic_settings_get` | 📖 阅读 | 获取诊断设置详细信息 |
| `monitor_log_profiles_list` | 📖 读取 | 列出日志配置文件 |
| `monitor_autoscale_list` | 📖 读取 | 列出自动缩放设置 |
| `monitor_autoscale_get` | 📖 读取 | 获取自动缩放设置详细信息 |
| `monitor_scheduled_query_rules_list ` | 📖 读取 | 列出日志警报规则 |
| `monitor_scheduled_query_rules_get` | 📖 读取 | 获取日志警报规则详细信息 |
| `monitor_private_link_scopes_list` | 📖 读取 | 列出私有链接范围 |
例子: ``` 显示过去一小时我的虚拟机的CPU指标 列出我订阅中的所有点火警报 获取资源组更改的活动日志 ```
🔬 Application Insights (8 tools)
| 工具 | 类型 | 描述 |
|---|---|---|
| `appisions_query ` | 📖 阅读 | 针对App Insights执行KQL查询 |
| `appisights_metrics_list` | 📖 阅读 | 列出可用指标 |
| `appisions_metrics_get` | 📖 读取 | 获取度量值 |
| `appisights_events` | 📖 读取 | 查询遥测事件 |
| `appisights_exceptions ` | 📖 读取 | 查询遥测异常 |
| `appisions_availability ` | 📖 读取 | 查询可用性测试结果 |
| `appisights_components_list` | 📖 阅读 | 列出App Insights资源 |
| `appisights_components_get` | 📖 阅读 | 获取App Insights资源详细信息 |
例子: ``` 查询过去24小时内最慢的10个请求 显示付款服务的所有例外情况 检查我的API的可用性测试结果 ```
🔑 RBAC (8 tools)
| 工具 | 类型 | 描述 |
|---|---|---|
| `rbac_role_definitions_list` | 📖 读取 | 列出作用域中的角色定义 |
| `rbac_role_definitions_get` | 📖 阅读 | 获取角色定义详细信息 |
| `rbac_role_assignments_list` | 📖 阅读 | 列出角色分配 |
| `rbac_role_assignments_get` | 📖 阅读 | 获取角色分配详细信息 |
| `rbac_permissions_list` | 📖 读取 | 列出作用域的权限 |
| `rbac_classic_admins_list` | 📖 阅读 | 列出经典订阅管理员 |
| `rbac_deny_assignments_list` | 📖 阅读 | 列出拒绝分配 |
| `rbac_deny_assignments_get` | 📖 阅读 | 获取拒绝分配详细信息 |
例子: ``` 列出我订阅中的所有参与者角色分配 谁有权访问此资源组? 显示存储Blob数据读取器角色的权限 ```
📱 Communication Services (7 tools) ⭐ Exclusive
🌟 在Microsoft中不可用。NET Azure MCP服务器!
| 工具 | 类型 | 描述 |
|---|---|---|
| “通信_资源列表” | 📖 阅读 | 列出通信服务资源 |
| “通信_资源_集合” | 📖 读取 | 获取包括端点在内的资源详细信息 |
| “通讯_电话号码列表” | 📖 阅读 | 列出已购买的电话号码 |
| `通讯_电话号码_组` | 📖 阅读 | 获取电话号码详细信息和功能 |
| `通信_sms_send ` | ✏️ 写 | 发送短信 |
| “通讯_电子邮件_发送” | ✏️ 编写 | 发送包含HTML/文本内容的电子邮件 |
| “通讯_电子邮件_状态” | 📖 阅读 | 检查电子邮件传递状态 |
例子: ``` 列出我的通讯服务资源中的所有电话号码 发送短信通知至+1234567890 向新用户发送欢迎电子邮件 检查电子邮件abc-123的状态 ```
🔎 Azure AI Search (12 tools) ⭐ Exclusive
🌟 在Microsoft中不可用。NET Azure MCP服务器!
| 工具 | 类型 | 描述 |
|---|---|---|
| `search_service_list` | 📖 阅读 | 列出Azure AI搜索服务 |
| `search_service_get` | 📖 阅读 | 获取搜索服务详细信息 |
| `search_index_list` | 📖 读取 | 列出搜索服务中的索引 |
| `search_index_get` | 📖 读取 | 获取索引架构和设置 |
| `search_index_stats` | 📖 读取 | 获取索引统计信息(文档计数、大小) |
| `search_query ` | 📖 读取 | 执行全文搜索查询 |
| `search_suggest` | 📖 阅读 | 获取搜索建议 |
| “搜索_自动完成” | 📖 阅读 | 获取自动完成建议 |
| `search_document_get` | 📖 读取 | 按键检索文档 |
| `search_document_upload` | ✏️ 写入 | 将文档上传到索引 |
| `search_document_merge` | ✏️ 写入 | 合并/更新索引中的文档 |
| `search_document_delete` | ✏️ 写入 | 从索引中删除文档 |
例子: ``` 在我的知识库中搜索“机器学习” 获取我的产品索引的架构 将新文档上传到搜索索引 查找我的订阅中的所有搜索服务 ```
🌐 部署选项
本地开发
```bash
克隆并安装
克隆https://github.com/frdeange/azure-mcp-python.git cd azure mcp python pip安装-e“.[dev,all]”
跑
蔚蓝mcp ```
码头工人
```bash docker build-t azure mcp。 docker run-it azure mcp ```
Azure容器应用
看 AI Foundry部署指南 用于部署到Azure AI Foundry代理服务。
```bash
部署到Azure容器应用程序
containerapp 上 --名称azure mcp服务器\ --来源。 \ --外部入口\ --目标端口8000 ```
📦 模块化安装
仅安装所需的Azure服务:
```bash
个人服务
pip安装azure mcp[宇宙]#宇宙数据库工具 pip安装azure mcp[cost]#成本管理工具 pip安装azure mcp[存储]#存储工具 pip安装azure mcp[entra]#entra ID工具 pip安装azure mcp[监视器]#监视器+应用洞察工具 pip安装azure mcp[rbac]#rbac工具 pip安装azure mcp[通讯]#通讯服务工具 pip安装azure mcp[搜索]#azure AI搜索工具
多种服务
pip安装azure mcp[宇宙,成本,存储]
所有服务
pip安装azure mcp[全部] ```
📚 文档
| 文档 | 描述 |
|---|---|
| 添加工具 | 新工具实施指南 |
| 认证 | Azure身份验证设置 |
| 权限和RBAC | 每个工具所需的角色和权限 |
| 测试 | 测试指南和最佳实践 |
| AI Foundry部署 | 部署到Azure AI Foundry |
| 建筑 | 系统架构概述 |
| 贡献 | 贡献指南 |
🔧 发展
设置
```bash
克隆存储库
克隆https://github.com/frdeange/azure-mcp-python.git cd azure mcp python
创建虚拟环境
python-m venv.venv source.ven/bin/activate#Linux/Mac
.venv\Scripts\activate#Windows
在开发模式下安装所有附加功能
pip安装-e“.[dev,all]”
运行测试
pytest
跑linting
ruff检查src测试 ruff格式src测试
类型检查
mypy src ```
使用开发容器
在VS Code中打开,并在提示时单击“在容器中重新打开”。一切都是预先配置好的!
🗺️ 路线图
✅ 完成
- [x] 核心框架(身份验证、注册表、缓存、错误)
- [x] 资源图工具
- [x] Cosmos数据库工具
- [x] 成本管理工具⭐
- [x] 存储工具
- [x] Entra ID工具⭐
- [x] 监控工具
- [x] 应用洞察工具
- [x] RBAC工具
- [x] 通信服务(第一阶段)⭐
- [x] Azure人工智能搜索工具⭐
🔜 计划的
- []通信服务(第2阶段:WhatsApp、聊天、客房、呼叫自动化)
- []关键保险库工具
- []事件网格工具
- []服务总线工具
- []认知服务工具
🤝 贡献
我们欢迎捐款!看 贡献.md 作为指导方针。
- 分叉存储库
- 创建一个功能分支(`git checkout-b feat/bamazing feature`)
- 提交你的更改(`git Commit-m'壮举:添加惊人的功能``)
- 推送到分支(`git推送起源壮举/惊人功能`)
- 打开拉取请求
📄 许可证
麻省理工学院-参见 许可证
🙏 致谢
- Microsoft Azure MCP服务器(.NET) -灵感来源
- 模型上下文协议 -MCP规范
- FastMCP -Python MCP SDK
Made with ❤️ for the Azure community