Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Dinamik oturumlar için platform tarafından yönetilen MCP sunucusu önizleme aşamasındadır. API sürümü 2025-02-02-preview ve mcpServerSettings özellikleri değiştirilebilir.
Bu öğreticide, platform tarafından yönetilen MCP sunucusu etkin bir oturum havuzu oluşturma, buna bağlanma ve Python kodunu uzaktan yürütme gösterilmektedir.
Tek başına MCP sunucu öğreticilerinden farklı olarak, MCP sunucu kodu yazmaz veya dağıtmazsınız. Platform, Python oturum havuzları için yerleşik araçlar sağlar:
| Tool | Description |
|---|---|
launchShell |
Yeni bir ortam oluşturur ve bir environmentId döndürür. |
runPythonCodeInRemoteEnvironment |
Python kodunu mevcut bir ortamda yürütür |
runShellCommandInRemoteEnvironment |
Mevcut bir ortamda bir kabuk komutu yürütür. |
Bu eğitimde, siz:
- MCP sunucusu etkin bir Python oturum havuzu oluşturma
- MCP uç noktasını ve API anahtarını alma
- MCP bağlantısını başlatma ve JSON-RPC aracılığıyla Python kodu yürütme
- MCP sunucusunu VS Code'da GitHub Copilot'a bağlama
Önkoşullar
| Gereksinim | Description |
|---|---|
| Azure hesabı | Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir tane oluşturun. |
| Azure Komut Satırı Arayüzü (Azure CLI) | Azure CLI'yi yükleyin. |
| Kıvrım | curl (çoğu Linux ve macOS sisteminde önceden yüklenmiştir). |
| jq | Jq API yanıtlarını ayrıştırmak için kullanılan JSON işlemcisi. |
| VS Code | GitHub Copilot uzantısına sahip Visual Studio Code (Copilot tümleştirme bölümü için). |
Kurulum
Azure CLI'yi güncelleştirin ve Container Apps uzantısını yükleyin:
az upgrade az provider register --namespace Microsoft.App az extension add --name containerapp --allow-preview true --upgradeOturum açın ve aboneliğinizi ayarlayın:
az login SUBSCRIPTION_ID=$(az account show --query id --output tsv) az account set -s $SUBSCRIPTION_IDBu öğretici için değişkenleri ayarlayın. Yer tutucuları değerlerinizle değiştirin:
RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>Kaynak grubu oluşturma:
az group create --name $RESOURCE_GROUP --location $LOCATION
MCP sunucusuyla Python oturum havuzu oluşturma
MCP'nin etkin olduğu bir ARM şablonu kullanarak oturum havuzu dağıtın.
adlı
deploy.jsonbir dosya oluşturun:{ "$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 } } } ] }Uyarı
Bu şablondaki önemli özellikler:
-
containerType: "PythonLTS": Python çalışma zamanı ile oturumlar oluşturur. -
mcpServerSettings.isMCPServerEnabled: true: Platform tarafından yönetilen MCP uç noktasını etkinleştirir. -
coolDownPeriodInSeconds: 300: Oturumlar 5 dakika etkinlik dışı kalma süresinden sonra yok edilir.
-
Şablonu dağıtın:
MCP sunucusunun etkin olduğu bir Python oturum havuzu oluşturmak için ARM şablonu kullanın.
adlı
deploy.jsonbir dağıtım şablonu dosyası oluşturun:{ "$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 } } } ] }ARM şablonunu dağıtma.
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
MCP sunucu uç noktasını alma
Dağıtımdan sonra oturum havuzunuzun MCP uç nokta URL'sini alın.
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 sunucusu kimlik bilgilerini alma
Platform tarafından yönetilen MCP sunucusu, API anahtarı doğrulama başlık içinde x-ms-apikey yoluyla yapar. Bu kimlik doğrulama yöntemi, standart oturum havuzu yönetim API'lerinin kullandığı taşıyıcı belirteç kimlik doğrulamasından farklıdır.
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)
Uyarı
API anahtarını gizli tutun. Bunu kaynak denetimine işlemeyin veya herkese açık olarak paylaşmayın. Anahtar, oturum havuzunuzda tüm MCP aracı çağrılarının kimliğini doğrular.
MCP sunucusunu başlatma
initialize MCP bağlantısını kurmak için JSON-RPC isteğini gönderin:
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" }'
Şunları içeren bir yanıt görmeniz gerekir:
-
protocolVersion:2025-03-26 -
serverInfo.name:Microsoft Container Apps MCP Server -
capabilities.tools:{ "call": true, "list": true }
Python ortamı başlatma
Yeni bir Python ortamı oluşturun:
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
environmentId öğesini, yanıttaki structuredContent alanından ayıklayın. Sonraki tüm komutlar için bu kimlik gereklidir.
ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID
Uyarı
Araç launchShell benzersiz bir ortam tanımlayıcısı oluşturur. Gerçek oturum "tembel" bir şekilde tahsis edilir. İlk komutunuzu yürüttüğünüzde, oturum havuzu bunu işlemek için Hyper-V yalıtılmış bir kapsayıcı atar.
Python komutlarını yürütme
Python kodunu uzak ortamda çalıştırmak için önceki adımdaki öğesini $ENVIRONMENT_ID kullanın.
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}\")"
}
}
}'
Yanıt, stdout içindeki structuredContent alanında komut sonuçlarını içerir.
Daha karmaşık bir örnek deneyin:
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}\")"
}
}
}'
VS Code'da GitHub Copilot'a bağlanma
Kod yürütme ortamına doğal dil arabirimi için oturum havuzu MCP sunucusunu GitHub Copilot'a bağlayabilirsiniz.
Projenizde oluşturun
.vscode/mcp.json:{ "servers": { "aca-python-sessions": { "type": "http", "url": "<MCP_ENDPOINT>", "headers": { "x-ms-apikey": "<API_KEY>" } } } }Değiştir
<MCP_ENDPOINT>ve<API_KEY>değerleriyle önceki adımlarda belirlediğiniz değerleri.Uyarı
MCP API anahtarlarını kaynak denetimine işlemeyin. Üretim ortamında ortam değişkenlerini veya gizli dizi yöneticisini kullanın.
.vscode/mcp.jsonöğesini.gitignoreekleyin.VS Code'ı açın, ardından Aracı modunda Copilot Sohbet'i açın.
Doğrula
aca-python-sessions, Araçlar listesinde görünür.Aşağıdaki gibi istemlerle test edin:
- "Python ortamını başlatın ve ilk 20 Fibonacci sayısını hesaplayın"
- "Yanıt üst bilgilerini getiren https://api.github.com ve yazdıran bir Python betiği çalıştırın"
Kaynakları temizle
Bu öğreticiyi tamamladığınızda ücret yansıtılmaması için oluşturduğunuz kaynakları kaldırın.
az group delete --resource-group $RESOURCE_GROUP