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.
Le protocole MCP (Model Context Protocol) est un protocole client-serveur destiné à permettre aux modèles de langage et aux agents de découvrir et d’utiliser plus efficacement les sources et outils de données externes.
L’extension MCP Azure Functions vous permet d’utiliser Azure Functions pour créer des serveurs MCP distants. Ces serveurs peuvent héberger des fonctions de déclencheur d’outil MCP, que les clients MCP, tels que les modèles de langage et les agents, peuvent interroger et accéder pour effectuer des tâches spécifiques.
| Action | Type |
|---|---|
| Exécuter une fonction à partir d’une demande d’appel d’outil MCP | Trigger |
Important
L’extension MCP ne prend actuellement pas en charge les applications PowerShell.
Prerequisites
- Lorsque vous utilisez le transport SSE, l’extension MCP s’appuie sur le stockage file d’attente Azure fourni par le compte de stockage hôte par défaut (
AzureWebJobsStorage). Lorsque vous utilisez des connexions basées sur des identités, assurez-vous que votre application de fonction dispose au moins de l’équivalent de ces autorisations basées sur les rôles dans le compte de stockage hôte : lecteur de données de file d’attente de stockage et processeur de messages de données de file d’attente de stockage. - Lors de l’exécution localement, l’extension MCP nécessite la version 4.0.7030 d’Azure Functions Core Tools ou une version ultérieure.
- Nécessite la version 2.1.0 ou ultérieure du
Microsoft.Azure.Functions.Workerpackage. - Nécessite la version 2.0.2 ou ultérieure du
Microsoft.Azure.Functions.Worker.Sdkpackage.
Installer l’extension
Note
Pour C#, l’extension MCP Azure Functions prend uniquement en charge le modèle worker isolé.
Ajoutez l’extension à votre projet en installant ce package NuGet de votre manière préférée :
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- Nécessite la version 3.2.2 ou ultérieure de la
azure-functions-java-librarydépendance. - Nécessite la version 1.40.0 ou ultérieure de la
azure-functions-maven-plugindépendance.
- Nécessite la version 4.9.0 ou ultérieure de la
@azure/functionsdépendance
- Nécessite la version 1.24.0 ou ultérieure du
azure-functionspackage.
Installer l’offre groupée
Pour pouvoir utiliser cette extension de liaison dans votre application, assurez-vous que le fichier host.json à la racine de votre projet contient cette extensionBundle référence :
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Dans cet exemple, la version valeur de [4.0.0, 5.0.0) l’hôte Functions indique à l’hôte Functions d’utiliser une version groupée qui est au moins 4.0.0 mais inférieure à , qui inclut toutes les versions potentielles 5.0.0de 4.x. Cette notation gère efficacement votre application sur la dernière version mineure disponible de l’offre groupée d’extensions v4.x.
Si possible, vous devez utiliser la dernière version principale de l’offre groupée d’extensions et autoriser le runtime à gérer automatiquement la dernière version mineure. Vous pouvez afficher le contenu de la dernière offre groupée sur la page de publication des offres groupées d’extensions. Pour plus d’informations, consultez les bundles d’extensions Azure Functions.
Paramètres host.json
Cette section décrit les paramètres de configuration disponibles pour cette liaison dans la version 2.x et les versions ultérieures. Les paramètres dans le fichier host.json s’appliquent à toutes les fonctions dans une instance de l’application de fonction. Pour plus d’informations sur les paramètres de configuration des applications de fonction, consultez host.json référence pour Azure Functions.
Vous pouvez utiliser la extensions.mcp section dans host.json laquelle définir les informations du serveur MCP.
{
"version": "2.0",
"extensions": {
"mcp": {
"instructions": "Some test instructions on how to use the server",
"serverName": "TestServer",
"serverVersion": "2.0.0",
"encryptClientState": true,
"messageOptions": {
"useAbsoluteUriForEndpoint": false
},
"system": {
"webhookAuthorizationLevel": "System"
}
}
}
}
| Property | Description |
|---|---|
| instructions | Décrit aux clients comment accéder au serveur MCP distant. |
| serverName | Nom convivial du serveur MCP distant. |
| serverVersion | Version actuelle du serveur MCP distant. |
| encryptClientState | Détermine si l’état du client est chiffré. La valeur par défaut est true. La valeur false peut être utile pour le débogage et les scénarios de test, mais elle n’est pas recommandée pour la production. |
| messageOptions | Objet Options pour le point de terminaison de message dans le transport SSE. |
| messageOptions.UseAbsoluteUriForEndpoint | La valeur par défaut est false. Applicable uniquement au transport d’événements envoyés par le serveur (SSE) ; ce paramètre n’affecte pas le transport HTTP Streamable. Si la valeur est définie false, le point de terminaison de message est fourni en tant qu’URI relatif pendant les connexions initiales sur le transport SSE. Si la valeur est définie true, le point de terminaison de message est retourné sous la forme d’un URI absolu. L’utilisation d’un URI relatif n’est pas recommandée, sauf si vous avez une raison spécifique de le faire. |
| system | Objet Options pour la configuration au niveau du système. |
| system.webhookAuthorizationLevel | Définit le niveau d’autorisation requis pour le point de terminaison webhook. La valeur par défaut est « System ». Les valeurs autorisées sont « System » et « Anonymous ». Lorsque vous définissez la valeur sur « Anonyme », une clé d’accès n’est plus nécessaire pour les requêtes. Indépendamment de la nécessité ou non d’une clé, vous pouvez utiliser l’autorisation de serveur MCP intégrée comme couche de contrôle d’accès basée sur l’identité. |
Se connecter à votre serveur MCP
Pour vous connecter au serveur MCP exposé par votre application de fonction, vous devez fournir à un client MCP les informations de point de terminaison et de transport appropriées. Le tableau suivant présente les transports pris en charge par l’extension MCP Azure Functions, ainsi que leur point de terminaison de connexion correspondant.
| Transport | Point de terminaison |
|---|---|
| HTTP diffusable en continu | /runtime/webhooks/mcp |
| événements Server-Sent (SSE)1 | /runtime/webhooks/mcp/sse |
1 Versions de protocole plus récentes déconseillées au transport des événements Server-Sent. À moins que votre client ne l’exige spécifiquement, vous devez utiliser le transport HTTP Streamable à la place.
Lorsqu’ils sont hébergés dans Azure, par défaut, les points de terminaison exposés par l’extension nécessitent également la clé système nommée mcp_extension. S’il n’est pas fourni dans l’en-tête x-functions-key HTTP ou dans le code paramètre de chaîne de requête, votre client reçoit une 401 Unauthorized réponse. Vous pouvez supprimer cette exigence en définissant la system.webhookAuthorizationLevel propriété dans host.jsonAnonymous. Pour plus d’informations, consultez la section host.json paramètres .
Vous pouvez récupérer la clé à l’aide de l’une des méthodes décrites dans Get your function access keys. L’exemple suivant montre comment obtenir la clé avec Azure CLI :
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
Les clients MCP acceptent cette configuration de différentes manières. Consultez la documentation de votre client choisi. L’exemple suivant montre un mcp.json fichier comme vous pouvez l’utiliser pour configurer des serveurs MCP pour GitHub Copilot dans Visual Studio Code. L’exemple configure deux serveurs à l’aide du transport HTTP Streamable. Le premier est destiné aux tests locaux avec Azure Functions Core Tools. La seconde concerne une application de fonction hébergée dans Azure. La configuration prend les paramètres d’entrée pour lesquels Visual Studio Code vous invite quand vous exécutez le serveur distant pour la première fois. L’utilisation d’entrées garantit que les secrets comme la clé système ne sont pas enregistrés dans le fichier et archivés dans le contrôle de code source.
{
"inputs": [
{
"type": "promptString",
"id": "functions-mcp-extension-system-key",
"description": "Azure Functions MCP Extension System Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-host",
"description": "The host domain of the function app."
}
],
"servers": {
"local-mcp-function": {
"type": "http",
"url": "http://localhost:7071/runtime/webhooks/mcp"
},
"remote-mcp-function": {
"type": "http",
"url": "https://${input:functionapp-host}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
}