Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez le déclencheur d’invite MCP pour définir des points de terminaison d’invite dans un serveur MCP (Model Context Protocol). Les clients peuvent utiliser des invites pour générer des messages structurés et des instructions lors de l’interaction avec les modèles de langage. Les invites sont contrôlées par l’utilisateur, ce qui signifie qu’elles sont exposées de serveurs à des clients afin que les utilisateurs puissent les sélectionner à utiliser.
Pour plus d’informations sur l’installation et la configuration, consultez la overview.
Example
Le support Go n’est pas disponible pour ce liaison pour le moment.
Ce code crée un point de terminaison pour exposer une invite de révision de code :
[Function(nameof(CodeReviewChecklist))]
public string CodeReviewChecklist(
[McpPromptTrigger(CodeReviewPromptName, Description = CodeReviewPromptDescription)]
PromptInvocationContext context)
{
logger.LogInformation("Code review checklist prompt invoked.");
return """
You are a senior software engineer performing a code review.
Use the following checklist to evaluate the code:
1. **Correctness** — Does the code do what it's supposed to?
2. **Error Handling** — Are edge cases and failures handled?
3. **Security** — Are there any vulnerabilities (injection, auth, secrets)?
4. **Performance** — Are there obvious inefficiencies?
5. **Readability** — Is the code clear and well-named?
6. **Tests** — Are there adequate tests for the changes?
Provide your feedback in a structured format with a severity level
(critical, warning, suggestion) for each finding.
""";
}
Ce code crée un point de terminaison pour exposer une invite de synthèse qui prend deux arguments et topicaudience:
[Function(nameof(SummarizeContent))]
public string SummarizeContent(
[McpPromptTrigger(SummarizePromptName, Description = SummarizePromptDescription)]
PromptInvocationContext context,
[McpPromptArgument("topic", "The topic or content to summarize.", isRequired: true)]
string topic,
[McpPromptArgument("audience", "Target audience (e.g., 'executive', 'developer', 'beginner').")]
string? audience)
{
logger.LogInformation("Summarize prompt invoked for topic: {Topic}", topic);
var audienceInstruction = audience is not null
? $"Tailor the summary for a **{audience}** audience."
: "Write the summary for a general technical audience.";
return $"""
Summarize the following topic concisely and accurately:
**Topic:** {topic}
{audienceInstruction}
Guidelines:
- Start with a one-sentence overview.
- Include 3–5 key points as bullet items.
- End with a brief conclusion or recommendation.
- Keep the total length under 300 words.
""";
}
Les arguments d’invite de l’invite peuvent également être configurés à Program.cs l’aide du ConfigureMcpPrompt générateur :
var builder = FunctionsApplication.CreateBuilder(args);
builder.ConfigureFunctionsWebApplication();
builder
.ConfigureMcpPrompt(SummarizePromptName)
.WithArgument("topic", "The topic or content to summarize.", required: true)
.WithArgument("audience", "Target audience (e.g., 'executive', 'developer', 'beginner').");
builder.Build().Run();
Pour obtenir l’exemple de code complet, consultez FunctionsMcpPrompts sur GitHub.
Tip
L’exemple ci-dessus utilise des chaînes littérales pour des éléments tels que le nom de l’invite « code_review » dans les deux Program.cs et la fonction. Envisagez plutôt d’utiliser des chaînes de constantes partagées pour synchroniser les éléments dans votre projet.
Ce code crée un point de terminaison pour exposer une invite de révision de code avec plusieurs arguments (un argument obligatoire, un facultatif) :
@FunctionName("CodeReviewPrompt")
public String codeReviewPrompt(
@McpPromptTrigger(
name = "code_review",
description = "Generates a code review prompt for the given code snippet",
title = "Code Review")
String context,
@McpPromptArgument(
name = "code",
description = "The code to review",
isRequired = true)
String code,
@McpPromptArgument(
name = "language",
description = "The programming language")
String language,
final ExecutionContext executionContext) {
executionContext.getLogger().info("Generating code review prompt");
String lang = (language != null && !language.isEmpty()) ? language : "unknown";
String snippet = (code != null && !code.isEmpty()) ? code : "// no code provided";
return "Please review the following " + lang + " code and suggest improvements:\n\n```"
+ lang + "\n" + snippet + "\n```";
}
Ce code crée un point de terminaison pour exposer une invite de synthèse avec un seul argument obligatoire :
@FunctionName("SummarizePrompt")
public String summarizePrompt(
@McpPromptTrigger(
name = "summarize",
description = "Summarizes the provided text",
title = "Summarize Text")
String context,
@McpPromptArgument(
name = "text",
description = "The text to summarize",
isRequired = true)
String text,
final ExecutionContext executionContext) {
executionContext.getLogger().info("Generating summarize prompt");
String input = (text != null && !text.isEmpty()) ? text : "No text provided";
return "Please provide a concise summary of the following text:\n\n" + input;
}
Pour obtenir l’exemple de code complet, consultez PromptExamples.java exemple sur GitHub.
Note
La prise en charge des invites MCP nécessite azure-functions-java-library la version 3.3.0 ou ultérieure et azure-functions-maven-plugin la version 1.42.0 ou ultérieure. Mettez à jour votre pom.xml offre groupée d’extensions en préversion :
<extensionBundle>
<id>Microsoft.Azure.Functions.ExtensionBundle.Preview</id>
<version>[4.41, 5.0.0)</version>
</extensionBundle>
L’exemple de code pour JavaScript n’est actuellement pas disponible. Consultez les exemples TypeScript pour obtenir des conseils généraux à l’aide de Node.js.
Ce code crée un point de terminaison pour exposer une invite de révision de code :
app.mcpPrompt('CodeReviewChecklist', {
promptName: CodeReviewPromptName,
description: CodeReviewPromptDescription,
handler: async (_ctx: PromptInvocationContext, context: InvocationContext) => {
context.log('Code review checklist prompt invoked.');
return [
"You are a senior software engineer performing a code review.",
'Use the following checklist to evaluate the code:',
'',
"1. **Correctness** \u2014 Does the code do what it's supposed to?",
'2. **Error Handling** \u2014 Are edge cases and failures handled?',
'3. **Security** \u2014 Are there any vulnerabilities (injection, auth, secrets)?',
'4. **Performance** \u2014 Are there obvious inefficiencies?',
'5. **Readability** \u2014 Is the code clear and well-named?',
'6. **Tests** \u2014 Are there adequate tests for the changes?',
'',
'Provide your feedback in a structured format with a severity level',
'(critical, warning, suggestion) for each finding.',
].join('\n');
},
});
Ce code crée un point de terminaison pour exposer une invite de génération de documents avec des arguments :
app.mcpPrompt('GenerateDocumentation', {
promptName: GenerateDocsPromptName,
description: GenerateDocsPromptDescription,
promptArguments: {
function_name: promptArg.describe("The function to document.").isRequired(),
style: promptArg.describe("Documentation style (e.g., 'concise', 'verbose')."),
},
handler: async (ctx: PromptInvocationContext, context: InvocationContext) => {
const functionName = ctx.arguments.function_name ?? '(unknown)';
const style = ctx.arguments.style ?? 'concise';
context.log(`Generate docs prompt invoked for function: ${functionName}`);
return [
`Generate API documentation for the function named **${functionName}**.`,
'',
`Documentation style: **${style}**`,
'',
'Include the following sections:',
'- **Description** \u2014 What the function does.',
'- **Parameters** \u2014 List each parameter with its type and purpose.',
'- **Return Value** \u2014 What the function returns.',
'- **Example Usage** \u2014 A short code example showing how to call it.',
].join('\n');
},
});
Pour obtenir l’exemple de code complet, consultez mcp-prompts sur GitHub.
Note
La prise en charge des invites MCP nécessite l’offre groupée d’extensions en préversion et @azure/functions la version 4.14.0 ou ultérieure. Mettez à jour votre host.json option pour utiliser l’offre groupée en préversion :
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.41, 5.0.0)"
}
Et assurez-vous que vos package.json références "@azure/functions": "^4.14.0".
Ce code utilise le mcp_prompt_trigger décorateur pour créer un point de terminaison pour exposer une invite nommée code_review_checklist:
@app.mcp_prompt_trigger(
arg_name="context",
prompt_name="code_review_checklist",
description="Returns a structured code review checklist prompt for evaluating code changes."
)
def code_review_checklist(context: func.PromptInvocationContext) -> str:
logging.info("Code review checklist prompt invoked.")
return """You are a senior software engineer performing a code review.
Use the following checklist to evaluate the code:
1. **Correctness** — Does the code do what it's supposed to?
2. **Error Handling** — Are edge cases and failures handled?
3. **Security** — Are there any vulnerabilities (injection, auth, secrets)?
4. **Performance** — Are there obvious inefficiencies?
5. **Readability** — Is the code clear and well-named?
6. **Tests** — Are there adequate tests for the changes?
Provide your feedback in a structured format with a severity level
(critical, warning, suggestion) for each finding."""
Ce code crée un point de terminaison pour exposer une invite avec des arguments pour générer la documentation de l’API :
@app.mcp_prompt_trigger(
arg_name="context",
prompt_name="generate_documentation",
prompt_arguments=[
func.PromptArgument("function_name", "The name of the function to document.", required=False),
func.PromptArgument("style", "Documentation style: 'concise', 'detailed', or 'tutorial'.", required=False)
],
description="Generates API documentation for a function. Arguments are configured in Program.cs."
)
def generate_documentation(context: func.PromptInvocationContext) -> str:
function_name = context.arguments.get("function_name", "(unknown)")
style = context.arguments.get("style", "concise")
logging.info(f"Generate docs prompt invoked for function: {function_name}")
return f"""Generate API documentation for the function named **{function_name}**.
Documentation style: **{style}**
Include the following sections:
- **Description** — What the function does.
- **Parameters** — List each parameter with its type and purpose.
- **Return Value** — What the function returns.
- **Example Usage** — A short code example showing how to call it."""
Pour obtenir l’exemple de code complet, consultez FunctionsMcpPrompts sur GitHub.
Note
La prise en charge des invites MCP nécessite l’offre groupée d’extensions en préversion et azure-functions la version 2.2.0b2 ou ultérieure. Mettez à jour votre host.json option pour utiliser l’offre groupée en préversion :
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.41, 5.0.0)"
}
Et assurez-vous que vos requirements.txt éléments sont inclus azure-functions>=2.2.0b2.
Important
L’extension MCP ne prend actuellement pas en charge les applications PowerShell.
Attributs
Les bibliothèques C# utilisent McpPromptTriggerAttribute pour définir le déclencheur de fonction.
Le constructeur de l’attribut accepte les paramètres suivants :
| Paramètre | Description |
|---|---|
| PromptName | (Obligatoire) Nom de l’invite que le point de terminaison de déclencheur MCP expose. |
L’attribut prend également en charge les propriétés nommées suivantes :
| Propriété | Description |
|---|---|
| Titre | (Facultatif) Titre lisible par l’homme à des fins d’affichage dans les interfaces clientes MCP. |
| Description | (Facultatif) Description conviviale du point de terminaison d’invite pour les clients. |
| PromptArguments | (Facultatif) Représentation sous forme de chaîne sérialisée JSON du schéma des arguments d’invite. Vous pouvez également utiliser l’attribut McpPromptArgument comme autre moyen de fournir des arguments. |
| Metadata | (Facultatif) Chaîne de métadonnées sérialisée JSON pour l’invite. |
| icônes | (Facultatif) Chaîne sérialisée JSON de définitions d’icônes pour l’affichage dans les interfaces clientes. |
Consultez Utilisation pour savoir comment définir des arguments de l’invite en tant que paramètres d’entrée.
Annotations
Utilisez l’annotation @McpPromptTrigger pour créer une fonction qui expose un point de terminaison d’invite dans votre serveur MCP distant.
L’annotation prend en charge les options de configuration suivantes :
| Paramètre | Description |
|---|---|
| name | (Obligatoire) Nom du paramètre de liaison et identificateur d’invite unique. |
| description | (Facultatif) Description conviviale du point de terminaison d’invite pour les clients. |
| titre | (Facultatif) Titre lisible par l’homme à des fins d’affichage dans les interfaces clientes MCP. |
| promptArguments | (Facultatif) Tableau JSON inline de définitions d’arguments comme alternative aux McpPromptArgument annotations. |
| métadonnées | (Facultatif) Chaîne de métadonnées sérialisée JSON pour l’invite. |
| Icônes | (Facultatif) Chaîne sérialisée JSON de définitions d’icônes pour l’affichage dans les interfaces clientes. |
Utilisez l’annotation @McpPromptArgument pour définir des arguments d’invite individuels. Annotez chaque paramètre d’argument dans votre fonction avec cette annotation.
L’annotation @McpPromptArgument prend en charge les options de configuration suivantes :
| Paramètre | Description |
|---|---|
| name | (Obligatoire) Nom de l’argument utilisé comme nom de paramètre de liaison et identificateur d’argument de protocole MCP. |
| description | (Facultatif) Description de ce que représente l’argument. |
| isRequired | (Facultatif) Si la valeur est définie true, l’argument est requis lors de l’appel de l’invite. La valeur par défaut est false. |
Décorateurs
S’applique uniquement au modèle de programmation Python v2.
Les propriétés de déclencheur d’invite MCP suivantes sont prises en charge sur mcp_prompt_trigger:
| Propriété | Description |
|---|---|
| arg_name | Nom de variable (généralement context) utilisé dans le code de fonction pour accéder au contexte d’appel d’invite. |
| prompt_name | (Obligatoire) Nom de l’invite du serveur MCP exposée par le point de terminaison de fonction. |
| description | Description de l’invite du serveur MCP exposée par le point de terminaison de fonction. |
| titre | Titre facultatif à des fins d’affichage dans les interfaces clientes MCP. |
| prompt_arguments | Liste d’objets PromptArgument qui définissent les arguments que l’invite accepte des clients. |
Configuration
Définissez les options de liaison du déclencheur dans votre code. Le tableau suivant décrit chaque option :
| Choix | Description |
|---|---|
| type | Réglez sur mcpPromptTrigger. Utilisez uniquement les définitions génériques. |
| promptName | (Obligatoire) Nom de l’invite du serveur MCP que le point de terminaison de fonction expose. |
| description | Description de l’invite du serveur MCP exposée par le point de terminaison de fonction. |
| promptArguments | Objet qui définit des arguments d’invite à l’aide promptArg d’helpers. Chaque clé est le nom de l’argument, et la valeur décrit et configure l’argument. |
| gestionnaire | Méthode qui contient le code de fonction réel. |
Pour obtenir des exemples complets, consultez la section Exemple.
Utilisation
Le déclencheur d’invite MCP peut être lié aux types suivants :
| Catégorie | Description |
|---|---|
| PromptInvocationContext | Objet représentant l’appel d’invite, y compris le nom de l’invite, les arguments, l’ID de session et les informations de transport. |
Le PromptInvocationContext type fournit les propriétés suivantes :
| Propriété | Catégorie | Description |
|---|---|---|
| Nom | string |
Nom de l’invite appelée. |
| Arguments | Dictionary<string, string>? |
Arguments fournis pour l’appel d’invite. |
| SessionId | string? |
ID de session associé à l’appel d’invite actuel. |
| Transport | Transport? |
Informations de transport pour l’appel actuel. |
L’annotation @McpPromptTrigger est liée à un String paramètre qui contient le contexte d’appel d’invite sous forme de chaîne JSON. La fonction de déclencheur reçoit des valeurs d’argument par le biais de paramètres annotés avec @McpPromptArgument.
La fonction de gestionnaire d’invite a deux paramètres :
| Paramètre | Catégorie | Description |
|---|---|---|
| Ctx | PromptInvocationContext |
Contexte d’appel d’invite, qui inclut l’invite name, arguments, sessionIdet transport les informations. |
| Contexte | InvocationContext |
Le Azure Functions contexte d’appel, qui fournit des informations de journalisation et d’autres informations d’exécution. |
Arguments d’invite
Les clients MCP appellent des invites avec des arguments pour fournir des données et un contexte pour générer le message d’invite. Les clients savent comment collecter et transmettre ces arguments en fonction des définitions d’arguments publiées par l’invite dans le cadre du protocole. Vous définissez des arguments pour l’invite dans votre code de fonction.
Lorsque vous définissez un argument d’invite, faites-le facultatif par défaut. Le client peut l’omettre lors de l’appel de l’invite. Marquez explicitement les arguments comme requis si l’invite ne peut pas fonctionner sans eux.
En C#, vous pouvez définir des arguments pour vos invites de plusieurs façons. Quelle approche vous utilisez est une question de préférence de style de code. Les options sont les suivantes :
- Votre fonction prend des paramètres d’entrée à l’aide de l’attribut
McpPromptArgument. - Vous utilisez la méthode
FunctionsApplicationBuilderpour définir des arguments dans votreProgram.csfichier.
Définissez un ou plusieurs arguments d’invite en appliquant l’attribut McpPromptArgument aux paramètres de style de liaison d’entrée dans votre fonction.
Le McpPromptArgumentAttribute type prend en charge ces propriétés :
| Propriété | Description |
|---|---|
| ArgumentName | Nom de l’argument d’invite qui est exposé aux clients. |
| Description | Description de ce que représente l’argument. |
| Est obligatoire | (Facultatif) Si la valeur est définie true, l’argument d’invite est requis lors de l’appel de l’invite. La valeur par défaut est false. |
Vous pouvez voir ces attributs utilisés dans les CodeReviewPromptexemples.
Vous pouvez configurer des arguments d’invite dans le champ de la définition du prompt_arguments déclencheur, qui est une liste d’objets PromptArgument .
Un PromptArgument est construit comme suit :
func.PromptArgument("argument_name", "Description of the argument", required=True)
Les champs d’un PromptArgument sont les suivants :
| Propriété | Description |
|---|---|
| name | Nom de l’argument d’invite que vous exposez aux clients. |
| description | Description de ce que représente l’argument. |
| required | (Facultatif) Si la valeur est définie True, l’argument est requis lors de l’appel de l’invite. La valeur par défaut est False. |
Dans Java, définissez des arguments d’invite à l’aide de l’annotation @McpPromptArgument sur des paramètres de fonction individuels. Annotez chaque paramètre qui représente un argument d’invite avec cette annotation. Spécifiez le nom, la description et le nom de l’argument, et indiquez s’il est nécessaire.
Vous pouvez voir ces annotations utilisées dans les exemples.
promptArguments: {
code: promptArg.describe("The code to review").isRequired(),
language: promptArg.describe("The programming language"),
}
Types de retour
Le déclencheur d’invite MCP prend en charge les types de retour suivants :
| Catégorie | Description |
|---|---|
string |
Retourné sous la forme d’un message texte à rôle utilisateur unique dans le MCP GetPromptResult. |
Le déclencheur d’invite MCP prend en charge les types de retour suivants :
| Catégorie | Description |
|---|---|
String |
Retourné sous la forme d’un message texte à rôle utilisateur unique dans le MCP GetPromptResult. |
Le déclencheur d’invite MCP prend en charge les types de retour suivants :
| Catégorie | Description |
|---|---|
str |
Retourné sous la forme d’un message texte à rôle utilisateur unique dans le MCP GetPromptResult. |
La fonction doit retourner un string texte contenant le message d’invite. La chaîne est encapsulée en tant que message texte à rôle utilisateur unique dans le MCP GetPromptResult.
Détection d’invite
Lorsqu’une application de fonction démarre, elle inscrit toutes les fonctions de déclencheur d’invite auprès du serveur MCP. Les clients découvrent les invites disponibles en appelant la méthode MCP prompts/list . Cette méthode retourne le nom, le titre, la description, les arguments, les icônes et les métadonnées de chaque invite (via le meta champ). Les clients appellent une invite en appelant prompts/get avec le nom et les arguments de l’invite.
Sessions
La SessionId propriété sur PromptInvocationContext identifie la session MCP qui effectue la requête. Utilisez cette propriété pour maintenir l’état par session ou appliquer une logique spécifique à la session lors de la génération d’invites.
Paramètres host.json
Le fichier host.json contient des paramètres qui contrôlent les comportements des déclencheurs MCP. Pour plus d’informations sur les paramètres disponibles, consultez la section host.json.
Articles connexes
déclencheur d’outil MCP pour Azure Functions
déclencheur de ressource MCP pour Azure Functions