Azure CLI智能桥接服务

一个TypeScript开发的MCP服务器,作为自然语言请求与Azure CLI执行之间的智能桥接,提供安全审查、审计追踪、重试逻辑等功能。

  • by vedantparmar12
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 vedantparmar12/azure-_mcp

使用说明

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)

许可证

麻省理工学院