项目简介

Azure-Assistant-MCP 是一个轻量级、快速的MCP服务器,专门用于通过Azure Resource Graph (ARG) 探索和管理您的Azure环境。它能够将自然语言问题转换为KQL查询,并直接在您的Azure订阅或管理组上执行这些查询,从而帮助LLM(如Claude)获取最新的Azure上下文信息和执行操作。

主要功能点

  • 自然语言转KQL: 将日常问题自动转换为Azure Resource Graph (ARG) 的Kusto查询语言 (KQL)。
  • 直接KQL执行: 支持直接执行KQL查询,并提供分页功能。
  • 灵活的查询范围: 支持指定Azure租户、订阅或管理组作为查询范围。
  • Azure资源清单: 提供工具来列出配置的租户、订阅、虚拟机数量等。
  • KQL模板: 支持加载和执行预定义的KQL模板,方便定制和重复使用查询。
  • Azure ARG参考: 提供Azure Resource Graph的常用表概览和KQL示例,帮助用户理解ARG。
  • 安全性: 强调使用最小权限的服务主体,并通过'.gitignore'忽略配置文件,确保凭据安全。

安装步骤

  1. 克隆仓库: 首先,将项目仓库克隆到您的本地机器上。 'git clone https://github.com/iOSDevil/Azure-Assistant-MCP.git' 'cd Azure-Assistant-MCP'

  2. 安装Python依赖: 确保您的系统安装了Python 3.10 或更高版本。 在项目根目录下运行以下命令安装所需的Python包: 'pip install -e .' 或者,您可以使用包装脚本(它会优先使用虚拟环境): './azure-assistant-mcp.sh'

  3. 配置Azure凭据: 将'azure-config-example.json'文件复制为'azure-config.json',并根据您的Azure环境填写凭据信息。'azure-config.json'文件会被Git忽略,以防止您的敏感信息被提交到代码仓库。 示例'azure-config.json'结构(请替换为您的实际值):

    {
      "debug": false,
      "tenants": [
        {
          "id": "YOUR_TENANT_ID_GUID",
          "name": "YourTenantName",
          "service_principal": {
            "client_id": "YOUR_SP_CLIENT_ID",
            "client_secret": "YOUR_SP_CLIENT_SECRET"
          },
          "default_subscription_id": "OPTIONAL_DEFAULT_SUB_ID",
          "management_group_id": "OPTIONAL_MG_ID_SHORT_NAME_OR_FULL_RESOURCE_ID"
        }
      ]
    }

    重要提示: 请确保您的Azure服务主体 (Service Principal, SPN) 具有您打算查询范围的Reader权限。

  4. 设置Wrapper脚本权限: 确保'azure-assistant-mcp.sh'脚本是可执行的: 'chmod +x ./azure-assistant-mcp.sh'

服务器配置

要将此MCP服务器与您的MCP客户端(例如Claude Desktop CLI)连接,您需要提供服务器的启动命令。以下是配置示例,您可以根据实际路径调整。

{
  "name": "azure-assistant-mcp",
  "command": "/your/path/Azure-Assistant-MCP/azure-assistant-mcp.sh",
  "args": [
    "--env", "AZURE_ASSISTANT_CONFIG=/your/path/Azure-Assistant-MCP/azure-config.json",
    "--scope", "user",
    "--transport", "stdio"
  ],
  "description": "一个用于通过自然语言和KQL探索Azure资源的MCP服务器。"
}
  • 'name': 服务器的唯一标识符,建议使用 'azure-assistant-mcp'。
  • 'command': 'azure-assistant-mcp.sh' 脚本的绝对路径。请替换 '/your/path/Azure-Assistant-MCP/' 为您的实际项目路径。
  • 'args': 启动脚本的参数列表。
    • '--env AZURE_ASSISTANT_CONFIG=/your/path/Azure-Assistant-MCP/azure-config.json': 指定 'azure-config.json' 配置文件的路径。请务必替换为您的实际路径。
    • '--scope user': 定义服务器的运行范围。
    • '--transport stdio': 指定通信协议为标准I/O (stdio)。

基本使用方法

一旦MCP服务器在您的客户端中配置并运行,您就可以通过客户端调用其提供的工具。

  1. 列出配置的租户:

    • 工具: 'list-tenants'
    • 输入: '{}'
    • 功能: 显示'azure-config.json'中配置的所有Azure租户信息。
  2. 查询Azure虚拟机数量:

    • 工具: 'ask-azure'
    • 输入: '{ "tenant_name": "Contoso", "question": "How many virtual machines exist?" }'
    • 功能: 将自然语言问题转换为KQL查询,并在指定租户下执行,返回虚拟机数量。
  3. 直接执行KQL查询:

    • 工具: 'run-arg-kql'
    • 输入: '{ "tenant_name": "Contoso", "kql_query": "resourcecontainers | where type =~ 'microsoft.resources/subscriptions' | project name, subscriptionId | order by name asc" }'
    • 功能: 在指定租户下直接执行提供的KQL查询。
  4. 列出订阅:

    • 工具: 'list-subscriptions'
    • 输入: '{ "tenant_name": "Contoso" }'
    • 功能: 列出指定租户下服务主体可访问的订阅。

信息

分类

AI与计算