使用说明
Azure MCP服务器
使用 Node.js 和 Express 开发的 Model Context Protocol (MCP) 服务器,用于监控 Azure 服务,包括虚拟机 (VM) 和虚拟机规模集 (VMSS)。
功能
- 监控虚拟机(VM)
- 虚拟机规模集监控(VMSS)
- 获取 Azure 资源状态和详细信息
- API RESTful com端点组织
- 通过主要服务对 Azure 进行安全身份验证
先决条件
- Node.js 14+instalado
- 激活的 Azure 帐户
- 使用适当权限配置的主要服务
- Azure订阅ID
配置
1. 安装
cd azure-mcp-server
npm install
2. 设置环境变量
复制文件 .env.example 段落 .env:
cp .env.example .env
编辑文件 .env 使用您的 Azure 凭据:
# Azure Configuration
AZURE_SUBSCRIPTION_ID=sua-subscription-id
AZURE_TENANT_ID=seu-tenant-id
AZURE_CLIENT_ID=seu-client-id
AZURE_CLIENT_SECRET=seu-client-secret
# Server Configuration
PORT=3000
NODE_ENV=development
# Resource Groups to Monitor (comma-separated)
RESOURCE_GROUPS=rg-production,rg-staging
3. 在 Azure 中创建主服务
az login
az ad sp create-for-rbac --name "azure-mcp-server" --role "Reader" --scopes /subscriptions/{subscription-id}
记下返回的值 :
appId→ AZURE_CLIENT_IDpassword→ AZURE_CLIENT_SECRETtenant→ AZURE_TENANT_ID
使用
启动服务器
重要提示: 即使没有配置 Azure 凭据,服务器也可以启动,但 API 调用将失败。配置文件 .env 在使用API端点之前。
开发(使用热装载):
npm run dev
生产 :
npm start
测试服务器 :
npm test
服务器将可在 http://localhost:3000
启动时,您将看到:
- ✓ Azure Config: 已配置 → 凭据确定,API 将工作
- Azure Config: 未配置 → 在使用 API 之前配置 .env
API的终点
健康检查
GET /health
检查服务器是否正常工作 。
服务信息
GET /
返回服务信息和可用端点列表。
虚拟机(VM)
列出所有 VM
GET /api/vms
按资源组列出虚拟机
GET /api/vms/resource-group/:resourceGroup
获取 VM 的详细信息
GET /api/vms/:resourceGroup/:vmName
获取 VM 状态
GET /api/vms/:resourceGroup/:vmName/status
虚拟机规模集(VMSS)
列出所有 VMSS
GET /api/vmss
列表VMSS资源组
GET /api/vmss/resource-group/:resourceGroup
获取 VMSS 的详细信息
GET /api/vmss/:resourceGroup/:vmssName
获取 VMSS 状态
GET /api/vmss/:resourceGroup/:vmssName/status
列出 VMSS 实例
GET /api/vmss/:resourceGroup/:vmssName/instances
获取特定实例的视图
GET /api/vmss/:resourceGroup/:vmssName/instances/:instanceId
使用范例
列出所有 VM
curl http://localhost:3000/api/vms
获取特定 VM 的状态
curl http://localhost:3000/api/vms/meu-resource-group/minha-vm/status
列出 VMSS 实例
curl http://localhost:3000/api/vmss/meu-resource-group/meu-vmss/instances
项目结构
azure-mcp-server/
├── src/
│ ├── config/
│ │ └── azure.js # Configuração de autenticação Azure
│ ├── services/
│ │ ├── vmService.js # Serviço para gerenciar VMs
│ │ └── vmssService.js # Serviço para gerenciar VMSS
│ ├── routes/
│ │ ├── vmRoutes.js # Rotas para VMs
│ │ └── vmssRoutes.js # Rotas para VMSS
│ └── server.js # Servidor Express principal
├── .env.example # Exemplo de variáveis de ambiente
├── .gitignore
├── package.json
└── README.md
安全
- 从不提交文件
.env具有真实凭据 - 以最低特权原则使用主要服务
- 在生产中,考虑使用 Azure Key Vault 存储机密
- 服务器使用Helmet.js作为HTTP安全头
故障排除
认证错误
检查凭据是否在 .env 是否正确,以及主服务是否拥有适当的权限。
列出资源超时
增加客户端超时,或检查与 Azure 的连接。
资源组未找到
确保资源组存在,并且主服务可以访问它。
未来改进
- [ ] 添加缓存以提高性能
- [ ] 实现通知的 webhooks
- [ ] 添加应用服务监控
- [ ] 在服务器本身上实现身份验证
- [ ] 添加结构化的指标和日志
- [ ] 创建用于查看的Web仪表板
- [ ] 添加单元和集成测试
许可证
国际学生委员会
贡献
Pull Requests是受欢迎的。对于更大的更改,首先打开一个问题,讨论您想要更改的内容。
