项目简介
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'忽略配置文件,确保凭据安全。
安装步骤
-
克隆仓库: 首先,将项目仓库克隆到您的本地机器上。 'git clone https://github.com/iOSDevil/Azure-Assistant-MCP.git' 'cd Azure-Assistant-MCP'
-
安装Python依赖: 确保您的系统安装了Python 3.10 或更高版本。 在项目根目录下运行以下命令安装所需的Python包: 'pip install -e .' 或者,您可以使用包装脚本(它会优先使用虚拟环境): './azure-assistant-mcp.sh'
-
配置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权限。
-
设置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服务器在您的客户端中配置并运行,您就可以通过客户端调用其提供的工具。
-
列出配置的租户:
- 工具: 'list-tenants'
- 输入: '{}'
- 功能: 显示'azure-config.json'中配置的所有Azure租户信息。
-
查询Azure虚拟机数量:
- 工具: 'ask-azure'
- 输入: '{ "tenant_name": "Contoso", "question": "How many virtual machines exist?" }'
- 功能: 将自然语言问题转换为KQL查询,并在指定租户下执行,返回虚拟机数量。
-
直接执行KQL查询:
- 工具: 'run-arg-kql'
- 输入: '{ "tenant_name": "Contoso", "kql_query": "resourcecontainers | where type =~ 'microsoft.resources/subscriptions' | project name, subscriptionId | order by name asc" }'
- 功能: 在指定租户下直接执行提供的KQL查询。
-
列出订阅:
- 工具: 'list-subscriptions'
- 输入: '{ "tenant_name": "Contoso" }'
- 功能: 列出指定租户下服务主体可访问的订阅。
信息
分类
AI与计算