Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il server MCP di Azure usa il protocollo MCP (Model Context Protocol) per standardizzare le integrazioni tra app di intelligenza artificiale e strumenti esterni e origini dati, consentendo ai sistemi di intelligenza artificiale di eseguire operazioni con riconoscimento del contesto delle risorse di Azure.
In questo articolo si apprenderà come completare le attività seguenti:
- Installare ed eseguire l'autenticazione nel server MCP di Azure
- Connettersi al server MCP di Azure usando un client .NET personalizzato
- Eseguire richieste di test delle operazioni del server MCP di Azure e gestire le risorse di Azure
Prerequisiti
- Un account Azure con una sottoscrizione attiva
- Installato .NET 9.0 o versione successiva
- Node.js LTS installato
Annotazioni
Le risorse di Azure a cui si intende accedere con il server MCP di Azure devono già esistere all'interno della sottoscrizione di Azure. Inoltre, l'account utente deve avere i ruoli e le autorizzazioni di controllo degli accessi in base al ruolo necessari assegnati per tali risorse.
Accesso per lo sviluppo locale
Il server MCP di Azure offre un'esperienza di autenticazione senza problemi usando l'autenticazione basata su token tramite Microsoft Entra ID. Internamente, il server MCP di Azure usa DefaultAzureCredential la libreria di identità di Azure per autenticare gli utenti.
È necessario accedere a uno degli strumenti supportati in DefaultAzureCredential locale con l'account Azure per usare il server MCP di Azure. Accedere usando una finestra del terminale, ad esempio il terminale di Visual Studio Code:
Dopo aver eseguito l'accesso a uno degli strumenti precedenti, Il server MCP di Azure può individuare automaticamente le credenziali e usarle per autenticare ed eseguire operazioni sui servizi di Azure.
Annotazioni
È anche possibile accedere ad Azure tramite Visual Studio. Il server MCP di Azure è in grado di eseguire solo operazioni che l'utente connesso dispone delle autorizzazioni da eseguire.
Creare l'app host .NET
Completare i passaggi seguenti per creare un'app console .NET. L'app si connette a un modello di intelligenza artificiale e funge da host per un client MCP che si connette a un server MCP di Azure.
Creare il progetto
Aprire un terminale in una cartella vuota in cui si vuole creare il progetto.
Eseguire il comando seguente per creare una nuova applicazione console .NET:
dotnet new console -n MCPHostAppPassare alla cartella del progetto appena creata:
cd MCPHostAppAprire la cartella del progetto nell'editor preferito, ad esempio Visual Studio Code:
code .
Aggiungere le dipendenze
Nel terminale eseguire i comandi seguenti per aggiungere i pacchetti NuGet necessari:
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 --prereleaseVerificare che i pacchetti siano stati aggiunti controllando il
MCPHostApp.csprojfile.Eseguire il comando seguente per compilare il progetto e assicurarsi che tutto sia configurato correttamente:
dotnet build
Aggiungere il codice dell'app
Sostituire il contenuto di Program.cs con il codice seguente:
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);
}
Il codice precedente esegue le attività seguenti:
- Inizializza un'astrazione
IChatClientutilizzando leMicrosoft.Extensions.AIlibrerie. - Crea un client MCP per interagire con il server MCP di Azure usando un trasporto di I/O standard. Il comando fornito
npxe gli argomenti corrispondenti scaricano e avviano il server MCP di Azure. - Recupera e visualizza un elenco di strumenti disponibili dal server MCP, che è una funzione MCP standard.
- Implementa un ciclo di conversazione che elabora le richieste degli utenti e usa gli strumenti per le risposte.
Eseguire e testare l'app
Completare i passaggi seguenti per testare l'app host .NET:
In una finestra del terminale aperta alla radice del progetto eseguire il comando seguente per avviare l'app:
dotnet runDopo l'esecuzione dell'app, immettere il prompt di test seguente:
List all of the resource groups in my subscriptionL'output per il prompt precedente dovrebbe essere simile al testo seguente:
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!Esplorare e testare le operazioni MCP di Azure usando altre richieste pertinenti, ad esempio:
List all of the storage accounts in my subscription Get the available tables in my storage accounts