Share via


Aan de slag met de Azure MCP-server met .NET

De Azure MCP-server gebruikt het MCP (Model Context Protocol) om integraties tussen AI-apps en externe hulpprogramma's en gegevensbronnen te standaardiseren, zodat AI-systemen bewerkingen kunnen uitvoeren die contextbewust zijn voor uw Azure-resources.

In dit artikel leert u hoe u de volgende taken uitvoert:

  • De Azure MCP-server installeren en verifiëren
  • Verbinding maken met Azure MCP Server met behulp van een aangepaste .NET-client
  • Prompts uitvoeren om Bewerkingen van Azure MCP Server te testen en Azure-resources te beheren

Vereiste voorwaarden

Opmerking

De Azure-resources die u wilt openen met Azure MCP Server, moeten al bestaan binnen uw Azure-abonnement. Daarnaast moet voor uw gebruikersaccount de benodigde RBAC-rollen en -machtigingen zijn toegewezen voor deze resources.

Aanmelden voor lokale ontwikkeling

Azure MCP Server biedt een naadloze verificatie-ervaring met behulp van verificatie op basis van tokens via Microsoft Entra ID. Intern maakt Azure MCP Server gebruik DefaultAzureCredential van de Azure Identity-bibliotheek om gebruikers te verifiëren.

U moet zich aanmelden bij een van de hulpprogramma's die lokaal worden ondersteund door DefaultAzureCredential uw Azure-account om te kunnen werken met Azure MCP Server. Meld u aan met behulp van een terminalvenster, zoals de Visual Studio Code-terminal:

az login

Nadat u zich hebt aangemeld bij een van de voorgaande hulpprogramma's, kan Azure MCP Server uw referenties automatisch detecteren en gebruiken om bewerkingen op Azure-services te verifiëren en uit te voeren.

Opmerking

U kunt zich ook aanmelden bij Azure via Visual Studio. Azure MCP Server kan alleen bewerkingen uitvoeren waarvoor de aangemelde gebruiker machtigingen heeft om uit te voeren.

De .NET-host-app maken

Voer de volgende stappen uit om een .NET-console-app te maken. De app maakt verbinding met een AI-model en fungeert als host voor een MCP-client die verbinding maakt met een Azure MCP-server.

Het project maken

  1. Open een terminal naar een lege map waarin u het project wilt maken.

  2. Voer de volgende opdracht uit om een nieuwe .NET-consoletoepassing te maken:

    dotnet new console -n MCPHostApp
    
  3. Navigeer naar de zojuist gemaakte projectmap:

    cd MCPHostApp
    
  4. Open de projectmap in de gewenste editor, zoals Visual Studio Code:

    code .
    

De afhankelijkheden toevoegen

  1. Voer in de terminal de volgende opdrachten uit om de benodigde NuGet-pakketten toe te voegen:

    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. Controleer of de pakketten zijn toegevoegd door het MCPHostApp.csproj bestand te controleren.

  3. Voer de volgende opdracht uit om het project te bouwen en ervoor te zorgen dat alles correct is ingesteld:

    dotnet build
    

De app-code toevoegen

Vervang de inhoud van Program.cs met de volgende 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);
}

Met de voorgaande code worden de volgende taken uitgevoerd:

  • Initialiseert een IChatClient abstractie met behulp van de Microsoft.Extensions.AI bibliotheken.
  • Hiermee maakt u een MCP-client voor interactie met de Azure MCP-server met behulp van een standaard I/O-transport. De opgegeven npx opdracht en de bijbehorende argumenten downloaden en starten de Azure MCP-server.
  • Hiermee wordt een lijst met beschikbare hulpprogramma's opgehaald en weergegeven van de MCP-server. Dit is een standaard MCP-functie.
  • Implementeert een gesprekslus waarmee gebruikersprompts worden verwerkt en de hulpprogramma's voor antwoorden worden gebruikt.

De app uitvoeren en testen

Voer de volgende stappen uit om uw .NET-host-app te testen:

  1. Open in een terminalvenster naar de hoofdmap van uw project en voer de volgende opdracht uit om de app te starten:

    dotnet run
    
  2. Zodra de app wordt uitgevoerd, voert u de volgende testprompt in:

    List all of the resource groups in my subscription
    

    De uitvoer voor de vorige prompt moet eruitzien als de volgende tekst:

    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. Verken en test de Azure MCP-bewerkingen met behulp van andere relevante prompts, zoals:

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

Volgende stappen