Začínáme používat Azure MCP Server s .NET

Azure MCP Server používá protokol Model Context Protocol (MCP) ke standardizaci integrací mezi aplikacemi AI a externími nástroji a zdroji dat, což umožňuje systémům AI provádět operace, které si jsou vědomy kontextu vašich prostředků Azure.

V tomto článku se dozvíte, jak provést následující úlohy:

  • Instalace a ověření na serveru Azure MCP
  • Připojení k Azure MCP Serveru pomocí vlastního klienta .NET
  • Spuštění výzvy k otestování operací serveru Azure MCP a správy prostředků Azure

Požadavky

Poznámka:

Prostředky Azure, ke kterým chcete získat přístup pomocí Azure MCP Serveru, už musí existovat v rámci vašeho předplatného Azure. Kromě toho musí mít váš uživatelský účet přiřazené potřebné role a oprávnění RBAC pro tyto prostředky.

Přihlášení k Azure MCP Serveru pro místní vývoj

Azure MCP Server se autentizuje vůči Microsoft Entra ID pomocí knihovny Azure Identity pro .NET. Server podporuje dva režimy ověřování:

  • Režim zprostředkovatele: Používá nativní ověřování operačního systému (například Správce webových účtů systému Windows) s InteractiveBrowserCredential.
  • Režim řetězu přihlašovacích údajů: Zkouší více metod ověřování v posloupnosti: proměnné prostředí, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Developer CLI a interaktivní ověřování v prohlížeči.

Přihlaste se pomocí některé z těchto metod:

  1. Otevřete paletu příkazů (Ctrl+Shift+P nebo Cmd+Shift+P na Macu).
  2. Spusťte Azure: Přihlaste se a postupujte podle pokynů.

Po přihlášení může Azure MCP Server ověřovat a spouštět operace ve službách Azure na základě vašich oprávnění.

Vytvoření hostitelské aplikace .NET

Provedením následujících kroků vytvořte konzolovou aplikaci .NET. Aplikace se připojí k modelu AI a funguje jako hostitel klienta MCP, který se připojuje k serveru Azure MCP.

Vytvoření projektu

  1. Otevřete terminál do prázdné složky, do které chcete projekt vytvořit.

  2. Spuštěním následujícího příkazu vytvořte novou konzolovou aplikaci .NET:

    dotnet new console -n MCPHostApp
    
  3. Přejděte do nově vytvořené složky projektu:

    cd MCPHostApp
    
  4. Otevřete složku projektu ve zvoleném editoru, například Visual Studio Code:

    code .
    

Přidejte závislosti

  1. V terminálu spusťte následující příkazy a přidejte potřebné balíčky NuGet:

    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. Zkontrolujte soubor MCPHostApp.csproj a ověřte, zda byly balíčky přidány.

  3. Spuštěním následujícího příkazu sestavte projekt a ujistěte se, že je vše správně nastavené:

    dotnet build
    

Přidání kódu aplikace

Obsah Program.cs nahraďte následujícím kódem:

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);
}

Předchozí kód provádí následující úlohy:

  • Inicializuje IChatClient abstrakci pomocí Microsoft.Extensions.AI knihoven.
  • Vytvoří klienta MCP pro interakci se serverem Azure MCP pomocí standardního přenosu vstupně-výstupních operací. Zadaný npx příkaz a odpovídající argumenty stáhne a spustí Azure MCP Server.
  • Načte a zobrazí seznam dostupných nástrojů ze serveru MCP, což je standardní funkce MCP.
  • Implementuje konverzační smyčku, která zpracovává výzvy uživatelů a využívá nástroje pro odpovědi.

Spuštění a otestování aplikace

Provedením následujících kroků otestujte hostitelskou aplikaci .NET:

  1. V okně terminálu otevřete kořen projektu a spusťte aplikaci spuštěním následujícího příkazu:

    dotnet run
    
  2. Po spuštění aplikace zadejte následující testovací výzvu:

    List all of the resource groups in my subscription
    

    Výstup předchozí výzvy by měl vypadat podobně jako v následujícím textu:

    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. Prozkoumejte a otestujte operace Azure MCP pomocí dalších relevantních výzev, například:

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

Další kroky