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 öğretici, hem CLI'dan hem de VS Code'da GitHub Copilot Chat'ten platform tarafından yönetilen MCP sunucusunun etkin olduğu bir shell oturumu havuzu oluşturmayı, buna bağlanmayı ve kabuk komutlarını uzaktan yürütmeyi göstermektedir.
Tek başına MCP sunucu öğreticilerinden farklı olarak, MCP sunucu kodu yazmaz veya dağıtmazsınız. Platform, kabuk oturum havuzları için yerleşik araçlar sağlar.
| Tool | Description |
|---|---|
launchShell |
Yeni bir kabuk ortamı oluşturur ve bir environmentId döndürür. |
runShellCommandInRemoteEnvironment |
Mevcut bir ortamda bir kabuk komutu yürütür. |
Bu eğitimde, siz:
- MCP sunucusu etkinleştirilmiş bir kabuk oturumu havuzu oluşturun.
- MCP uç noktasını ve API anahtarını alma
- MCP bağlantısını başlatın ve JSON-RPC aracılığıyla kabuk komutlarını çalıştırın
- 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>Yer tutucu Description <RESOURCE_GROUP_NAME>Azure kaynak grubunun adı. <SESSION_POOL_NAME>Oturum havuzunuzun adı (örneğin, my-shell-sessions).<LOCATION>Dinamik oturumları destekleyen bir Azure bölgesi (örneğin, westus2).Kaynak grubu oluşturma:
az group create --name $RESOURCE_GROUP --location $LOCATION
MCP sunucusuyla kabuk oturumu havuzu oluşturma
MCP sunucusu etkin 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": "Shell", "scaleConfiguration": { "maxConcurrentSessions": 5 }, "sessionNetworkConfiguration": { "status": "EgressEnabled" }, "dynamicPoolConfiguration": { "lifecycleConfiguration": { "lifecycleType": "Timed", "coolDownPeriodInSeconds": 300 } }, "mcpServerSettings": { "isMCPServerEnabled": true } } } ] }Uyarı
Bu şablondaki önemli özellikler:
-
containerType: "Shell"— Linux kabuk ortamıyla 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:
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 "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME?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 yaklaşım, 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 "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME/fetchMCPServerCredentials?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 }
Kabuk ortamını başlatma
Komutları çalıştırmak için yeni bir kabuk 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
Yanıttan environmentId öğesini sonraki komutlarda kullanmak üzere ayıklayın.
ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID
Shell komutlarını çalıştır
Uzak kabuk ortamında komutları çalıştırmak için önceki adımdan $ENVIRONMENT_ID'yi 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": "runShellCommandInRemoteEnvironment",
"arguments": {
"environmentId": "'"$ENVIRONMENT_ID"'",
"shellCommand": "echo Hello from Azure Container Apps Shell Session!"
}
}
}'
Yanıt, stdout alanında komut sonuçlarını içerir.
Ek komutları deneyin:
# Check the operating system
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": "runShellCommandInRemoteEnvironment",
"arguments": {
"environmentId": "'"$ENVIRONMENT_ID"'",
"shellCommand": "cat /etc/os-release && uname -a"
}
}
}'
Uyarı
Araç, bağımsız değişkenlere sahip komutlar için shellCommand dize veya execCommandAndArgs dizi kabul eder. Basit komutlar için shellCommand kullanın ve bağımsız değişken kaçışı üzerinde hassas denetime ihtiyacınız olduğunda execCommandAndArgs kullanın.
VS Code'da GitHub Copilot'a bağlanma
GitHub Copilot ile doğal dil arabirimi sağlayarak oturum havuzu MCP sunucusunu kabuk yürütme ortamına bağlayabilirsiniz.
Projenizde oluşturun
.vscode/mcp.json:{ "servers": { "aca-shell-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-shell-sessions, Araçlar listesinde görünür.Aşağıdaki gibi istemlerle test edin:
- "Bir terminal başlat ve disk kullanımını göster"
- "Tüm ortam değişkenlerini listelemek için bir kabuk komutu çalıştırın"
- "Kabuk ortamında hangi paketlerin yüklü olduğunu denetleyin"
Kaynakları temizle
Bu öğreticiyi tamamladığınızda, masraflardan kaçınmak için oluşturduğunuz kaynakları kaldırın.
az group delete --resource-group $RESOURCE_GROUP