Az Azure MCP Server használatának első lépései a .NET-tel

Az Azure MCP Server a Model Context Protocol (MCP) használatával szabványosítja az AI-alkalmazások és a külső eszközök és adatforrások közötti integrációt, lehetővé téve az AI-rendszerek számára az Azure-erőforrások környezettudatos műveleteit.

Ebből a cikkből megtudhatja, hogyan végezheti el a következő feladatokat:

  • Az Azure MCP Server telepítése és hitelesítése
  • Csatlakozás az Azure MCP Serverhez egyéni .NET-ügyfél használatával
  • Az Azure MCP Server műveleteinek tesztelésére és az Azure-erőforrások kezelésére vonatkozó kérések futtatása

Előfeltételek

Megjegyzés:

Az Azure MCP Serverrel elérni kívánt Azure-erőforrásoknak már létezniük kell az Azure-előfizetésben. Emellett a felhasználói fióknak rendelkeznie kell az erőforrásokhoz szükséges RBAC-szerepkörök és engedélyek hozzárendelésével .

Bejelentkezés az Azure MCP Serverbe helyi fejlesztés céljából

Az Azure MCP Server a .NET-hez készült Azure Identity Library használatával hitelesíti a Microsoft Entra ID-t. A kiszolgáló két hitelesítési módot támogat:

  • Közvetítő mód: Az operációs rendszer natív hitelesítését használja, így például a Windows Web Account Manageren keresztül InteractiveBrowserCredential.
  • Hitelesítőadat-lánc mód: Több hitelesítési módszert próbál meg egymás után: környezeti változók, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Developer CLI és interaktív böngészőhitelesítés.

Jelentkezzen be az alábbi módszerek bármelyikével:

  1. Nyissa meg a parancskatalógust (Ctrl+Shift+P vagy Cmd+Shift+P Macen).
  2. Futtassa az Azure-t: Jelentkezzen be , és kövesse az utasításokat.

A bejelentkezés után az Azure MCP Server az Ön engedélyei alapján hitelesítheti és futtathatja az Azure-szolgáltatások műveleteit.

A .NET-gazdagépalkalmazás létrehozása

A .NET-konzolalkalmazás létrehozásához hajtsa végre az alábbi lépéseket. Az alkalmazás egy AI-modellhez csatlakozik, és egy Azure MCP-kiszolgálóhoz csatlakozó MCP-ügyfél gazdagépeként működik.

A projekt létrehozása

  1. Nyisson meg egy terminált egy üres mappába, ahol létre szeretné hozni a projektet.

  2. Futtassa a következő parancsot egy új .NET-konzolalkalmazás létrehozásához:

    dotnet new console -n MCPHostApp
    
  3. Lépjen az újonnan létrehozott projektmappába:

    cd MCPHostApp
    
  4. Nyissa meg a projektmappát a választott szerkesztőben, például a Visual Studio Code-ban:

    code .
    

Függőségek hozzáadása

  1. A terminálban futtassa a következő parancsokat a szükséges NuGet-csomagok hozzáadásához:

    dotnet add package Azure.AI.OpenAI --prerelease
    dotnet add package Azure.Identity
    dotnet add package Microsoft.Extensions.AI --prerelease
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package ModelContextProtocol --prerelease
    
  2. Ellenőrizze, hogy a csomagok hozzáadva lettek-e a MCPHostApp.csproj fájl ellenőrzésével.

  3. Futtassa a következő parancsot a projekt létrehozásához, és győződjön meg arról, hogy minden megfelelően van beállítva:

    dotnet build
    

Az alkalmazáskód hozzáadása

Cserélje le a Program.cs tartalmát a következő kódra:

using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;

// Create an IChatClient
IChatClient client =
    new ChatClientBuilder(
        new AzureOpenAIClient(new Uri("<your-azure-openai-endpoint>"), 
        new DefaultAzureCredential())
        .GetChatClient("gpt-4o").AsIChatClient())
    .UseFunctionInvocation()
    .Build();

// Create the MCP client
var mcpClient = await McpClient.CreateAsync(
    new StdioClientTransport(new()
    {
        Command = "npx",
        Arguments = ["-y", "@azure/mcp@latest", "server", "start"],
        Name = "Azure MCP",
    }));

// Get all available tools from the MCP server
Console.WriteLine("Available tools:");
var tools = await mcpClient.ListToolsAsync();
foreach (var tool in tools)
{
    Console.WriteLine($"{tool}");
}
Console.WriteLine();

// Conversational loop that can utilize the tools
List<ChatMessage> messages = [];
while (true)
{
    Console.Write("Prompt: ");
    messages.Add(new(ChatRole.User, Console.ReadLine()));

    List<ChatResponseUpdate> updates = [];
    await foreach (var update in client
        .GetStreamingResponseAsync(messages, new() { Tools = [.. tools] }))
    {
        Console.Write(update);
        updates.Add(update);
    }
    Console.WriteLine();

    messages.AddMessages(updates);
}

Az előző kód a következő feladatokat hajtja végre:

  • Egy IChatClient absztrakció inicializálása a Microsoft.Extensions.AI könyvtárak használatával.
  • Létrehoz egy MCP-ügyfelet, amely szabványos I/O-átvitel használatával kommunikál az Azure MCP-kiszolgálóval. A megadott npx parancs és a hozzájuk tartozó argumentumok letöltik és elindítják az Azure MCP-kiszolgálót.
  • Lekéri és megjeleníti az MCP-kiszolgálóról elérhető eszközök listáját, amely egy szabványos MCP-függvény.
  • Olyan beszélgetési hurkot implementál, amely feldolgozza a felhasználók kéréseit, és a válaszok eszközeit használja.

Az alkalmazás futtatása és tesztelése

A .NET-gazdagépalkalmazás teszteléséhez hajtsa végre az alábbi lépéseket:

  1. A projekt gyökeréhez megnyitott terminálablakban futtassa a következő parancsot az alkalmazás elindításához:

    dotnet run
    
  2. Az alkalmazás futtatása után adja meg a következő tesztüzenetet:

    List all of the resource groups in my subscription
    

    Az előző parancssor kimenetének a következő szöveghez kell hasonlítania:

    The following resource groups are available for your subscription:
    
    1. **DefaultResourceGroup-EUS** (Location: `eastus`)
    2. **rg-testing** (Location: `centralus`)
    3. **rg-azd** (Location: `eastus2`)
    4. **msdocs-sample** (Location: `southcentralus`)
    14. **ai-testing** (Location: `eastus2`)
    
    Let me know if you need further details or actions related to any of these resource groups!
    
  3. Az Azure MCP-műveletek megismerése és tesztelése más vonatkozó kérésekkel, például:

    List all of the storage accounts in my subscription
    Get the available tables in my storage accounts
    

Következő lépések