使用说明
Azure Omni工具MCP服务器
A. 模型上下文协议(MCP)服务器 在TypeScript中,它充当自然语言请求和Azure CLI执行之间的智能桥梁。
特性
✅ 计划/执行流程 -执行前检查命令
✅ 安全护栏 -壳体喷射检测、破坏性指令警告
✅ 审计跟踪 -操作员电子邮件标签可追溯性
✅ 重试逻辑 -瞬态故障的指数回退
✅ 缓存 -带可配置TTL的LRU缓存
✅ 租户范围界定 -通过环境配置租户/订阅
✅ Azure服务适配器 -对8个Azure服务的类型安全访问
架构概述
flowchart TB
subgraph Client["🖥️ Client Layer"]
LLM[LLM / AI Agent]
end
subgraph MCP["⚙️ MCP Server"]
direction TB
Entry[index.ts]
subgraph Tools["Tools"]
T1[manage_azure_resources]
T2[get_azure_context]
T3[azure_service]
end
subgraph Lib["Core Libraries"]
Auth[auth.ts]
Cache[cache.ts]
CLI[cli-executor.ts]
Retry[retry.ts]
Safety[safety.ts]
Audit[audit.ts]
end
subgraph Services["Service Adapters"]
S1[StorageService]
S2[CosmosService]
S3[SearchService]
S4[KustoService]
S5[MonitorService]
S6[AppConfigService]
S7[KeyVaultService]
S8[PostgresService]
end
end
subgraph Azure["☁️ Azure"]
AzCLI[Azure CLI]
AzAPI[Azure APIs]
end
LLM -->|MCP Protocol| Entry
Entry --> Tools
Tools --> Lib
Tools --> Services
Services --> Lib
Lib --> AzCLI
Auth --> AzAPI
请求流
sequenceDiagram
participant C as Client
participant M as MCP Server
participant S as Safety
participant E as CLI Executor
participant A as Azure
C->>M: Tool Request
M->>S: Validate Input
alt Unsafe Command
S-->>M: Block + Warning
M-->>C: Error Response
else Safe
S-->>M: Approved
M->>E: Execute Command
E->>A: az CLI call
A-->>E: Response
E-->>M: Result + Parse
M-->>C: Structured Output
end
计划/执行流程
flowchart LR
A[LLM Client] -->|Natural Language| B[MCP Server]
B --> C{execute_now?}
C -->|false| D[Return Plan]
C -->|true| E[Execute CLI]
E --> F{Success?}
F -->|Yes| G[Return Output]
F -->|No| H[Return Error + Analysis]
H -->|Feedback Loop| A
快速开始
1.安装依赖项
npm install
2.配置环境
cp .env.example .env
# Edit .env with your settings
3.构建和运行
npm run build
npm start
MCP客户端配置
{
"mcpServers": {
"azure-omni-tool": {
"command": "node",
"args": ["path/to/Azure-mcp/dist/index.js"]
}
}
}
工具
manage_azure_resources
通过安全检查计划和执行Azure CLI命令。
| 参数 | 类型 | 描述 |
|---|---|---|
command |
string | Azure CLI命令 |
explanation |
string | 为什么选择此命令 |
execute_now |
布尔值 | false =计划, true =执行 |
get_azure_context
使用缓存查询Azure环境。
| 查询类型 | 描述 |
|---|---|
subscriptions |
列出可访问的订阅 |
resource_groups |
列出资源组 |
resources |
列出资源 |
custom |
通过资源图自定义KQL |
azure_service
与特定的Azure服务交互。
| 服务 | 操作 |
|---|---|
storage |
list,listContainers,listBlobs,getContainer,listTables,queryTable |
cosmos |
list,list数据库,list容器,查询,getContainer |
search |
list,listIndexes,getIndex,query,getService |
kusto |
list,list数据库,listTables,getSchema,示例,查询 |
monitor |
list,getWorkspace,listTables,query,listMetrics,getMetrics |
appconfig |
list、getStore、listKeyValues、getKeyValue、setKeyValue、锁定、解锁 |
keyvault |
list、getVault、listKeys、getKey、createKey、listSecrets、getSecret、listCertificates |
postgres |
list、getServer、listDatabases、listParameters、getParameter、listTables、getTableSchema、query |
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
AZURE_TENANT_ID |
用于范围界定的Azure租户 | - |
AZURE_SUBSCRIPTION_ID |
默认订阅 | - |
OPERATOR_EMAIL |
审计跟踪电子邮件 | - |
OPERATOR_NAME |
操作员姓名 | - |
LOG_LEVEL |
日志记录级别 | info |
ENABLE_CACHE |
启用查询缓存 | true |
CACHE_TTL_SECONDS |
缓存持续时间 | 300 |
CACHE_CLEANUP_INTERVAL_MS |
缓存清理间隔 | 60000 |
MAX_RETRIES |
重试尝试 | 3 |
RETRY_DELAY_MS |
基本重试延迟 | 1000 |
COMMAND_TIMEOUT_MS |
CLI超时 | 120000 |
AZURE_MCP_INCLUDE_PRODUCTION_CREDENTIALS |
启用托管身份 | false |
项目结构
Azure-mcp/
├── src/
│ ├── index.ts # MCP server entry
│ ├── lib/
│ │ ├── auth.ts # Azure credential management
│ │ ├── audit.ts # Audit trail with correlation IDs
│ │ ├── cache.ts # LRU cache with TTL
│ │ ├── cli-executor.ts # Azure CLI wrapper
│ │ ├── config.ts # Environment config
│ │ ├── logger.ts # Structured JSON logging
│ │ ├── retry.ts # Exponential backoff
│ │ ├── safety.ts # Input sanitization
│ │ └── types.ts # Shared types
│ ├── services/
│ │ ├── base-service.ts # Abstract service base
│ │ ├── storage.ts # Azure Storage
│ │ ├── cosmos.ts # Cosmos DB
│ │ ├── search.ts # AI Search
│ │ ├── kusto.ts # Data Explorer
│ │ ├── monitor.ts # Monitor / Log Analytics
│ │ ├── appconfig.ts # App Configuration
│ │ ├── keyvault.ts # Key Vault
│ │ ├── postgres.ts # PostgreSQL Flexible Server
│ │ └── index.ts # Service factory
│ └── tools/
│ ├── azure-manager.ts # Plan/Execute tool
│ ├── context-retriever.ts # Context queries
│ └── service-tool.ts # Service adapter tool
├── .env.example
├── package.json
└── tsconfig.json
先决条件
- Node.js>=18.0.0
- Azure CLI已安装并通过身份验证(
az login)
许可证
麻省理工学院
