Partager via


Déployer un serveur Azure MCP distant auto-hébergé et se connecter à celui-ci à l’aide de Copilot Studio

Déployez le serveur Azure MCP sur HTTPS en tant que serveur distant auto-hébergé. Cette configuration permet aux agents IA dans Microsoft Foundry et Microsoft Copilot Studio de se connecter en toute sécurité aux outils MCP et d’appeler des outils MCP à l’aide du serveur Azure MCP déployé pour exécuter des opérations Azure. Cet article se concentre sur le scénario de connexion Copilot Studio.

Prerequisites

  • Licence Power Platform qui inclut :
    • Copilot Studio
    • Power Apps
  • Abonnement Azure avec des autorisations d’administrateur d’accès utilisateur ou propriétaire
  • Azure Developer CLI (azd)
  • Liste des zones d’outils Azure MCP Server (espaces de noms) que vous souhaitez activer (voir azmcp-commands.md). Le modèle de référence de cet article utilise l’espace de noms storage.

Modèle de serveur MCP Azure

Cet article utilise le serveur Azure MCP - ACA avec le modèle d’agent azd Copilot Studio pour déployer le serveur sur Azure Container Apps. Le modèle active les outils de stockage et une identité managée pour un accès sécurisé au stockage Azure. Azure Developer CLI (azd) est un outil open source qui simplifie l’approvisionnement et le déploiement de ressources Azure et propose des commandes concises (azd deploy, azd provision) qui correspondent aux étapes clés de votre flux de travail de développement.

Déployer le serveur Azure MCP

Déployez le serveur Azure MCP sur Azure Container Apps :

  1. Clonez et initialisez le modèle à l’aide de azmcp-copilot-studio-aca-miazd.

    azd init -t azmcp-copilot-studio-aca-mi
    

    Lorsque vous y êtes invité, saisissez un nom d’environnement.

  2. Exécutez le modèle avec la azd up commande.

    azd up
    

    azd vous demande les éléments suivants :

    • Abonnement : sélectionnez l’abonnement pour les ressources approvisionnées (répertoriées ci-dessous).
    • Groupe de ressources : groupe de ressources dans lequel créer les ressources. Vous pouvez créer un groupe de ressources à la demande pendant cette étape.

azd utilise les fichiers de modèle pour provisionner les ressources et configurations suivantes :

  • Azure Container App : exécute le serveur Azure MCP et fournit l’espace de noms de stockage.
  • Identité managée affectée par l’utilisateur : identité managée avec le rôle Lecteur d’abonnement affecté à l’application conteneur et utilisée par le serveur Azure MCP pour effectuer des appels d’outil.
  • Entra App Registration (Client) : Pour que le connecteur personnalisé Power Apps se connecte au serveur Azure MCP distant.
  • Application Insights : fournit des données de télémétrie et de surveillance.

Sortie et configuration du déploiement

  1. Une fois le déploiement terminé, récupérez les azd variables d’environnement avec la azd env get-values commande.

    azd env get-values
    

    Exemple de sortie :

    AZURE_RESOURCE_GROUP="<your-resource-group-name>"
    AZURE_SUBSCRIPTION_ID="<your-subscription-id>"
    AZURE_TENANT_ID="<your-tenant-id>"
    CONTAINER_APP_NAME="<your-container-app-name>"
    CONTAINER_APP_URL="https://azure-mcp-storage-server.<your-container-app-name>.westus3.azurecontainerapps.io"
    ENTRA_APP_CLIENT_CLIENT_ID="<your-client-app-registration-client-id>"
    ENTRA_APP_SERVER_CLIENT_ID="<your-server-app-registration-client-id>"
    
  2. Vous devez également ajouter l’étendue de l’API créée en tant qu’une des autorisations de l’inscription de l’application cliente. Accédez au portail Azure et recherchez l’enregistrement de l'application client à l’aide de la ENTRA_APP_CLIENT_CLIENT_ID valeur de sortie.

  3. Accédez au panneau Autorisations de l’API et sélectionnez Ajouter une autorisation.

  4. Sous l’onglet Mes API, sélectionnez l'enregistrement de l'application serveur et ajoutez l’étendue Mcp.Tools.ReadWrite.

Appeler des outils à partir de l’agent Copilot Studio

L’agent Copilot Studio se connecte aux serveurs MCP à l’aide d’un connecteur personnalisé.

Configurer un connecteur personnalisé

  1. Connectez-vous à Power Apps et sélectionnez l’environnement pour héberger le connecteur personnalisé.
  2. Créez un connecteur personnalisé à l’aide de l’option Créer à partir d’une option vide . Pour en savoir plus sur la configuration du connecteur personnalisé, consultez créer un connecteur personnalisé à partir de zéro.
  3. Suivez les sections suivantes pour chaque étape du flux de travail de création du connecteur.

General

À l’étape Général :

  • Fournissez un nom descriptif et une description pour le connecteur personnalisé.
  • Définir Schéma sur HTTPS.
  • Définissez Host sur la CONTAINER_APP_URL valeur de la azd sortie.

Capture d’écran de l’onglet Général du connecteur personnalisé montrant le nom, la description, le schéma défini sur HTTPS et le champ hôte rempli avec une URL d’application conteneur.

Security

Ignorez l’étape Sécurité pour l’instant et passez à l’étape Définition .

Definition

  1. Activez l’éditeur Swagger pour entrer dans le mode éditeur.

  2. Dans la vue de l’éditeur :

    • Exposez une méthode POST au chemin racine avec une propriété personnalisée x-ms-agentic-protocol: mcp-streamable-1.0. Cette propriété est requise pour que le connecteur personnalisé interagisse avec l’API à l’aide du protocole MCP.

      Note

      Consultez l’exemple swagger du connecteur personnalisé pour un modèle de référence.

Capture d’écran de l’éditeur Swagger avec la méthode racine POST sélectionnée et la propriété x-ms-agentic-protocol personnalisée définie sur mcp-streamable-1.0 pour l’interaction MCP.

Connecteur personnalisé : Sécurité

Revenez à l’étape sécurité pour configurer l’authentification :

Paramètre Valeur Remarques
Type d’authentification OAuth 2.0 Obligatoire
Fournisseur d’identité Azure Active Directory Obligatoire
ID du client ENTRA_APP_CLIENT_CLIENT_ID à partir du résultat d'azd ID d’inscription d’application cliente
Option secrète Utiliser la clé secrète client OU Utiliser l’identité gérée Voir ci-dessous pour la configuration
URL d’autorisation https://login.microsoftonline.com Valeur par défaut
ID de locataire AZURE_TENANT_ID à partir d’azd output ID de votre locataire Azure
URL de ressource ENTRA_APP_SERVER_CLIENT_ID à partir d’azd output ID client d’inscription d’application serveur (pas une URL)
Connexion pour le compte de Enabled Obligatoire
Étendue <ENTRA_APP_SERVER_CLIENT_ID>/.default Format : {server_client_id}/.default

Configuration de l’option secret :

  • Si vous utilisez la clé secrète client : créez une clé secrète client dans l’inscription de l’application cliente (portail Azure). Copiez la valeur secrète et collez-la dans le champ secret client.
  • Si vous utilisez une identité managée : passez aux étapes restantes jusqu’à ce que le connecteur personnalisé soit créé.

Exigence du même locataire : les inscriptions d’applications client et serveur doivent se trouver dans le même locataire pour une authentification simplifiée. Pour les scénarios multi-locataires, consultez les problèmes connus.

Sélectionnez Créer un connecteur et attendez la fin. Après la création, l’interface utilisateur affiche une URL de redirection et, si elle est sélectionnée, une identité managée.

Capture d’écran de l’étape de sécurité montrant OAuth 2.0 avec Azure Active Directory, l’ID client, l’option de secret, l’ID de locataire, l’URL de ressource, l’étendue, et l’authentification pour le compte d'autrui activée.

Inscription d’application : Configurer l’URI de redirection et les informations d’identification

  1. Dans le portail Azure, ajoutez un URI de redirection sous la plateforme web dans l’inscription de l’application cliente.

    Capture d’écran de l’inscription d’application du portail Azure montrant l’entrée d’URI de redirection de plateforme web ajoutée pour le flux d’authentification du connecteur personnalisé.

  2. Si vous avez choisi Utiliser l’identité managée à l’étape Sécurité , créez des informations d’identification fédérées dans l’inscription de l’application cliente.

    • Sélectionnez Autre émetteur comme scénario.
    • Copiez les valeurs issuer et subject du connecteur personnalisé dans les champs de données d'identification.
    • Fournissez un nom descriptif et une description, puis sélectionnez Ajouter.

    Capture d’écran du formulaire de création d'informations d'identification fédérées montrant les valeurs de l'émetteur et du sujet collées à partir du connecteur personnalisé ainsi que les champs de nom et de description.

Tester la connexion

  1. Ouvrez le connecteur personnalisé, sélectionnez Modifier, puis accédez à l’étape de test .

  2. Sélectionnez n’importe quelle opération et choisissez Nouvelle connexion.

  3. Connectez-vous avec le compte d’utilisateur que vous envisagez d’utiliser pour accéder aux outils MCP. Vous pouvez voir une boîte de dialogue demandant le consentement ou une invite d’approbation d’administrateur. Si vous n’êtes pas sûr, consultez les problèmes connus.

    Si la connexion réussit, l’interface utilisateur indique que la connexion est créée avec succès. Si vous rencontrez une erreur lors de la connexion, consultez les problèmes connus et résolvez les problèmes avec votre administrateur de locataire.

    Capture d’écran de l’onglet Test dans le connecteur personnalisé montrant l’état de connexion réussi une fois que l’utilisateur se connecte avec le compte prévu.

Appeler un outil Azure MCP dans le terrain de test Copilot Studio

  1. Connectez-vous à Copilot Studio et sélectionnez l’environnement pour héberger l’agent Copilot Studio. Créez un agent ou utilisez-en un existant.

  2. Ouvrez les détails de l’agent et sélectionnez l’onglet Outils .

  3. Sélectionnez Ajouter un outil.

  4. Recherchez le nom de votre connecteur personnalisé et ajoutez-le.

  5. Après avoir ajouté le connecteur personnalisé, l’agent Copilot Studio tente de répertorier les outils à partir du serveur MCP. Si elle réussit, vous voyez la liste des outils disponibles sous le connecteur.

  6. Sélectionnez Test pour démarrer une session de terrain de jeu de test.

  7. Invitez l’agent à appeler un outil MCP, par exemple pour répertorier les comptes de stockage dans l’abonnement.

    Capture d’écran de l’onglet Outils de l’agent Copilot Studio listant le connecteur personnalisé et la liste d’outils MCP récupérée sous celle-ci. Capture d’écran de la session de terrain de jeu de test Copilot Studio où l’agent retourne les résultats après l’appel d’un outil MCP répertorié.

Nettoyer les ressources

Exécutez la commande suivante pour supprimer les ressources Azure que ce modèle a créées lorsque vous n’en avez pas besoin.

azd down

Note

azd ne peut pas supprimer les inscriptions d’application Entra créées par ce modèle. Supprimez les inscriptions d’applications Entra en recherchant les ENTRA_APP_CLIENT_CLIENT_ID valeurs et les ENTRA_APP_SERVER_CLIENT_ID valeurs dans le portail Azure, puis supprimez les inscriptions d’application correspondantes.

Supprimez l’agent Copilot Studio, le connecteur personnalisé Power Apps et la connexion pour nettoyer les ressources Power Platform.

Structure de modèle

Le azd modèle inclut ces modules Bicep :

  • main.bicep - Orchestre le déploiement de toutes les ressources.
  • aca-storage-managed-identity.bicep - Crée une identité managée attribuée par l'utilisateur.
  • aca-storage-subscription-role.bicep - Attribue un rôle RBAC Azure à l'identité gérée assignée par l'utilisateur. Il est défini par défaut sur le rôle Lecteur d’abonnement.
  • aca-infrastructure.bicep - Déploie l’application conteneur hébergeant le serveur Azure MCP.
  • entra-app.bicep - Crée des enregistrements d'application Entra.
  • application-insights.bicep - Déploie Application Insights pour la télémétrie et la surveillance lorsqu’elle est activée.

Problèmes connus

  • Exigence d’un locataire unique : le connecteur personnalisé Power Apps ne prend pas en charge l’authentification des utilisateurs à partir de plusieurs locataires. Définissez donc l’inscription de l’application cliente pour accepter uniquement les utilisateurs de son locataire.
  • Options de consentement : pendant l’authentification, l’utilisateur ou un administrateur client accorde à l’application cliente l’accès à ses données. En savoir plus dans l’expérience de consentement de l’application. Vous pouvez donner votre consentement de plusieurs façons :
    • Un utilisateur peut donner son consentement lors de la connexion uniquement pour cet utilisateur. La stratégie de sécurité du locataire peut bloquer cette opération.
    • Un administrateur client peut donner son consentement à tous les utilisateurs du client dans l’inscription de l’application cliente dans le volet Autorisations de l’API du portail Azure.
    • Ajoutez l’inscription de l’application cliente en tant qu’application cliente pré-autorisée dans l’inscription de l’application serveur sous le panneau Exposer une API dans le portail Azure.
  • Scénario interlocataire : si l’inscription de l’application cliente et l’inscription d’application serveur se trouvent dans différents locataires, vous pouvez voir l’erreur suivante lorsque vous essayez de créer la connexion :
    • « L’application tente d’accéder à un service « server_app_registration_client_id » (server_app_registration_display_name) pour lequel votre organisation « client_app_registration_tenant » ne dispose pas d’un principal de service. »
    • Résolution : un administrateur client de l’inscription d’application cliente doit provisionner un principal de service pour l’inscription d’application serveur dans ce locataire :
      az ad sp create --id <server_app_registration_client_id>
      
    • Après l’approvisionnement, créez à nouveau la connexion. Déclencheurs de flux de consentement.
  • Si l’environnement Power Apps a une stratégie d’isolation de locataire, il bloque le flux de données lorsque les inscriptions d’applications client ou serveur se trouvent dans différents locataires. Découvrez comment ajouter des règles d’exception pour autoriser ce flux de données dans des restrictions entre locataires.