Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Server MCP yang dikelola platform untuk sesi dinamis sedang dalam tahap pratinjau. Versi 2025-02-02-preview API dan mcpServerSettings properti dapat berubah.
Tutorial ini menunjukkan cara membuat kumpulan sesi dengan server MCP yang dikelola platform diaktifkan, menyambungkannya, dan menjalankan kode Python dari jarak jauh.
Tidak seperti tutorial server MCP mandiri, Anda tidak menulis atau menyebarkan kode server MCP. Platform ini menyediakan alat bawaan untuk kumpulan sesi Python:
| Alat | Description |
|---|---|
launchShell |
Menciptakan lingkungan baru dan mengembalikan environmentId |
runPythonCodeInRemoteEnvironment |
Menjalankan kode Python di lingkungan yang ada |
runShellCommandInRemoteEnvironment |
Menjalankan perintah shell di lingkungan yang ada |
Di tutorial ini, Anda akan:
- Membuat kumpulan sesi Python dengan server MCP diaktifkan
- Mengambil titik akhir MCP dan kunci API
- Inisialisasi koneksi MCP dan jalankan kode Python melalui JSON-RPC
- Menyambungkan server MCP ke GitHub Copilot di Visual Studio Code
Prasyarat
| Persyaratan | Description |
|---|---|
| Akun Azure | Sebuah akun Azure dengan langganan aktif. Buat akun gratis. |
| Azure CLI (antarmuka baris perintah Azure) | Instal Azure CLI. |
| melengkung | curl (telah diinstal sebelumnya pada sebagian besar sistem Linux dan macOS). |
| jq | jq Prosesor JSON, digunakan untuk mengurai respons API. |
| Visual Studio Code | Visual Studio Code dengan ekstensi GitHub Copilot (untuk bagian integrasi Copilot). |
Pengaturan
Perbarui Azure CLI dan instal ekstensi Container Apps:
az upgrade az provider register --namespace Microsoft.App az extension add --name containerapp --allow-preview true --upgradeMasuk dan atur langganan Anda:
az login SUBSCRIPTION_ID=$(az account show --query id --output tsv) az account set -s $SUBSCRIPTION_IDAtur variabel untuk tutorial ini. Ganti placeholder dengan nilai Anda
RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>Buat grup sumber daya:
az group create --name $RESOURCE_GROUP --location $LOCATION
Membuat kumpulan sesi Python dengan server MCP
Sebarkan kumpulan sesi dengan menggunakan templat ARM dengan MCP diaktifkan.
Buat file bernama
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 } } } ] }Nota
Properti kunci dalam templat ini:
-
containerType: "PythonLTS": Membuat sesi dengan runtime Python. -
mcpServerSettings.isMCPServerEnabled: true: Mengaktifkan titik akhir MCP yang dikelola platform. -
coolDownPeriodInSeconds: 300: Sesi dihancurkan setelah 5 menit tidak aktif.
-
Sebarkan templat:
Gunakan templat ARM untuk membuat kumpulan sesi Python dengan server MCP diaktifkan.
Buat file templat penyebaran bernama
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 } } } ] }Sebarkan templat ARM.
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
Dapatkan titik akhir server MCP
Setelah penyebaran, ambil URL titik akhir MCP untuk kumpulan sesi Anda.
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)
Mendapatkan kredensial server MCP
Server MCP yang dikelola platform menggunakan autentikasi kunci API melalui x-ms-apikey header. Metode autentikasi ini berbeda dari autentikasi token pembawa yang digunakan API manajemen kumpulan sesi standar.
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)
Peringatan
Perlakukan kunci API sebagai rahasia. Jangan menerapkannya ke kontrol sumber atau membagikannya secara publik. Kunci mengautentikasi semua pemanggilan alat MCP terhadap kumpulan sesi Anda.
Menginisialisasi server MCP
initialize Kirim permintaan JSON-RPC untuk membuat koneksi MCP:
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" }'
Anda akan melihat respons yang mencakup:
-
protocolVersion:2025-03-26 -
serverInfo.name:Microsoft Container Apps MCP Server -
capabilities.tools:{ "call": true, "list": true }
Meluncurkan lingkungan Python
Buat lingkungan Python baru:
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
Ekstrak environmentId dari bidang structuredContent dalam respons. Anda memerlukan ID ini untuk semua perintah berikutnya.
ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID
Nota
Alat ini launchShell menghasilkan pengidentifikasi lingkungan yang unik. Sesi aktual dialokasikan "malas". Saat Anda menjalankan perintah pertama Anda, kumpulan sesi menetapkan kontainer yang terisolasi Hyper-V untuk menanganinya.
Menjalankan perintah Python
Untuk menjalankan kode Python di lingkungan jarak jauh, gunakan $ENVIRONMENT_ID dari langkah sebelumnya.
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}\")"
}
}
}'
Respons mencakup hasil perintah di bidang stdout yang berada dalam structuredContent.
Coba contoh yang lebih kompleks:
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}\")"
}
}
}'
Hubungkan ke GitHub Copilot di Visual Studio Code
Anda dapat menghubungkan server MCP kumpulan sesi ke GitHub Copilot untuk antarmuka bahasa alami ke lingkungan eksekusi kode.
Buat
.vscode/mcp.jsondi proyek Anda:{ "servers": { "aca-python-sessions": { "type": "http", "url": "<MCP_ENDPOINT>", "headers": { "x-ms-apikey": "<API_KEY>" } } } }Ganti
<MCP_ENDPOINT>dan<API_KEY>dengan nilai dari langkah-langkah sebelumnya.Peringatan
Jangan menerapkan kunci MCP API ke kontrol sumber. Gunakan variabel lingkungan atau manajer rahasia dalam produksi. Tambahkan
.vscode/mcp.jsonke.gitignore.Buka Visual Studio Code, lalu buka Obrolan Copilot dalam mode Agen .
Verifikasi
aca-python-sessionsmuncul di daftar Alat.Uji dengan perintah seperti:
- "Luncurkan lingkungan Python dan hitung 20 angka Fibonacci pertama"
- "Jalankan skrip Python yang mengambil https://api.github.com dan mencetak header respons"
Membersihkan sumber daya
Ketika Anda menyelesaikan tutorial ini, hapus sumber daya yang Anda buat untuk menghindari dikenakan biaya.
az group delete --resource-group $RESOURCE_GROUP