Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Сервер MCP под управлением платформы для динамических сеансов находится в предварительной версии. Версия API 2025-02-02-preview и свойства mcpServerSettings могут быть изменены.
В этом руководстве показано, как создать пул сеансов с включенным сервером MCP на платформе, подключиться к нему и удаленно выполнить код Python.
В отличие от автономных руководств по серверу MCP, вы не записываете или развертываете код сервера MCP. Платформа предоставляет встроенные средства для пулов сеансов Python:
| Инструмент | Description |
|---|---|
launchShell |
Создает новую среду и возвращает environmentId |
runPythonCodeInRemoteEnvironment |
Выполняет код Python в существующей среде |
runShellCommandInRemoteEnvironment |
Выполняет команду оболочки в существующей среде |
Изучив это руководство, вы:
- Создание пула сеансов Python с включенным сервером MCP
- Получение конечной точки и ключа API MCP
- Инициализация подключения MCP и выполнение кода Python с помощью JSON-RPC
- Подключение сервера MCP к GitHub Copilot в VS Code
Предпосылки
| Требование | Description |
|---|---|
| Учетная запись Azure | Учетная запись Azure с активной подпиской. Создайте его бесплатно. |
| Azure CLI (Интерфейс командной строки для Azure) | Установите Azure CLI. |
| завиток | curl (предустановлено в большинстве систем Linux и macOS). |
| jq | Jq Обработчик JSON, используемый для анализа ответов API. |
| VS Code | Visual Studio Code с расширением GitHub Copilot (для раздела интеграции Copilot). |
Настройка
Обновите Azure CLI и установите расширение "Приложения контейнеров":
az upgrade az provider register --namespace Microsoft.App az extension add --name containerapp --allow-preview true --upgradeВойдите и задайте подписку:
az login SUBSCRIPTION_ID=$(az account show --query id --output tsv) az account set -s $SUBSCRIPTION_IDЗадайте переменные для этого руководства. Замените заполнители вашими данными.
RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>Создайте группу ресурсов:
az group create --name $RESOURCE_GROUP --location $LOCATION
Создание пула сеансов Python с сервером MCP
Развертывание пула сеансов с помощью шаблона ARM с включенной функцией MCP.
Создайте файл с именем
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 } } } ] }Замечание
Ключевые свойства в этом шаблоне:
-
containerType: "PythonLTS": создает сеансы со средой выполнения Python. -
mcpServerSettings.isMCPServerEnabled: true: включает конечную точку MCP, управляемую платформой. -
coolDownPeriodInSeconds: 300: сеансы уничтожаются через 5 минут бездействия.
-
Разверните шаблон:
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
Получение конечной точки сервера MCP
После развертывания получите URL-адрес конечной точки MCP для пула сеансов.
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-02-02-preview \
--query "properties.mcpServerSettings.mcpServerEndpoint" -o tsv)
Получение учетных данных сервера MCP
Сервер MCP, управляемый платформой, использует проверку подлинности ключа API через x-ms-apikey заголовок. Этот метод проверки подлинности отличается от аутентификации с использованием токена носителя, которые используют стандартные API управления пулом сеансов.
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-02-02-preview \
--query "apiKey" -o tsv)
Предупреждение
Рассматривайте ключ API как секрет. Не добавляйте его в систему управления версиями или делайте общедоступным. Ключ аутентифицирует все вызовы инструментов MCP в контексте вашего пула сеансов.
Инициализация сервера MCP
initialize Отправьте запрос JSON-RPC, чтобы установить подключение 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" }'
Вы увидите ответ, который включает в себя следующее:
-
protocolVersion:2025-03-26 -
serverInfo.name:Microsoft Container Apps MCP Server -
capabilities.tools:{ "call": true, "list": true }
Запуск среды Python
Создайте новую среду Python:
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 из поля structuredContent в ответе. Этот идентификатор необходим для всех последующих команд.
ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID
Замечание
Средство launchShell создает уникальный идентификатор среды. Фактический сеанс выделяется "лениво". При выполнении первой команды пул сеансов назначает изолированный контейнер Hyper-V для его обработки.
Выполнение команд Python
Чтобы запустить код Python в удаленной среде, используйте $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": "runPythonCodeInRemoteEnvironment",
"arguments": {
"environmentId": "'"$ENVIRONMENT_ID"'",
"pythonCode": "import sys; print(f\"Python {sys.version}\")"
}
}
}'
Ответ содержит результаты команды в поле stdout, находящемся в границах structuredContent.
Попробуйте более сложный пример:
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}\")"
}
}
}'
Подключение к GitHub Copilot в VS Code
Сервер управления пулом сеансов MCP можно подключить к GitHub Copilot для интерфейса на естественном языке к окружению выполнения кода.
Создайте
.vscode/mcp.jsonв проекте:{ "servers": { "aca-python-sessions": { "type": "http", "url": "<MCP_ENDPOINT>", "headers": { "x-ms-apikey": "<API_KEY>" } } } }Замените
<MCP_ENDPOINT>и<API_KEY>на значения из предыдущих шагов.Предупреждение
Не добавляйте ключи API MCP в систему управления исходным кодом. Используйте переменные среды или диспетчер секретов в рабочей среде. Добавьте
.vscode/mcp.jsonв свой.gitignore.Откройте VS Code, а затем откройте чат Copilot в режиме агента .
Убедитесь, что
aca-python-sessionsотображается в списке инструментов.Тестирование с помощью запросов, таких как:
- Запуск среды Python и вычисление первых 20 чисел Fibonacci
- Запуск скрипта Python, который извлекает https://api.github.com и выводит заголовки ответа.
Очистите ресурсы
После завершения работы с этим руководством удалите созданные ресурсы, чтобы избежать возникновения расходов.
az group delete --resource-group $RESOURCE_GROUP