Dela via


Översikt över Model Context Protocol-bindningar för Azure Functions

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

  • Kräver version 2.1.0 eller senare av Microsoft.Azure.Functions.Worker paketet.
  • Kräver version 2.0.2 eller senare av Microsoft.Azure.Functions.Worker.Sdk paketet.

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}"
            }
        }
    }
}

Skapa en verktygsslutpunkt på din fjärranslutna MCP-server