Dela via


Kom igång med Azure MCP Server med .NET

Azure MCP Server använder Model Context Protocol (MCP) för att standardisera integreringar mellan AI-appar och externa verktyg och datakällor, vilket gör det möjligt för AI-system att utföra åtgärder som är sammanhangsmedvetna om dina Azure-resurser.

I den här artikeln får du lära dig hur du utför följande uppgifter:

  • Installera och autentisera till Azure MCP Server
  • Ansluta till Azure MCP Server med en anpassad .NET-klient
  • Kör uppmaningar för att testa Azure MCP Server-åtgärder och hantera Azure-resurser

Förutsättningar

Anmärkning

De Azure-resurser som du tänker komma åt med Azure MCP Server måste redan finnas i din Azure-prenumeration. Dessutom måste ditt användarkonto ha nödvändiga RBAC-roller och behörigheter tilldelade för dessa resurser.

Logga in för lokal utveckling

Azure MCP Server ger en sömlös autentiseringsupplevelse med tokenbaserad autentisering via Microsoft Entra-ID. Internt använder DefaultAzureCredential Azure MCP Server från Azure Identity-biblioteket för att autentisera användare.

Du måste logga in på något av de verktyg som stöds lokalt DefaultAzureCredential med ditt Azure-konto för att arbeta med Azure MCP Server. Logga in med ett terminalfönster, till exempel Visual Studio Code-terminalen:

az login

När du har loggat in på något av ovanstående verktyg kan Azure MCP Server automatiskt identifiera dina autentiseringsuppgifter och använda dem för att autentisera och utföra åtgärder på Azure-tjänster.

Anmärkning

Du kan också logga in på Azure via Visual Studio. Azure MCP Server kan bara köra åtgärder som den inloggade användaren har behörighet att utföra.

Skapa .NET-värdappen

Slutför följande steg för att skapa en .NET-konsolapp. Appen ansluter till en AI-modell och fungerar som värd för en MCP-klient som ansluter till en Azure MCP-server.

Skapa projektet

  1. Öppna en terminal till en tom mapp där du vill skapa projektet.

  2. Kör följande kommando för att skapa ett nytt .NET-konsolprogram:

    dotnet new console -n MCPHostApp
    
  3. Navigera till den nyligen skapade projektmappen:

    cd MCPHostApp
    
  4. Öppna projektmappen i valfri redigerare, till exempel Visual Studio Code:

    code .
    

Lägg till beroendena

  1. I terminalen kör du följande kommandon för att lägga till nödvändiga NuGet-paket:

    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. Kontrollera att paketen har lagts till genom att kontrollera MCPHostApp.csproj filen.

  3. Kör följande kommando för att skapa projektet och se till att allt är korrekt konfigurerat:

    dotnet build
    

Lägg till appkoden

Ersätt innehållet i Program.cs med följande kod:

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

Föregående kod utför följande uppgifter:

  • Initierar en IChatClient abstraktion med hjälp av biblioteken Microsoft.Extensions.AI .
  • Skapar en MCP-klient för att interagera med Azure MCP Server med hjälp av en vanlig I/O-transport. Det angivna npx kommandot och motsvarande argument laddar ned och startar Azure MCP-servern.
  • Hämtar och visar en lista över tillgängliga verktyg från MCP-servern, som är en mcp-standardfunktion.
  • Implementerar en konversationsloop som bearbetar användarens frågor och använder verktygen för svar.

Köra och testa appen

Utför följande steg för att testa .NET-värdappen:

  1. Kör följande kommando i ett terminalfönster som är öppet för projektets rot för att starta appen:

    dotnet run
    
  2. När appen har körts anger du följande testprompt:

    List all of the resource groups in my subscription
    

    Utdata för föregående fråga bör likna följande text:

    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. Utforska och testa Azure MCP-åtgärder med hjälp av andra relevanta frågor, till exempel:

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

Nästa steg