Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом руководстве показано, как развернуть и взаимодействовать со средой оболочки в динамических сеансах контейнерных приложений Azure с помощью сервера MCP.
В этом руководстве вы:
- Создание пула сеансов оболочки с включенным сервером MCP
- Настройка конечной точки и учетных данных сервера MCP
- Удаленное выполнение команд оболочки с помощью JSON-RPC
Предпосылки
Перед началом работы с этим руководством вам потребуются следующие ресурсы.
| Требование | Description |
|---|---|
| Учетная запись Azure | Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, вы можете создать ее бесплатно. |
| Azure CLI (Интерфейс командной строки для Azure) | Установите Azure CLI. |
Настройка
Начните с подготовки Azure CLI с последними обновлениями и войдите в Azure.
Обновите Azure CLI до последней версии.
az upgradeЗарегистрируйте поставщик ресурсов
Microsoft.App.az provider register --namespace Microsoft.AppУстановите последнюю версию расширения CLI для приложений контейнеров Azure.
az extension add --name containerapp --allow-preview true --upgradeВойдите в Azure.
az loginЗапросите идентификатор подписки Azure и задайте значение переменной.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)Задайте переменные, используемые в этой процедуре.
Перед выполнением следующей команды обязательно замените заполнители, окруженные собственными значениями
<>.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>Эти переменные используются для создания ресурсов в следующих шагах.
Задайте подписку, которую вы хотите использовать для создания группы ресурсов.
az account set -s $SUBSCRIPTION_IDСоздайте группу ресурсов.
az group create --name $RESOURCE_GROUP --location $LOCATION
Создайте пул сеансов командной оболочки с сервером MCP
Используйте шаблон ARM для создания пула сеансов оболочки с включенным сервером MCP.
Создайте файл шаблона развертывания с именем
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-02-02-preview", "name": "[parameters('name')]", "location": "[parameters('location')]", "properties": { "poolManagementType": "Dynamic", "containerType": "Shell", # Set the "containerType" property to "Shell" "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.
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
Получение конечной точки сервера MCP
Получите конечную точку сервера MCP из развернутого пула сеансов.
MCP_ENDPOINT=$(az rest --method GET --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME?api-version=2025-02-02-preview" --query "properties.mcpServerSettings.mcpServerEndpoint" -o tsv)
Получение учетных данных сервера MCP
Запрос учетных данных API для сервера MCP.
API_KEY=$(az rest --method POST --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME/fetchMCPServerCredentials?api-version=2025-02-02-preview" --query "apiKey" -o tsv)
Инициализация сервера MCP
Инициализировать подключение сервера MCP с помощью JSON-RPC.
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" }'
Вы увидите ответ, включающий protocolVersion и serverInfo.
Запуск среды оболочки
Создайте новую среду оболочки в пуле сеансов.
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
Извлеките идентификатор среды из ответа для использования в последующих командах.
Выполнение команд оболочки
Выполните команды в удаленной среде оболочки. Замените <ENVIRONMENT_ID> на идентификатор, возвращенный на предыдущем шаге.
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!"
}
}
}'
Вы увидите выходные данные, которые содержат результаты команды в stdout поле.
Очистите ресурсы
Ресурсы, созданные в этом руководстве, отражаются на вашем счете Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, созданное в этом руководстве.
az group delete --resource-group $RESOURCE_GROUP