Anteckning
Å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.
Model Context Protocol (MCP) är ett klient-serverprotokoll som är avsett att göra det möjligt för språkmodeller och agenter att mer effektivt identifiera och använda externa datakällor och verktyg.
Med Azure Functions MCP-tillägget kan du använda Azure Functions för att skapa fjärranslutna MCP-servrar. Dessa servrar kan vara värdar för MCP-verktygsutlösarfunktioner, som MCP-klienter, till exempel språkmodeller och agenter, kan köra frågor mot och få åtkomst till specifika uppgifter.
| Action | Type |
|---|---|
| Köra en funktion från en MCP-verktygsanropsbegäran | Trigger |
Important
MCP-tillägget stöder för närvarande inte PowerShell-appar.
Prerequisites
- När du använder SSE-transporten förlitar sig MCP-tillägget på Azure Queue Storage som tillhandahålls av standardvärdens lagringskonto (
AzureWebJobsStorage). När du använder identitetsbaserade anslutningar kontrollerar du att funktionsappen har minst motsvarande rollbaserade behörigheter i värdlagringskontot: Storage Queue Data Reader och Storage Queue Data Message Processor. - När du kör lokalt kräver MCP-tillägget version 4.0.7030 av Azure Functions Core Tools eller en senare version.
- Kräver version 2.1.0 eller senare av
Microsoft.Azure.Functions.Workerpaketet. - Kräver version 2.0.2 eller senare av
Microsoft.Azure.Functions.Worker.Sdkpaketet.
Installera tillägg
Note
För C#stöder Azure Functions MCP-tillägget endast den isolerade arbetsmodellen.
Lägg till tillägget i projektet genom att installera det här NuGet-paketet på önskat sätt:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
Important
En allmänt tillgänglig version av tillägget är nu tillgänglig. Det ingår dock inte ännu i standardtilläggspaketet. Anvisningarna visar hur du använder förhandsgranskningstilläggspaketet, som innehåller en tidigare förhandsversion av MCP-tillägget, tillsammans med andra förhandsgranskningsberoenden. För att kunna använda den allmänt tillgängliga versionen av tillägget måste du installera tillägget manuellt.
Installera paket
För att kunna använda det här förhandsgranskningsbindningstillägget i din app måste du referera till ett paket med förhandsgranskningstillägg som innehåller det.
Lägg till eller ersätt följande kod i host.json filen, som specifikt riktar sig till den senaste förhandsversionen av 4.x-paketet:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.0.0, 5.0.0)"
}
}
Välj föregående länk för att kontrollera att den senaste versionen av förhandsversionen innehåller förhandsgranskningstillägget.
host.json inställningar
I det här avsnittet beskrivs de konfigurationsinställningar som är tillgängliga för den här bindningen i version 2.x och senare. Inställningar i host.json-filen gäller för alla funktioner i en funktionsappinstans. Mer information om konfigurationsinställningar för funktionsappar finns ihost.json referens för Azure Functions.
Du kan använda avsnittet extensions.mcp i host.json för att definiera MCP-serverinformation.
{
"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
}
}
}
}
| Property | Description |
|---|---|
| instructions | Beskriver för klienter hur de får åtkomst till den fjärranslutna MCP-servern. |
| serverName | Ett eget namn för den fjärranslutna MCP-servern. |
| serverVersion | Aktuell version av den fjärranslutna MCP-servern. |
| encryptClientState | Avgör om klienttillståndet är krypterat. Standardinställningen är true. Inställningen false kan vara användbar för felsökning och testscenarier, men rekommenderas inte för produktion. |
| messageOptions | Alternativobjekt för meddelandeslutpunkten i SSE-transporten. |
| messageOptions.UseAbsoluteUriForEndpoint | Standardinställningen är false. Gäller endast för SSE-transport (server-sent events). Den här inställningen påverkar inte den streambara HTTP-transporten. Om det är inställt falsepå anges meddelandeslutpunkten som en relativ URI under inledande anslutningar över SSE-transporten. Om värdet trueär returneras meddelandeslutpunkten som en absolut URI. Användning av en relativ URI rekommenderas inte om du inte har en specifik anledning att göra det. |
Ansluta till MCP-servern
För att ansluta till MCP-servern som exponeras av funktionsappen måste du ange en MCP-klient med lämplig slutpunkts- och transportinformation. I följande tabell visas de transporter som stöds av Azure Functions MCP-tillägget, tillsammans med deras motsvarande anslutningsslutpunkt.
| Transport | Endpoint |
|---|---|
| Strömmande HTTP | /runtime/webhooks/mcp |
| Server-Sent events (SSE)1 | /runtime/webhooks/mcp/sse |
1 Nyare protokollversioner har föråldrat transporten Server-Sent Events. Om inte klienten specifikt kräver det bör du använda streambar HTTP-transport i stället.
När slutpunkterna som exponeras av tillägget finns i Azure kräver de även systemnyckeln med namnet mcp_extension. Om den inte anges i x-functions-key HTTP-huvudet eller i frågesträngsparametern code får klienten ett 401 Unauthorized svar. Du kan hämta nyckeln med någon av metoderna som beskrivs i Hämta funktionsåtkomstnycklar. I följande exempel visas hur du hämtar nyckeln med Azure CLI:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
MCP-klienter accepterar den här konfigurationen på olika sätt. Läs dokumentationen för din valda klient. I följande exempel visas en mcp.json fil som du kan använda för att konfigurera MCP-servrar för GitHub Copilot i Visual Studio Code. I exemplet konfigureras två servrar, båda med hjälp av Streamable HTTP-transporten. Den första är för lokal testning med Azure Functions Core Tools. Den andra är för en funktionsapp som finns i Azure. Konfigurationen tar indataparametrar som Visual Studio Code frågar efter när du kör fjärrservern. Genom att använda indata ser du till att hemligheter som systemnyckeln inte sparas i filen och checkas in i källkontrollen.
{
"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}"
}
}
}
}