Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd MCP-promptutlösaren för att definiera promptslutpunkter på en MCP-server (Model Context Protocol). Klienter kan använda prompter för att generera strukturerade meddelanden och instruktioner när de interagerar med språkmodeller. Uppmaningar är användarstyrda, vilket innebär att de exponeras från servrar till klienter så att användarna kan välja dem för användning.
Information om installation och konfiguration finns i overview.
Example
Go-stöd finns för närvarande inte tillgängligt för denna bindning.
Note
För C#stöder Azure Functions MCP-tillägget endast isolated worker model.
Den här koden skapar en slutpunkt för att exponera en kodgranskningsprompt:
[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.
""";
}
Den här koden skapar en slutpunkt för att exponera en sammanfattningsprompt som tar två argument och 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.
""";
}
Promptargumenten för prompten kan också konfigureras i Program.cs med hjälp av byggverktyget ConfigureMcpPrompt :
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();
Det fullständiga kodexemplet finns i FunctionsMcpPrompts exempel på GitHub.
Tip
Exemplet ovan använder literalsträngar för saker som namnet på uppmaningen "code_review" i både Program.cs och funktionen. Överväg i stället att använda delade konstanta strängar för att hålla saker synkroniserade i hela projektet.
Den här koden skapar en slutpunkt för att exponera en kodgranskningsprompt med flera argument (ett krävs, ett valfritt):
@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```";
}
Den här koden skapar en slutpunkt för att exponera en sammanfattningsprompt med ett enda obligatoriskt argument:
@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;
}
Det fullständiga kodexemplet finns i PromptExamples.java exempel på GitHub.
Note
STÖD för MCP-prompt kräver azure-functions-java-library version 3.3.0 eller senare och azure-functions-maven-plugin version 1.42.0 eller senare. Uppdatera ditt pom.xml för att använda förhandsgranskningstilläggspaketet:
<extensionBundle>
<id>Microsoft.Azure.Functions.ExtensionBundle.Preview</id>
<version>[4.41, 5.0.0)</version>
</extensionBundle>
Exempelkod för JavaScript är inte tillgänglig för närvarande. Se TypeScript-exemplen för allmän vägledning med hjälp av Node.js.
Den här koden skapar en slutpunkt för att exponera en kodgranskningsprompt:
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');
},
});
Den här koden skapar en slutpunkt för att exponera en fråga om dokumentgenerering med argument:
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');
},
});
Det fullständiga kodexemplet finns i mcp-prompts exempel på GitHub.
Note
Stöd för MCP-prompten kräver förhandsgranskningstilläggspaketet och @azure/functions version 4.14.0 eller senare. Uppdatera din host.json för att använda förhandsgranskningspaketet:
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.41, 5.0.0)"
}
Och se till att dina package.json referenser "@azure/functions": "^4.14.0".
Den här koden använder dekoratören mcp_prompt_trigger för att skapa en slutpunkt för att exponera en fråga med namnet 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."""
Den här koden skapar en slutpunkt för att exponera en fråga med argument för att generera API-dokumentation:
@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."""
Det fullständiga kodexemplet finns i FunctionsMcpPrompts exempel på GitHub.
Note
Stöd för MCP-prompten kräver förhandsgranskningstilläggspaketet och azure-functions version 2.2.0b2 eller senare. Uppdatera din host.json för att använda förhandsgranskningspaketet:
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.41, 5.0.0)"
}
Och se till att din requirements.txt innehåller azure-functions>=2.2.0b2.
Important
MCP-tillägget stöder för närvarande inte PowerShell-appar.
Attributes
C#-bibliotek används McpPromptTriggerAttribute för att definiera funktionsutlösaren.
Attributets konstruktor tar följande parametrar:
| Parameter | Description |
|---|---|
| PromptName | (Krävs) Namnet på uppmaningen som MCP-utlösarslutpunkten exponerar. |
Attributet stöder även följande namngivna egenskaper:
| Property | Description |
|---|---|
| Titel | (Valfritt) En rubrik som kan läsas av människor i visningssyfte i MCP-klientgränssnitt. |
| Description | (Valfritt) En egen beskrivning av promptens slutpunkt för klienter. |
| PromptArguments | (Valfritt) En JSON-serialiserad strängrepresentation av schemat för promptargument. Du kan också använda McpPromptArgument attributet som ett alternativt sätt att ange argument. |
| Metadata | (Valfritt) En JSON-serialiserad sträng med metadata för prompten. |
| ikoner | (Valfritt) En JSON-serialiserad sträng med ikondefinitioner för visning i klientgränssnitt. |
Se Användning för att lära dig hur du definierar argument för prompten som indataparametrar.
Annotations
Använd kommentaren @McpPromptTrigger för att skapa en funktion som exponerar en promptslutpunkt på din fjärranslutna MCP-server.
Kommentaren stöder följande konfigurationsalternativ:
| Parameter | Description |
|---|---|
| name | (Krävs) Bindningsparameterns namn och unika promptidentifierare. |
| beskrivning | (Valfritt) En egen beskrivning av promptens slutpunkt för klienter. |
| rubrik | (Valfritt) En rubrik som kan läsas av människor i visningssyfte i MCP-klientgränssnitt. |
| promptArguments | (Valfritt) En infogad JSON-matris med argumentdefinitioner som ett alternativ till McpPromptArgument anteckningar. |
| metadata | (Valfritt) En JSON-serialiserad sträng med metadata för prompten. |
| Ikoner | (Valfritt) En JSON-serialiserad sträng med ikondefinitioner för visning i klientgränssnitt. |
Använd kommentaren @McpPromptArgument för att definiera enskilda promptargument. Kommentera varje argumentparameter i funktionen med den här kommentaren.
Kommentaren @McpPromptArgument stöder följande konfigurationsalternativ:
| Parameter | Description |
|---|---|
| name | (Krävs) Argumentnamnet som används som både bindningsparameternamnet och MCP-protokollargumentidentifieraren. |
| beskrivning | (Valfritt) En beskrivning av vad argumentet representerar. |
| isRequired | (Valfritt) Om värdet trueär inställt på krävs argumentet när du anropar kommandotolken. Standardinställningen är false. |
Dekoratörer
Gäller endast för python v2-programmeringsmodellen.
Följande egenskaper för MCP-promptutlösare stöds på mcp_prompt_trigger:
| Property | Description |
|---|---|
| arg_name | Variabelnamnet (vanligtvis context) som används i funktionskoden för att komma åt promptanropskontexten. |
| prompt_name | (Krävs) Namnet på MCP-serverprompten som exponeras av funktionsslutpunkten. |
| beskrivning | En beskrivning av MCP-serverprompten som funktionsslutpunkten exponerar. |
| rubrik | En valfri rubrik för visning i MCP-klientgränssnitt. |
| prompt_arguments | En lista över PromptArgument objekt som definierar argument som uppmaningen accepterar från klienter. |
Konfiguration
Definiera utlösarens bindningsalternativ i koden. I följande tabell beskrivs varje alternativ:
| Alternativ | Description |
|---|---|
| type | Ställ in på mcpPromptTrigger. Använd endast med allmänna definitioner. |
| promptName | (Krävs) Namnet på MCP-serverprompten som funktionsslutpunkten exponerar. |
| beskrivning | En beskrivning av MCP-serverprompten som funktionsslutpunkten exponerar. |
| promptArguments | Ett objekt som definierar promptargument med hjälp av promptArg hjälpverktyg. Varje nyckel är argumentnamnet och värdet beskriver och konfigurerar argumentet. |
| hanterar | Metoden som innehåller den faktiska funktionskoden. |
Fullständiga exempel finns i avsnittet Exempel.
Usage
MCP-promptutlösaren kan binda till följande typer:
| Type | Description |
|---|---|
| PromptInvocationContext | Ett objekt som representerar uppmaningens anrop, inklusive promptens namn, argument, sessions-ID och transportinformation. |
Typen PromptInvocationContext innehåller följande egenskaper:
| Property | Type | Description |
|---|---|---|
| Namn | string |
Namnet på uppmaningen som anropas. |
| Arguments | Dictionary<string, string>? |
Argumenten som anges för uppmaningsanropet. |
| SessionId | string? |
Sessions-ID:t som är associerat med det aktuella kommandotolken. |
| Transport | Transport? |
Transportinformation för det aktuella anropet. |
Kommentaren @McpPromptTrigger binder till en String parameter som innehåller promptanropskontexten som en JSON-sträng. Utlösarfunktionen tar emot argumentvärden via parametrar som kommenterats med @McpPromptArgument.
Funktionen prompthanterare har två parametrar:
| Parameter | Type | Description |
|---|---|---|
| ctx | PromptInvocationContext |
Snabbanropskontexten, som innehåller prompten name, arguments, sessionIdoch transport information. |
| sammanhang | InvocationContext |
Den Azure Functions anropskontexten, som innehåller loggning och annan körningsinformation. |
Fråga argument
MCP-klienter anropar uppmaningar med argument för att tillhandahålla data och kontext för att generera promptmeddelandet. Klienter vet hur de samlar in och skickar dessa argument baserat på de argumentdefinitioner som uppmaningen annonserar som en del av protokollet. Du definierar argument för prompten i funktionskoden.
När du definierar ett promptargument gör du det valfritt som standard. Klienten kan utelämna det när du anropar kommandotolken. Markera uttryckligen argument som nödvändiga om prompten inte kan fungera utan dem.
I C# kan du definiera argument för dina frågor på flera sätt. Vilken metod du använder handlar om inställningar för kodformat. Alternativen är:
- Funktionen tar indataparametrar med hjälp av attributet
McpPromptArgument. - Du använder
FunctionsApplicationBuilderför att definiera argument iProgram.csfilen.
Definiera ett eller flera promptargument genom att använda McpPromptArgument attributet för indataparametrar i bindningsformat i funktionen.
Typen McpPromptArgumentAttribute stöder följande egenskaper:
| Property | Description |
|---|---|
| ArgumentName | Namnet på det promptargument som exponeras för klienter. |
| Description | Beskrivning av vad argumentet representerar. |
| Är Obligatoriskt | (Valfritt) Om värdet trueär inställt på krävs promptargumentet när du anropar prompten. Standardinställningen är false. |
Du kan se de här attributen CodeReviewPrompt som används i i Exemplen.
Du kan konfigurera promptargument i utlösardefinitionens prompt_arguments fält, som är en lista över PromptArgument objekt.
A PromptArgument konstrueras som:
func.PromptArgument("argument_name", "Description of the argument", required=True)
Fälten i en PromptArgument är:
| Property | Description |
|---|---|
| name | Namnet på det promptargument som du exponerar för klienter. |
| beskrivning | Beskrivning av vad argumentet representerar. |
| required | (Valfritt) Om värdet Trueär inställt på krävs argumentet när du anropar kommandotolken. Standardinställningen är False. |
I Java definierar du promptargument med hjälp av @McpPromptArgument anteckning på enskilda funktionsparametrar. Kommentera varje parameter som representerar ett promptargument med den här kommentaren. Ange argumentnamn, beskrivning och om det krävs.
Du kan se de här anteckningarna som används i Exemplen.
promptArguments: {
code: promptArg.describe("The code to review").isRequired(),
language: promptArg.describe("The programming language"),
}
Returtyper
MCP-promptutlösaren stöder följande returtyper:
| Type | Description |
|---|---|
string |
Returneras som ett textmeddelande för en enskild användarroll i MCP GetPromptResult. |
MCP-promptutlösaren stöder följande returtyper:
| Type | Description |
|---|---|
String |
Returneras som ett textmeddelande för en enskild användarroll i MCP GetPromptResult. |
MCP-promptutlösaren stöder följande returtyper:
| Type | Description |
|---|---|
str |
Returneras som ett textmeddelande för en enskild användarroll i MCP GetPromptResult. |
Funktionen ska returnera en string som innehåller meddelandets text. Strängen omsluts som ett textmeddelande med en enskild användarroll i MCP GetPromptResult.
Fråga identifiering
När en funktionsapp startar registreras alla promptutlösarfunktioner med MCP-servern. Klienter identifierar tillgängliga frågor genom att anropa MCP-metoden prompts/list . Den här metoden returnerar varje frågas namn, rubrik, beskrivning, argument, ikoner och metadata (via fältet meta ). Klienter anropar en uppmaning genom att anropa prompts/get med kommandotolkens namn och argument.
Sessioner
Egenskapen SessionId på PromptInvocationContext identifierar MCP-sessionen som gör begäran. Använd den här egenskapen för att upprätthålla status per session eller tillämpa sessionsspecifik logik när du genererar prompter.
host.json inställningar
Filen host.json innehåller inställningar som styr MCP-utlösarbeteenden. Mer information om tillgängliga inställningar finns i avsnittet host.json.
Relaterade artiklar
MCP-verktygsutlösare för Azure Functions
MCP-resursutlösare för Azure Functions