Azure故障排除服务

一个基于Model Context Protocol (MCP)的Azure故障排除服务,通过AI助手逐步诊断Azure资源问题。

  • by akshaykokane
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 akshaykokane/azurehelp-mcp-server

使用说明

🧠 Azure自助MCP服务器

欢迎来到 Azure疑难解答MCP服务器 –动手实施 模型上下文协议(MCP),旨在使智能代理(如Claude或Semantic Kernel)能够使用 Azure自助API.

简而言之:它让你的AI应用程序 与Azure的引导式疑难解答人员交谈,自动化常见的诊断工作流程。


💡 这是什么?

该项目实现了 MCP服务器 公开Azure的自助API作为一个工具集。一旦连接到MCP主机(如Claude Desktop或SK App),您可以要求代理:

  • 创建故障排除会话
  • 查看其当前步骤
  • 继续你的回答
  • 结束或重新启动会话

把这当作你的 用于Azure诊断的交互式AI助手.


✨ 现场演示用例

❓ “我无法通过SSH连接到我的Azure VM。”

该工具使LLM能够使用Microsoft的Guided Troubleshooter API交互式地引导您了解可能的原因并进行修复。


🧰 先决条件

  • .NET 8 SDK
  • Azure CLI(已登录)
  • Claude App或任何MCP主机
  • IDE/终端

📦 设置

步骤1:安装软件包

dotnet add package ModelContextProtocol --prerelease
dotnet add package Microsoft.Extensions.Hosting
dotnet add package Azure.ResourceManager.SelfHelp
dotnet add package Azure.Identity

步骤2:创建MCP服务器

在……里面 Program.cs:

var builder = Host.CreateEmptyApplicationBuilder(settings: null);

builder.Services.AddMcpServer()
    .WithStdioServerTransport()
    .WithToolsFromAssembly(); // Registers [McpServerTool] methods

var app = builder.Build();
await app.RunAsync();

步骤3:编写MCP工具

在……里面 AzureTroubleshooterTools.cs:

[McpServerToolType]
public static class AzureTroubleshooterTools
{
    [McpServerTool, Description("Create a troubleshooter session")]
    public static async Task<string> CreateTroubleshooter([Description("Resource Uri of the azure resource")]string scope)
    {
        string solutionId = "e104dbdf-9e14-4c9f-bc78-21ac90382231"; // this is solutionId for vm ssh issue. This id can be found using Discovery API of Azure Help, which will also be part of this MCP Server
        string troubleshooterName = Guid.NewGuid().ToString();
        var client = new ArmClient(new DefaultAzureCredential());

        var troubleshooterId = SelfHelpTroubleshooterResource.CreateResourceIdentifier(scope, troubleshooterName);
        var troubleshooter = client.GetSelfHelpTroubleshooterResource(troubleshooterId);

        var data = new SelfHelpTroubleshooterData
        {
            SolutionId = solutionId,
            Parameters = { ["ResourceURI"] = scope }
        };

        ArmOperation<SelfHelpTroubleshooterResource> lro = await troubleshooter.UpdateAsync(WaitUntil.Completed, data);
        return $"Troubleshooter created with ID: {lro.Value.Data.Id}";
    }

    // Tools: Get, Continue, End, Restart...
}

🤖 Claude或其他主机的MCP配置

要将MCP服务器与Claude等MCP兼容应用程序连接,请更新配置文件(在Claude Desktop中: Settings > Developer):

{
  "mcpServers": {
    "azurehelpTroubleshooter": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/Users/yourname/Projects/AzureTroubleshooterServer",
        "--no-build"
      ]
    }
  }
}

保存并重新启动后,Claude将检测您的工具,准备协助Azure诊断! ✅


🧪 可用工具

方法 说明
CreateTroubleshooter 为资源启动新的疑难解答会话
GetTroubleshooterStep 查看当前步骤和说明
ContinueTroubleshooter 回答当前步骤的问题
EndTroubleshooter 结束会话
RestartTroubleshooter 从第一步重新开始

🛡 认证

用途 DefaultAzureCredential,因此它开箱即用:

  • Azure命令行界面
  • 环境变量
  • 管理身份

🧠 为什么这很重要

模型上下文协议(MCP) 正在彻底改变LLM与工具的通信方式。通过为Azure帮助API构建MCP服务器,您可以:

  • 进行Azure调试 本地代理
  • 为AI应用程序提供云智能
  • 扩展到具有相同结构的其他Microsoft API

📎 相关的博客


🙌 致谢

感谢出色的Azure SDK团队和MCP的创建者,让这种开发者魔法成为可能。 ✨

  • https://learn.microsoft.com/en-us/rest/api/help/
  • https://docs.anthropic.com/en/docs/agents-and-tools/mcp