Megosztás a következőn keresztül:


Az Azure MCP Server használatának első lépései

Az Azure MCP Server a Model Context Protocol (MCP) használatával szabványosítja az AI-alkalmazások és a külső eszközök és adatforrások közötti integrációt, lehetővé téve az AI-rendszerek számára az Azure-erőforrások környezettudatos műveleteit.

Ebből a cikkből megtudhatja, hogyan végezheti el a következő feladatokat:

  • Az Azure MCP Server telepítése és hitelesítése
  • Csatlakozás az Azure MCP Serverhez GitHub Copilot-ügynök mód használatával a Visual Studio Code-ban
  • Az Azure MCP Server műveleteinek tesztelésére és az Azure-erőforrások használatára vonatkozó kérések futtatása

Előfeltételek

Megjegyzés:

Az Azure MCP Serverrel elérni kívánt Azure-erőforrásoknak már létezniük kell az Azure-előfizetésben. Emellett a felhasználói fióknak rendelkeznie kell az erőforrásokhoz szükséges RBAC-szerepkörök és engedélyek hozzárendelésével .

Az Azure MCP-kiszolgáló telepítése

Az Azure MCP Server Visual Studio Code-ban való telepítéséhez válassza az alábbi lehetőségek egyikét:

  1. Ha telepíteni szeretné az Azure MCP Server for Visual Studio Code-ot a felhasználói beállításokban, válassza az alábbi hivatkozást:

    Telepítés NPX használatával a Visual Studio Code-ban

    Megnyílik a telepítési lehetőségek listája a Visual Studio Code-ben. Válassza a Kiszolgáló telepítése lehetőséget a kiszolgálókonfiguráció felhasználói beállításokhoz való hozzáadásához.

    Képernyőkép az Azure MCP Server telepítési lehetőségeiről.

  2. Nyissa meg a GitHub Copilotot, és válassza az Ügynök mód lehetőséget. Az Ügynök módról a Visual Studio Code dokumentációjában talál további információt.

  3. Az eszközök listájának frissítésével az Azure MCP Server elérhető lehetőségként jelenik meg:

    Képernyőkép az Azure MCP Serverről GitHub Copilot-eszközként.

Az Azure MCP-kiszolgáló tesztelése parancssorokkal

  1. Nyissa meg a GitHub Copilotot, és válassza az Ügynök mód lehetőséget.

  2. Adjon meg egy kérést, amely miatt az ügynök Azure MCP Server-eszközöket használ, például listázhatja az Azure-erőforráscsoportokat.

  3. Az Azure MCP Server hitelesítéséhez a Copilot kéri, hogy jelentkezzen be az Azure-ba a böngészővel.

    Megjegyzés:

    A Copilot nem fogja kérni, hogy jelentkezzen be az Azure-ba, ha már más helyi eszközök, például az Azure CLI használatával van hitelesítve.

  4. A Copilot engedélyt kér a kéréshez szükséges Azure MCP Server-művelet futtatásához. Válassza a Folytatás lehetőséget, vagy használja a nyílbillentyűt egy konkrétabb viselkedés kiválasztásához:

    • Az aktuális munkamenet mindig az aktuális GitHub Copilot-ügynök módú munkamenetben futtatja a műveletet.
    • Az aktuális munkaterület mindig az aktuális Visual Studio Code-munkaterület parancsát futtatja.
    • Mindig engedélyezze , hogy a művelet mindig fusson a GitHub Copilot Agent Mode-munkamenetekhez vagy bármely Visual Studio Code-munkaterülethez.

    Képernyőkép az Azure MCP Server-műveletek futtatásához elérhető lehetőségekről.

    Az előző parancssor kimenetének a következő szöveghez kell hasonlítania:

    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!
    
  5. Az Azure MCP-műveletek megismerése és tesztelése más vonatkozó kérésekkel, például:

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

Ebből a cikkből megtudhatja, hogyan végezheti el a következő feladatokat:

  • Az Azure MCP Server telepítése és hitelesítése
  • Csatlakozás az Azure MCP Serverhez egyéni .NET-ügyfél használatával
  • Az Azure MCP Server műveleteinek tesztelésére és az Azure-erőforrások kezelésére vonatkozó kérések futtatása

Előfeltételek

Megjegyzés:

Az Azure MCP Serverrel elérni kívánt Azure-erőforrásoknak már létezniük kell az Azure-előfizetésben. Emellett a felhasználói fióknak rendelkeznie kell az erőforrásokhoz szükséges RBAC-szerepkörök és engedélyek hozzárendelésével .

Bejelentkezés helyi fejlesztéshez

Az Azure MCP Server zökkenőmentes hitelesítési élményt nyújt token-alapú hitelesítéssel a Microsoft Entra ID-vel. Az Azure MCP Server belsőleg az DefaultAzureCredential használja a felhasználók hitelesítését.

Az Azure MCP Server használatához be kell jelentkeznie az Azure-fiókjával helyileg támogatott DefaultAzureCredential eszközök egyikére. Bejelentkezés terminálablakkal, például a Visual Studio Code terminállal:

az login

Miután sikeresen bejelentkezett az előző eszközök egyikére, az Azure MCP Server automatikusan felderítheti a hitelesítő adatait, és felhasználhatja őket az Azure-szolgáltatások hitelesítésére és műveleteinek végrehajtására.

Megjegyzés:

A Visual Studióval is bejelentkezhet az Azure-ba. Az Azure MCP Server csak olyan műveleteket képes futtatni, amelyekre a bejelentkezett felhasználónak engedélye van.

A .NET-gazdagépalkalmazás létrehozása

A .NET-konzolalkalmazás létrehozásához hajtsa végre az alábbi lépéseket. Az alkalmazás csatlakozik egy AI modellhez, és MCP-ügyfél gazdaként működik, amely egy Azure MCP kiszolgálóhoz kapcsolódik.

A projekt létrehozása

  1. Nyisson meg egy terminált egy üres mappába, ahol létre szeretné hozni a projektet.

  2. Futtassa a következő parancsot egy új .NET-konzolalkalmazás létrehozásához:

    dotnet new console -n MCPHostApp
    
  3. Lépjen az újonnan létrehozott projektmappába:

    cd MCPHostApp
    
  4. Nyissa meg a projektmappát a választott szerkesztőben, például a Visual Studio Code-ban:

    code .
    

Függőségek hozzáadása

  1. A terminálban futtassa a következő parancsokat a szükséges NuGet-csomagok hozzáadásához:

    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. Ellenőrizze, hogy a csomagok hozzáadva lettek-e a MCPHostApp.csproj fájl ellenőrzésével.

  3. Futtassa a következő parancsot a projekt létrehozásához, és győződjön meg arról, hogy minden megfelelően van beállítva:

    dotnet build
    

Az alkalmazáskód hozzáadása

Cserélje le a Program.cs tartalmát a következő kódra:

using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;
using ModelContextProtocol.Protocol.Transport;

// 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 McpClientFactory.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);
}

Az előző kód a következő feladatokat hajtja végre:

  • Az IChatClient absztrakció inicializálása a Microsoft.Extensions.AI könyvtárak felhasználásával.
  • Létrehoz egy MCP-ügyfelet, amely szabványos I/O-átvitel használatával kommunikál az Azure MCP-kiszolgálóval. A megadott npx parancs és a hozzájuk tartozó argumentumok letöltik és elindítják az Azure MCP-kiszolgálót.
  • Lekéri és megjeleníti az MCP-kiszolgálóról elérhető eszközök listáját, amely egy szabványos MCP-függvény.
  • Olyan beszélgetési hurkot implementál, amely feldolgozza a felhasználók kéréseit, és a válaszok eszközeit használja.

Az alkalmazás futtatása és tesztelése

A .NET-gazdagépalkalmazás teszteléséhez hajtsa végre az alábbi lépéseket:

  1. A projekt gyökeréhez megnyitott terminálablakban futtassa a következő parancsot az alkalmazás elindításához:

    dotnet run
    
  2. Az alkalmazás futtatása után adja meg a következő tesztüzenetet:

    List all of the resource groups in my subscription
    

    Az előző parancssor kimenetének a következő szöveghez kell hasonlítania:

    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. Az Azure MCP-műveletek megismerése és tesztelése más vonatkozó kérésekkel, például:

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

Ebből a cikkből megtudhatja, hogyan végezheti el a következő feladatokat:

  • Az Azure MCP Server telepítése és hitelesítése
  • Csatlakozás az Azure MCP Serverhez egyéni Python-ügyfél használatával
  • Az Azure MCP Server műveleteinek tesztelésére és az Azure-erőforrások kezelésére vonatkozó kérések futtatása

Előfeltételek

Megjegyzés:

Az Azure MCP Serverrel elérni kívánt Azure-erőforrásoknak már létezniük kell az Azure-előfizetésben. Emellett a felhasználói fióknak rendelkeznie kell az erőforrásokhoz szükséges RBAC-szerepkörök és engedélyek hozzárendelésével .

Bejelentkezés helyi fejlesztéshez

Az Azure MCP Server zökkenőmentes hitelesítési élményt nyújt token-alapú hitelesítéssel a Microsoft Entra ID-vel. Az Azure MCP Server belsőleg az DefaultAzureCredential használja a felhasználók hitelesítését.

Az Azure MCP Server használatához be kell jelentkeznie az Azure-fiókjával helyileg támogatott DefaultAzureCredential eszközök egyikére. Bejelentkezés terminálablakkal, például a Visual Studio Code terminállal:

az login

Miután sikeresen bejelentkezett az előző eszközök egyikére, az Azure MCP Server automatikusan felderítheti a hitelesítő adatait, és felhasználhatja őket az Azure-szolgáltatások hitelesítésére és műveleteinek végrehajtására.

Megjegyzés:

A Visual Studióval is bejelentkezhet az Azure-ba. Az Azure MCP Server csak olyan műveleteket képes futtatni, amelyekre a bejelentkezett felhasználónak engedélye van.

A Python-alkalmazás létrehozása

Python-alkalmazás létrehozásához hajtsa végre az alábbi lépéseket. Az alkalmazás csatlakozik egy AI modellhez, és MCP-ügyfél gazdaként működik, amely egy Azure MCP kiszolgálóhoz kapcsolódik.

A projekt létrehozása

  1. Nyisson meg egy üres mappát a választott szerkesztőben.

  2. Hozzon létre egy új, elnevezett requirements.txt fájlt, és adja hozzá a következő kódtár-függőségeket:

    mcp
    azure-identity
    openai
    logging
    
  3. Ugyanabban a mappában hozzon létre egy új, elnevezett .env fájlt, és adja hozzá a következő környezeti változókat:

    AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint>
    AZURE_OPENAI_MODEL=<your-model-deployment-name>
    
  4. Hozzon létre egy üres fájlt, amely main.py az alkalmazás kódjának tárolására szolgál.

A környezet létrehozása és függőségek telepítése

  1. Nyisson meg egy terminált az új mappában, és hozzon létre egy Python virtuális környezetet az alkalmazáshoz:

    python -m venv venv
    
  2. A virtuális környezet aktiválása:

    venv\Scripts\activate
    
  3. Telepítse a függőségeket a következő forrásból requirements.txt:

    pip install -r requirements.txt
    

Az alkalmazáskód hozzáadása

Frissítse a következő kód tartalmát Main.py :

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client
import json, os, logging, asyncio
from dotenv import load_dotenv

# Setup logging and load environment variables
logger = logging.getLogger(__name__)
load_dotenv()

# Azure OpenAI configuration
AZURE_OPENAI_ENDPOINT = os.getenv("AZURE_OPENAI_ENDPOINT")
AZURE_OPENAI_MODEL = os.getenv("AZURE_OPENAI_MODEL", "gpt-4o")

# Initialize Azure credentials
token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

async def run():
    # Initialize Azure OpenAI client
    client = AzureOpenAI(
            azure_endpoint=AZURE_OPENAI_ENDPOINT, 
            api_version="2024-04-01-preview", 
            azure_ad_token_provider=token_provider
        )

    # MCP client configurations
    server_params = StdioServerParameters(
        command="npx",
        args=["-y", "@azure/mcp@latest", "server", "start"],
        env=None
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available tools
            tools = await session.list_tools()
            for tool in tools.tools: print(tool.name)

            # Format tools for Azure OpenAI
            available_tools = [{
                "type": "function",
                "function": {
                    "name": tool.name,
                    "description": tool.description,
                    "parameters": tool.inputSchema
                }
            } for tool in tools.tools]

            # Start conversational loop
            messages = []
            while True:
                try:
                    user_input = input("\nPrompt: ")
                    messages.append({"role": "user", "content": user_input})

                    # First API call with tool configuration
                    response = client.chat.completions.create(
                        model = AZURE_OPENAI_MODEL,
                        messages = messages,
                        tools = available_tools)

                    # Process the model's response
                    response_message = response.choices[0].message
                    messages.append(response_message)

                    # Handle function calls
                    if response_message.tool_calls:
                        for tool_call in response_message.tool_calls:
                                function_args = json.loads(tool_call.function.arguments)
                                result = await session.call_tool(tool_call.function.name, function_args)

                                # Add the tool response to the messages
                                messages.append({
                                    "tool_call_id": tool_call.id,
                                    "role": "tool",
                                    "name": tool_call.function.name,
                                    "content": result.content,
                                })
                    else:
                        logger.info("No tool calls were made by the model")

                    # Get the final response from the model
                    final_response = client.chat.completions.create(
                        model = AZURE_OPENAI_MODEL,
                        messages = messages,
                        tools = available_tools)

                    for item in final_response.choices:
                        print(item.message.content)
                except Exception as e:
                    logger.error(f"Error in conversation loop: {e}")
                    print(f"An error occurred: {e}")

if __name__ == "__main__":
    import asyncio
    asyncio.run(run())

Az előző kód a következő feladatokat hajtja végre:

  • Beállítja a naplózási és betölti a környezeti változókat egy .env fájlból.
  • Az Azure OpenAI-ügyfelet a azure-identity és openai könyvtárak használatával konfigurálja.
  • Inicializál egy MCP-ügyfelet az Azure MCP-kiszolgálóval való kommunikációhoz egy szabványos I/O-átvitel használatával.
  • Lekéri és megjeleníti az MCP-kiszolgálóról elérhető eszközök listáját.
  • Beszélgetési ciklust implementál a felhasználói kérések feldolgozásához, az eszközök használatához és az eszközhívások kezeléséhez.

Az alkalmazás futtatása és tesztelése

A .NET-gazdagépalkalmazás teszteléséhez hajtsa végre az alábbi lépéseket:

  1. A projekt gyökeréhez megnyitott terminálablakban futtassa a következő parancsot az alkalmazás elindításához:

    python main.py
    
  2. Az alkalmazás futtatása után adja meg a következő tesztüzenetet:

    List all of the resource groups in my subscription
    

    Az előző parancssor kimenetének a következő szöveghez kell hasonlítania:

    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. Az Azure MCP-műveletek megismerése és tesztelése más vonatkozó kérésekkel, például:

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

Következő lépések