Oktatóanyag: Az MCP használata dinamikus munkamenetekkel (Python)

Fontos

A dinamikus munkamenetek platform által felügyelt MCP-kiszolgálója előzetes verzióban érhető el. Az API-verzió 2025-02-02-preview és mcpServerSettings tulajdonságai változhatnak.

Ez az oktatóanyag bemutatja, hogyan hozhat létre munkamenetkészletet a platform által felügyelt MCP-kiszolgálóval, hogyan csatlakozhat hozzá, és hogyan hajthatja végre távolról a Python-kódot.

Az önálló MCP-kiszolgáló oktatóanyagaitól eltérően nem ír vagy helyez üzembe MCP-kiszolgálókódot. A platform beépített eszközöket biztosít a Python-munkamenetkészletekhez:

Eszköz Description
launchShell Új környezetet hoz létre, és visszaad egy environmentId
runPythonCodeInRemoteEnvironment Python-kód végrehajtása meglévő környezetben
runShellCommandInRemoteEnvironment Létező környezetben végrehajt egy shell parancsot

Ebben az útmutatóban Ön:

  • Python-munkamenetkészlet létrehozása engedélyezett MCP-kiszolgálóval
  • Az MCP-végpont és az API-kulcs lekérése
  • Inicializálja az MCP-kapcsolatot, és hajtsa végre a Python-kódot JSON-RPC
  • Az MCP-kiszolgáló csatlakoztatása a GitHub Copilothoz a VS Code-ban

Előfeltételek

Követelmény Description
Azure-fiók Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egyet ingyen.
Azure CLI (Az Azure parancssori felülete) Telepítse az Azure CLI-t.
göndörít curl (a legtöbb Linux és macOS rendszeren előre telepítve).
jq jq Az API-válaszok elemzésére használt JSON-processzor.
VS Code Visual Studio Code a GitHub Copilot bővítménnyel (a Copilot integrációs szakaszához).

Beállítás

  1. Frissítse az Azure CLI-t, és telepítse a Container Apps bővítményt:

    az upgrade
    az provider register --namespace Microsoft.App
    az extension add --name containerapp --allow-preview true --upgrade
    
  2. Jelentkezzen be, és állítsa be az előfizetését:

    az login
    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    az account set -s $SUBSCRIPTION_ID
    
  3. Változók beállítása ehhez az oktatóanyaghoz. Cserélje le a helyőrzőket az Ön által megadott értékekre:

    RESOURCE_GROUP=<RESOURCE_GROUP_NAME>
    SESSION_POOL_NAME=<SESSION_POOL_NAME>
    LOCATION=<LOCATION>
    
  4. Erőforráscsoport létrehozása:

    az group create --name $RESOURCE_GROUP --location $LOCATION
    

Python-munkamenetkészlet létrehozása MCP-kiszolgálóval

Munkamenetkészlet üzembe helyezése ARM-sablonnal, amelyen engedélyezve van az MCP.

  1. Hozzon létre egy fájlt:deploy.json

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "name": { "type": "String" },
            "location": { "type": "String" }
        },
        "resources": [
            {
                "type": "Microsoft.App/sessionPools",
                "apiVersion": "2025-02-02-preview",
                "name": "[parameters('name')]",
                "location": "[parameters('location')]",
                "properties": {
                    "poolManagementType": "Dynamic",
                    "containerType": "PythonLTS",
                    "scaleConfiguration": {
                        "maxConcurrentSessions": 5
                    },
                    "sessionNetworkConfiguration": {
                        "status": "EgressEnabled"
                    },
                    "dynamicPoolConfiguration": {
                        "lifecycleConfiguration": {
                            "lifecycleType": "Timed",
                            "coolDownPeriodInSeconds": 300
                        }
                    },
                    "mcpServerSettings": {
                        "isMCPServerEnabled": true
                    }
                }
            }
        ]
    }
    

    Megjegyzés:

    A sablon főbb tulajdonságai:

    • containerType: "PythonLTS": Python-futtatókörnyezettel hoz létre munkameneteket.
    • mcpServerSettings.isMCPServerEnabled: true: Engedélyezi a platform által felügyelt MCP-végpontot.
    • coolDownPeriodInSeconds: 300: A munkamenetek 5 perc inaktivitás után megsemmisülnek.
  2. A sablon üzembe helyezése:

Arm-sablon használatával hozzon létre egy Python-munkamenetkészletet, amelyen engedélyezve van az MCP-kiszolgáló.

  1. Hozzon létre egy központi telepítési sablonfájlt a következő néven deploy.json:

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "name": { "type": "String" },
            "location": { "type": "String" }
        },
        "resources": [
              {
                "type": "Microsoft.App/sessionPools",
                "apiVersion": "2025-10-02-preview",
                "name": "[parameters('name')]",
                "location": "[parameters('location')]",
                "properties": {
                    "poolManagementType": "Dynamic",
                    "containerType": "PythonLTS", # Set the "containerType" property to "PythonLTS"
                    "scaleConfiguration": {
                        "maxConcurrentSessions": 5
                    },
                    "sessionNetworkConfiguration": {
                        "status": "EgressEnabled"
                    },
                    "dynamicPoolConfiguration": {
                        "lifecycleConfiguration": {
                            "lifecycleType": "Timed",
                            "coolDownPeriodInSeconds": 300
                        }
                    },
                    "mcpServerSettings": { 
                        "isMCPServerEnabled": true # Add the "mcpServerSettings" section to enable the MCP server
                    }
                }
            }
        ]
    }
    
  2. Telepítse az ARM-sablont.

    az deployment group create \
      --resource-group $RESOURCE_GROUP \
      --template-file deploy.json \
      --parameters name=$SESSION_POOL_NAME location=$LOCATION
    

Az MCP-kiszolgáló végpontjának lekérése

Az üzembe helyezés után kérje le a munkamenet-készlet MCP-végpontjának URL-címét.

MCP_ENDPOINT=$(az rest --method GET --uri "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME" --uri-parameters api-version=2025-10-02-preview --query "properties.mcpServerSettings.mcpServerEndpoint" -o tsv)

MCP-kiszolgáló hitelesítő adatainak lekérése

A platform által felügyelt MCP-kiszolgáló az API-kulcs hitelesítését használja a x-ms-apikey fejlécen keresztül. Ez a hitelesítési módszer eltér a szokásos munkamenetkészlet-kezelési API-k által használt tulajdonosi jogkivonatos hitelesítéstől.

API_KEY=$(az rest --method POST --uri "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME/fetchMCPServerCredentials" --uri-parameters api-version=2025-10-02-preview --query "apiKey" -o tsv)

Figyelmeztetés

Kezelje az API-kulcsot titkos kódként. Ne commitolja a verziókezelésbe, és ne ossza meg nyilvánosan. A kulcs hitelesíti az ÖSSZES MCP-eszközhívást a munkamenetkészleten.

Az MCP-kiszolgáló inicializálása

Küldje el a initialize JSON-RPC kérést az MCP-kapcsolat létrehozásához:

curl -sS -X POST "$MCP_ENDPOINT" \
    -H "Content-Type: application/json" \
    -H "x-ms-apikey: $API_KEY" \
    -d '{ "jsonrpc": "2.0", "id": "1", "method": "initialize" }'

Olyan választ kell látnia, amely a következőket tartalmazza:

  • protocolVersion: 2025-03-26
  • serverInfo.name: Microsoft Container Apps MCP Server
  • capabilities.tools: { "call": true, "list": true }

Python-környezet indítása

Új Python-környezet létrehozása:

ENVIRONMENT_RESPONSE=$(curl -sS -X POST "$MCP_ENDPOINT" \
    -H "Content-Type: application/json" \
    -H "x-ms-apikey: $API_KEY" \
    -d '{ "jsonrpc": "2.0", "id": "2", "method": "tools/call", "params": { "name": "launchShell", "arguments": {} } }')

echo $ENVIRONMENT_RESPONSE

Bontsa ki a environmentId mezőből a structuredContent elemet a válaszban. Az összes további parancshoz szüksége lesz erre az azonosítóra.

ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID

Megjegyzés:

Az launchShell eszköz létrehoz egy egyedi környezeti azonosítót. A tényleges munkamenet "lazily" lesz lefoglalva. Az első parancs végrehajtásakor a munkamenetkészlet egy Hyper-V-izolált tárolót rendel hozzá a kezeléshez.

Python-parancsok végrehajtása

A Python-kód távoli környezetben való futtatásához használja az $ENVIRONMENT_ID előző lépésben megadottt.

curl -sS -X POST "$MCP_ENDPOINT" \
    -H "Content-Type: application/json" \
    -H "x-ms-apikey: $API_KEY" \
    -d '{
        "jsonrpc": "2.0",
        "id": "3",
        "method": "tools/call",
        "params": {
            "name": "runPythonCodeInRemoteEnvironment",
            "arguments": {
                "environmentId": "'"$ENVIRONMENT_ID"'",
                "pythonCode": "import sys; print(f\"Python {sys.version}\")"
            }
        }
    }'

A válasz tartalmazza a parancsok eredményeit a stdout mezőben belül structuredContent.

Próbáljon ki egy összetettebb példát:

curl -sS -X POST "$MCP_ENDPOINT" \
    -H "Content-Type: application/json" \
    -H "x-ms-apikey: $API_KEY" \
    -d '{
        "jsonrpc": "2.0",
        "id": "4",
        "method": "tools/call",
        "params": {
            "name": "runPythonCodeInRemoteEnvironment",
            "arguments": {
                "environmentId": "'"$ENVIRONMENT_ID"'",
                "pythonCode": "import math\nresults = {n: math.factorial(n) for n in range(1, 11)}\nfor k, v in results.items():\n    print(f\"{k}! = {v}\")"
            }
        }
    }'

Csatlakozás a GitHub Copilothoz a VS Code-ban

A munkamenetkészlet MCP-kiszolgálóját csatlakoztathatja a GitHub Copilothoz, hogy természetes nyelvű felületet használjon a kódvégrehajtási környezethez.

  1. Hozz létre .vscode/mcp.json a projektedben.

    {
        "servers": {
            "aca-python-sessions": {
                "type": "http",
                "url": "<MCP_ENDPOINT>",
                "headers": {
                    "x-ms-apikey": "<API_KEY>"
                }
            }
        }
    }
    

    Cserélje le a <MCP_ENDPOINT> és <API_KEY> értékeket a korábbi lépésekből származó értékekkel.

    Figyelmeztetés

    Ne véglegesítse az MCP API-kulcsokat a forrásvezérléshez. Használjon környezeti változókat vagy titkos kulcskezelőt az éles környezetben. Adja hozzá .vscode/mcp.json a .gitignore-hoz/-hez.

  2. Nyissa meg a VS Code-ot, majd nyissa meg a Copilot-csevegéstügynök módban.

  3. Az Ellenőrzés aca-python-sessions megjelenik az Eszközök listában.

  4. Tesztelés a következő kérésekkel:

    • "Python-környezet indítása és az első 20 Fibonacci-szám kiszámítása"
    • "Olyan Python-szkript futtatása, amely lekéri https://api.github.com és kinyomtatja a válaszfejléceket"

Erőforrások tisztítása

Az oktatóanyag befejezésekor távolítsa el a létrehozott erőforrásokat, hogy elkerülje a díjak felmerülését.

az group delete --resource-group $RESOURCE_GROUP