Azure-Assistant-MCP 是一个轻量级、快速的 MCP 服务器,用于通过 Azure Resource Graph (ARG) 探索 Azure。它可以生成并运行 Kusto 查询语言 (KQL),以回答有关 Azure 环境的问题,具有清晰明确的作用域和可选的管理组覆盖范围。
本项目允许你直接检查和运行 ARG KQL,避免了依赖大型组件,提供了一个基于标准输入输出的小型 MCP 服务器。
top)。pip install -e . 进行安装。./azure-assistant-mcp.sh(如果存在 .venv,优先使用)。chmod +x ./azure-assistant-mcp.sh。claude mcp add azure-assistant-mcp \
/your/path/Azure-Assistant-MCP/azure-assistant-mcp.sh \
--env AZURE_ASSISTANT_CONFIG=/your/path/Azure-Assistant-MCP/azure-config.json \
--scope user \
--transport stdio
list-subscriptions{ "tenant_name": "Contoso" }ask-azure{ "tenant_name": "Contoso", "question": "How many virtual machines exist?" }run-arg-kql{ "tenant_name": "Contoso", "kql_query": "resourcecontainers | where type =~ 'microsoft.resources/subscriptions' | project name, subscriptionId | order by name asc" }azure-config.json 文件中(该文件已被 git 忽略)。可参考 azure-config-example.json 的结构。AZURE_ASSISTANT_CONFIG 环境变量指向仓库中的 azure-config.json 文件,以避免跨仓库配置冲突。AZURE_ASSISTANT_CONFIG 环境变量指向自定义的配置文件位置。ask-azure:输入 { "question": string, "tenant_name?": string, "subscription_ids?": string[], "use_all_subscriptions?": boolean, "auto_execute?": boolean },根据问题生成 KQL 查询。如果 auto_execute 为 true(默认值),则根据作用域规则执行查询。如果未提供 tenant_name,服务器会从文本中启发式推断。list-tenants:输入 {},列出 azure-config.json 中配置的租户信息,包括租户 ID、可选的 management_group_id 和 default_subscription_id,方便选择作用域和服务主体。run-arg-kql:输入 { "kql_query": string, "tenant_name?": string, "subscription_ids?": string[], "use_all_subscriptions?": boolean, "top?": integer },根据作用域规则执行提供的 KQL 查询,并在头部添加 Rows、Tenant 和作用域信息。run-kql-template:输入 { "template_name": string, "params?": object, "tenant_name?": string, "subscription_ids?": string[], "use_all_subscriptions?": boolean, "top?": integer },加载 src/azure_assistant_mcp/kql/ 目录下的模板文件(.md 或 .kql),应用 params 中的参数替换,然后根据作用域规则执行查询。list-subscriptions:输入 { "tenant_name?": string },列出订阅信息。尽可能使用 ARM 枚举,并使用 ARG 进行补充;如果配置了管理组作用域,则优先使用该作用域以返回完整列表。vm-count-by-tenant:输入 { "tenant_names?": string[], "use_all_subscriptions?": boolean },根据作用域规则统计每个租户的虚拟机数量。diagnostics(仅当 debug 为 true 时显示):输入 { "tenant_name?": string },打印配置文件路径、解析的租户、规范化的管理组 ID、ARM 枚举示例和数量、ARG 管理组覆盖示例和数量以及默认作用域决策。arg-tables:输入 {},打印常见 Azure Resource Graph 表(resourcecontainers、resources、resourcechanges、advisorresources、healthresources、policyresources)的概述,包括用途和典型用例。arg-examples:输入 { "topic?": string },其中 topic 可以是 subscriptions、resourcegroups、changes、containerchanges、advisor、health 或 policy,返回 ARG 表中常见场景的示例 KQL 代码片段。src/azure_assistant_mcp/kql/ 目录下,以 .md 文件(包含 fenced ```kql 块)或 .kql 文件的形式存在。AZURE_ASSISTANT_KQL_PATH 环境变量将模板目录替换为其他目录。list_subscriptions.mdlist_resource_groups.mduntagged_resource_groups.mdmanual_changes.mdresource_changes_recent.mdstopped_vms.mdgeneric_list_resources.mdkubernetes_inventory.md,然后使用 run-kql-template { "template_name": "kubernetes_inventory", "params": { ... } } 运行。subscription_ids,则使用这些订阅。use_all_subscriptions 为 true 且配置了 management_group_id,则在 ARG 中以管理组作用域运行查询。default_subscription_id。Tenant 信息以及 Scope: managementGroup=... 或 Subscriptions used: N。src/azure_assistant_mcp/ 目录下,入口点为 azure_assistant_mcp:main。azure-assistant-mcp.sh(设置 PYTHONPATH 环境变量并固定 AZURE_ASSISTANT_CONFIG 环境变量)。azure-assistant.sh 已弃用。mcp、python-dotenv、azure-identity、azure-mgmt-resourcegraph、azure-mgmt-subscription。本项目采用 Apache-2.0 许可证。完整的许可条款请参阅 LICENSE 文件。根据 Apache-2.0 许可证第 4(d) 条,再分发者必须在任何源代码分发以及通常显示此类通知的文档或关于对话框中保留 NOTICE 文件中的归属声明。
azure-config.json 文件已被 git 忽略,请使用示例文件作为模板。Claude_Agents/azure-cloud-architect.md,这是一个 Azure 云架构助手,你可以在 Claude Code 中与本 MCP 服务器一起加载使用。开始使用时,将 Claude_Agents/azure-cloud-architect.md 文件复制到 .claude/agents 文件夹中。欢迎提交问题和拉取请求。请在示例和日志中避免包含真实的租户 ID、密钥或组织名称。