Поделиться через


Руководство: Использование сервера MCP с сеансами оболочки в Azure Container Apps (предварительная версия)

В этом руководстве показано, как развернуть и взаимодействовать со средой оболочки в динамических сеансах контейнерных приложений Azure с помощью сервера MCP.

В этом руководстве вы:

  • Создание пула сеансов оболочки с включенным сервером MCP
  • Настройка конечной точки и учетных данных сервера MCP
  • Удаленное выполнение команд оболочки с помощью JSON-RPC

Предпосылки

Перед началом работы с этим руководством вам потребуются следующие ресурсы.

Требование Description
Учетная запись Azure Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, вы можете создать ее бесплатно.
Azure CLI (Интерфейс командной строки для Azure) Установите Azure CLI.

Настройка

Начните с подготовки Azure CLI с последними обновлениями и войдите в Azure.

  1. Обновите Azure CLI до последней версии.

    az upgrade
    
  2. Зарегистрируйте поставщик ресурсов Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Установите последнюю версию расширения CLI для приложений контейнеров Azure.

    az extension add --name containerapp --allow-preview true --upgrade
    
  4. Войдите в Azure.

    az login
    
  5. Запросите идентификатор подписки Azure и задайте значение переменной.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Задайте переменные, используемые в этой процедуре.

    Перед выполнением следующей команды обязательно замените заполнители, окруженные собственными значениями <> .

    RESOURCE_GROUP=<RESOURCE_GROUP_NAME>
    SESSION_POOL_NAME=<SESSION_POOL_NAME>
    LOCATION=<LOCATION>
    

    Эти переменные используются для создания ресурсов в следующих шагах.

  7. Задайте подписку, которую вы хотите использовать для создания группы ресурсов.

    az account set -s $SUBSCRIPTION_ID
    
  8. Создайте группу ресурсов.

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

Создайте пул сеансов командной оболочки с сервером MCP

Используйте шаблон ARM для создания пула сеансов оболочки с включенным сервером MCP.

  1. Создайте файл шаблона развертывания с именем 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
                    }
                }
            }
        ]
    }
    
  2. Разверните шаблон 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

Дальнейшие шаги