Teilen über


Erste Schritte mit dem Azure MCP-Server mit .NET

Der Azure MCP-Server verwendet das Model Context Protocol (MCP), um Integrationen zwischen KI-Apps und externen Tools und Datenquellen zu standardisieren, sodass KI-Systeme Vorgänge ausführen können, die kontextbewusst von Ihren Azure-Ressourcen sind.

In diesem Artikel erfahren Sie, wie Sie die folgenden Aufgaben ausführen:

  • Installieren und Authentifizieren beim Azure MCP-Server
  • Herstellen einer Verbindung mit Azure MCP Server mithilfe eines benutzerdefinierten .NET-Clients
  • Ausführen von Eingabeaufforderungen zum Testen von Azure MCP Server-Vorgängen und Verwalten von Azure-Ressourcen

Voraussetzungen

Hinweis

Die Azure-Ressourcen, auf die Sie mit Azure MCP Server zugreifen möchten, müssen bereits in Ihrem Azure-Abonnement vorhanden sein. Darüber hinaus muss Ihr Benutzerkonto über die erforderlichen RBAC-Rollen und Berechtigungen für diese Ressourcen verfügen.

Anmelden für die lokale Entwicklung

Azure MCP Server bietet eine nahtlose Authentifizierung mithilfe der tokenbasierten Authentifizierung über Microsoft Entra ID. Intern verwendet DefaultAzureCredential Azure MCP Server aus der Azure Identity-Bibliothek , um Benutzer zu authentifizieren.

Sie müssen sich bei einem der Tools anmelden, die von DefaultAzureCredential Ihrem Azure-Konto unterstützt werden, um mit Azure MCP Server zu arbeiten. Melden Sie sich mit einem Terminalfenster an, z. B. dem Visual Studio Code-Terminal:

az login

Nachdem Sie sich erfolgreich bei einem der vorherigen Tools angemeldet haben, kann Azure MCP Server Ihre Anmeldeinformationen automatisch ermitteln und zum Authentifizieren und Ausführen von Vorgängen für Azure-Dienste verwenden.

Hinweis

Sie können sich auch über Visual Studio bei Azure anmelden. Azure MCP Server kann nur Vorgänge ausführen, für die der angemeldete Benutzer über Berechtigungen zum Ausführen verfügt.

Erstellen der .NET-Host-App

Führen Sie die folgenden Schritte aus, um eine .NET-Konsolen-App zu erstellen. Die App stellt eine Verbindung mit einem KI-Modell her und fungiert als Host für einen MCP-Client, der eine Verbindung mit einem Azure MCP-Server herstellt.

Erstellen des Projekts

  1. Öffnen Sie ein Terminal in einem leeren Ordner, in dem Sie das Projekt erstellen möchten.

  2. Führen Sie den folgenden Befehl aus, um eine neue .NET-Konsolenanwendung zu erstellen:

    dotnet new console -n MCPHostApp
    
  3. Navigieren Sie zum neu erstellten Projektordner:

    cd MCPHostApp
    
  4. Öffnen Sie den Projektordner in Ihrem Editor, z. B. Visual Studio Code:

    code .
    

Hinzufügen der Abhängigkeiten

  1. Führen Sie im Terminal die folgenden Befehle aus, um die erforderlichen NuGet-Pakete hinzuzufügen:

    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. Überprüfen Sie, ob die Pakete hinzugefügt wurden, indem Sie die MCPHostApp.csproj Datei überprüfen.

  3. Führen Sie den folgenden Befehl aus, um das Projekt zu erstellen und sicherzustellen, dass alles ordnungsgemäß eingerichtet ist:

    dotnet build
    

Hinzufügen des App-Codes

Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code.

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

Der vorangehende Code führt die folgenden Aufgaben aus:

  • Initialisiert eine IChatClient Abstraktion mithilfe der Microsoft.Extensions.AI Bibliotheken.
  • Erstellt einen MCP-Client für die Interaktion mit dem Azure MCP-Server mithilfe eines standardmäßigen E/A-Transports. Der bereitgestellte npx Befehl und die entsprechenden Argumente laden den Azure MCP-Server herunter und starten sie.
  • Ruft eine Liste der verfügbaren Tools vom MCP-Server ab und zeigt sie an, bei dem es sich um eine standardmäßige MCP-Funktion handelt.
  • Implementiert eine Unterhaltungsschleife, die Benutzeraufforderungen verarbeitet und die Tools für Antworten verwendet.

Ausführen und Testen der App

Führen Sie die folgenden Schritte aus, um Ihre .NET-Host-App zu testen:

  1. Führen Sie in einem Terminalfenster, das im Stammverzeichnis Ihres Projekts geöffnet ist, den folgenden Befehl aus, um die App zu starten:

    dotnet run
    
  2. Sobald die App ausgeführt wird, geben Sie die folgende Testaufforderung ein:

    List all of the resource groups in my subscription
    

    Die Ausgabe für die vorherige Eingabeaufforderung sollte dem folgenden Text ähneln:

    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. Erkunden und testen Sie die Azure MCP-Vorgänge mithilfe anderer relevanter Eingabeaufforderungen, z. B.:

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

Nächste Schritte