Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Ce tutoriel montre comment déployer et interagir avec un environnement shell dans des sessions dynamiques Azure Container Apps à l’aide du serveur MCP (Model Context Protocol).
Dans ce tutoriel, vous allez :
- Créer un pool de sessions shell avec le serveur MCP activé
- Configurer le point de terminaison et les informations d’identification du serveur MCP
- Exécuter des commandes shell à distance à l’aide de JSON-RPC
Prerequisites
Avant de commencer ce tutoriel, vous avez besoin des ressources suivantes.
| Requirement | Descriptif |
|---|---|
| Compte Azure | Vous devez avoir un compte Azure avec un abonnement actif. Si vous n’en avez pas, vous pouvez en créer un gratuitement. |
| Azure CLI | Installez Azure CLI. |
Configuration
Commencez par préparer Azure CLI avec les dernières mises à jour et la connexion à Azure.
Mettez à jour Azure CLI vers la dernière version.
az upgradeInscrivez le fournisseur de ressources
Microsoft.App.az provider register --namespace Microsoft.AppInstallez la dernière version de l’extension CLI Azure Container Apps.
az extension add --name containerapp --allow-preview true --upgradeConnectez-vous à Azure.
az loginRecherchez votre ID d’abonnement Azure et placez sa valeur dans une variable.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)Définissez les variables utilisées dans cette procédure.
Avant d’exécuter la commande suivante, veillez à remplacer les espaces réservés entre des
<>par vos propres valeurs.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>Vous utilisez ces variables pour créer les ressources dans les étapes suivantes.
Définissez l’abonnement que vous souhaitez utiliser pour créer le groupe de ressources.
az account set -s $SUBSCRIPTION_IDCréez un groupe de ressources.
az group create --name $RESOURCE_GROUP --location $LOCATION
Créer un pool de sessions shell avec le serveur MCP
Utilisez un modèle ARM pour créer un pool de sessions shell avec le serveur MCP activé.
Créez un fichier de modèle de déploiement nommé
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 } } } ] }Déployer le modèle ARM.
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
Obtenir le point de terminaison du serveur MCP
Récupérez le point de terminaison du serveur MCP à partir du pool de sessions déployé.
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)
Obtenir les informations d’identification du serveur MCP
Demandez des informations d’identification d’API pour le serveur 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)
Initialiser le serveur MCP
Initialisez la connexion du serveur MCP à l’aide de 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" }'
Vous devriez voir une réponse qui inclut protocolVersion et serverInfo.
Lancer un environnement shell
Créez un nouvel environnement de shell dans le pool de sessions.
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
Extrayez l’ID d’environnement de la réponse à utiliser dans les commandes suivantes.
Exécuter des commandes shell
Exécutez des commandes dans votre environnement shell distant. Remplacez <ENVIRONMENT_ID> par l’ID retourné à l’étape précédente.
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!"
}
}
}'
Vous devriez voir une sortie qui inclut les résultats de la commande dans le champ stdout.
Nettoyer les ressources
Les ressources créées dans ce tutoriel ont un effet sur votre facture Azure. Si vous n’allez pas utiliser ces services à long terme, exécutez la commande suivante pour supprimer tout ce qui a été créé dans ce didacticiel.
az group delete --resource-group $RESOURCE_GROUP