Compartir vía


Introducción al uso del servidor MCP de Azure con .NET

El servidor MCP de Azure usa el Protocolo de contexto de modelo (MCP) para estandarizar las integraciones entre las aplicaciones de IA y las herramientas externas y los orígenes de datos, lo que permite a los sistemas de inteligencia artificial realizar operaciones que tienen en cuenta el contexto de los recursos de Azure.

En este artículo, aprenderá a completar las siguientes tareas:

  • Instalación y autenticación en el servidor MCP de Azure
  • Conexión al servidor MCP de Azure mediante un cliente .NET personalizado
  • Ejecución de avisos para probar las operaciones del servidor MCP de Azure y administrar recursos de Azure

Prerrequisitos

Nota:

Los recursos de Azure a los que pretende acceder con azure MCP Server ya deben existir dentro de la suscripción de Azure. Además, la cuenta de usuario debe tener asignados los roles y permisos de RBAC necesarios para esos recursos.

Inicia sesión en Azure MCP Server para desarrollo local

Azure MCP Server se autentica con Microsoft Entra ID mediante la biblioteca de identidad de Azure para .NET. El servidor admite dos modos de autenticación:

  • Modo de agente: usa la autenticación nativa del sistema operativo (como el Administrador de cuentas web de Windows) con InteractiveBrowserCredential.
  • Modo de cadena de credenciales: intenta varios métodos de autenticación en secuencia: variables de entorno, Visual Studio Code, Visual Studio, CLI de Azure, Azure PowerShell, CLI para desarrolladores de Azure y autenticación interactiva del explorador.

Inicie sesión con cualquiera de estos métodos:

  1. Abra la paleta de comandos (Ctrl+Shift+P o Cmd+Shift+P en Mac).
  2. Ejecución de Azure: inicie sesión y siga las indicaciones.

Después de iniciar sesión, Azure MCP Server puede autenticar y ejecutar operaciones en los servicios de Azure en función de los permisos.

Creación de la aplicación host de .NET

Complete los pasos siguientes para crear una aplicación de consola de .NET. La aplicación se conecta a un modelo de IA y actúa como host para un cliente MCP que se conecta a un servidor de Azure MCP.

Creación del proyecto

  1. Abra un terminal en una carpeta vacía donde quiera crear el proyecto.

  2. Ejecute el comando siguiente para crear una nueva aplicación de consola de .NET:

    dotnet new console -n MCPHostApp
    
  3. Vaya a la carpeta del proyecto recién creada:

    cd MCPHostApp
    
  4. Abra la carpeta del proyecto en el editor que prefiera, como Visual Studio Code:

    code .
    

Agrega las dependencias

  1. En el terminal, ejecute los siguientes comandos para agregar los paquetes NuGet necesarios:

    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. Compruebe que los paquetes se agregaron comprobando el MCPHostApp.csproj archivo.

  3. Ejecute el siguiente comando para compilar el proyecto y asegurarse de que todo está configurado correctamente:

    dotnet build
    

Adición del código de la aplicación

Reemplace el contenido de Program.cs por el código siguiente:

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

El código anterior realiza las siguientes tareas:

  • Inicializa una IChatClient abstracción mediante las Microsoft.Extensions.AI librerías.
  • Crea un cliente MCP para interactuar con el servidor MCP de Azure mediante un transporte de E/S estándar. El comando proporcionado npx y los argumentos correspondientes descargan e inician el servidor de Azure MCP.
  • Recupera y muestra una lista de herramientas disponibles del servidor MCP, que es una función de MCP estándar.
  • Implementa un bucle conversacional que procesa las solicitudes del usuario y utiliza las herramientas para las respuestas.

Ejecución y prueba de la aplicación

Complete los pasos siguientes para probar la aplicación host de .NET:

  1. En una ventana de terminal abierta a la raíz del proyecto, ejecute el siguiente comando para iniciar la aplicación:

    dotnet run
    
  2. Una vez que se esté ejecutando la aplicación, escriba el siguiente mensaje de prueba:

    List all of the resource groups in my subscription
    

    El resultado de la solicitud anterior debe ser similar al texto siguiente:

    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. Explore y pruebe las operaciones de Azure MCP mediante otras solicitudes pertinentes, como:

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

Pasos siguientes