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

Installera paket

För att kunna använda det här bindningstillägget i din app kontrollerar du att denhost.json filen i projektets rot innehåller den här extensionBundle referensen:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

I det här exemplet version instruerar värdet [4.0.0, 5.0.0) för Functions-värden att använda en paketversion som är minst 4.0.0 men mindre än 5.0.0, som innehåller alla potentiella versioner av 4.x. Den här notationen underhåller appen på den senaste tillgängliga delversionen av v4.x-tilläggspaketet.

När det är möjligt bör du använda den senaste huvudversionen av tilläggspaketet och låta körningen automatiskt behålla den senaste delversionen. Du kan visa innehållet i det senaste paketet på versionssidan för tilläggspaket. Mer information finns i Azure Functions-tilläggspaket.

MCP-tillägget kräver specifikt paketversion 4.28.0 eller senare. Du kan se till att du får den här versionen genom att ange den som den lägsta versionen i host.json filen:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.28.0, 5.0.0)"
  }
}

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