Freigeben über


Übersicht über Modellkontextprotokollbindungen für Azure Functions

Das Model Context Protocol (MCP) ist ein Clientserverprotokoll, mit dem Sprachmodelle und -agents effizienter externe Datenquellen und Tools ermitteln und verwenden können.

Mit der Azure Functions MCP-Erweiterung können Sie Azure Functions verwenden, um Remote-MCP-Server zu erstellen. Diese Server können MCP-Tooltriggerfunktionen hosten, die MCP-Clients wie Sprachmodelle und Agents abfragen und darauf zugreifen können, um bestimmte Aufgaben auszuführen.

Action Type
Ausführen einer Funktion aus einer MCP-Toolaufrufanforderung Trigger

Important

Die MCP-Erweiterung unterstützt derzeit keine PowerShell-Apps.

Prerequisites

  • Erfordert Version 2.1.0 oder höher des Microsoft.Azure.Functions.Worker Pakets.
  • Erfordert Version 2.0.2 oder höher des Microsoft.Azure.Functions.Worker.Sdk Pakets.

Installieren der Erweiterung

Note

Für C# unterstützt die Azure Functions MCP-Erweiterung nur das isolierte Workermodell.

Fügen Sie die Erweiterung zu Ihrem Projekt hinzu, indem Sie dieses NuGet-Paket auf ihre bevorzugte Weise installieren:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Installieren des Bundles

Um diese Bindungserweiterung in Ihrer App verwenden zu können, stellen Sie sicher, dass die host.json Datei im Stammverzeichnis Ihres Projekts diesen extensionBundle Verweis enthält:

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

In diesem Beispiel weist der version Wert des [4.0.0, 5.0.0) Funktionenhosts an, eine Bundleversion zu verwenden, die mindestens 4.0.0 aber kleiner ist als 5.0.0, die alle potenziellen Versionen von 4.x enthält. Diese Notation verwaltet Ihre App effektiv auf der neuesten verfügbaren Nebenversion des v4.x-Erweiterungspakets.

Wenn möglich, sollten Sie die neueste Hauptversion des Erweiterungspakets verwenden und der Laufzeit erlauben, die neueste Nebenversion automatisch zu verwalten. Sie können den Inhalt des neuesten Bundles auf der Releaseseite der Erweiterungspakete anzeigen. Weitere Informationen finden Sie unter Azure Functions-Erweiterungspakete.

Einstellungen für „host.json“

In diesem Abschnitt werden die Konfigurationseinstellungen beschrieben, die für diese Bindung in Version 2.x und höher verfügbar sind. Einstellungen in der Datei „host.json“ gelten für alle Funktionen in einer Funktions-App-Instanz. Weitere Informationen zu Konfigurationseinstellungen für Funktionen-Apps finden Sie unter host.json Referenz für Azure Functions.

Sie können den extensions.mcp Abschnitt host.json verwenden, um MCP-Serverinformationen zu definieren.

{
  "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
      },
      "system": {
        "webhookAuthorizationLevel": "System"
      }
    }    
  }
}
Property Description
instructions Beschreibt Clients, wie auf den Remote-MCP-Server zugegriffen wird.
serverName Ein Anzeigename für den Remote-MCP-Server.
serverVersion Aktuelle Version des Remote-MCP-Servers.
encryptClientState Bestimmt, ob der Clientstatus verschlüsselt ist. Die Standardeinstellung ist „true“. Die Einstellung auf "false" kann für Debugging- und Testszenarien hilfreich sein, wird jedoch nicht für die Produktion empfohlen.
messageOptions Options-Objekt für den Nachrichtenendpunkt im SSE-Transport.
messageOptions.UseAbsoluteUriForEndpoint Wird standardmäßig auf false festgelegt. Gilt nur für den Server-gesendeten Ereignistransport (SSE); Diese Einstellung wirkt sich nicht auf den streambaren HTTP-Transport aus. Bei Festlegung auf falsewird der Nachrichtenendpunkt während der anfänglichen Verbindungen über den SSE-Transport als relativer URI bereitgestellt. Bei Festlegung auf truewird der Nachrichtenendpunkt als absoluter URI zurückgegeben. Die Verwendung eines relativen URI wird nicht empfohlen, es sei denn, Sie haben einen bestimmten Grund dafür.
System Options-Objekt für die Konfiguration auf Systemebene.
system.webhookAuthorizationLevel Definiert die für den Webhook-Endpunkt erforderliche Autorisierungsstufe. Der Standardwert ist "System". Zulässige Werte sind "System" und "Anonym". Wenn Sie den Wert auf "Anonym" festlegen, ist für Anforderungen kein Zugriffsschlüssel mehr erforderlich. Unabhängig davon, ob ein Schlüssel erforderlich ist oder nicht, können Sie die integrierte MCP-Serverautorisierung als identitätsbasierte Zugriffssteuerungsebene verwenden.

Herstellen einer Verbindung mit Ihrem MCP-Server

Um eine Verbindung mit dem MCP-Server herzustellen, der von Ihrer Funktions-App verfügbar gemacht wird, müssen Sie einen MCP-Client mit den entsprechenden Endpunkt- und Transportinformationen bereitstellen. Die folgende Tabelle zeigt die von der Azure Functions MCP-Erweiterung unterstützten Transporte zusammen mit dem entsprechenden Verbindungsendpunkt.

Transport Endpunkt
Streambares HTTP /runtime/webhooks/mcp
Server-Sent Veranstaltungen (SSE)1 /runtime/webhooks/mcp/sse

1 Neuere Protokollversionen veraltet den Transport von Server-Sent Ereignissen. Sofern Ihr Client dies nicht ausdrücklich erfordert, sollten Sie stattdessen den streambaren HTTP-Transport verwenden.

Wenn sie in Azure gehostet werden, benötigen die von der Erweiterung verfügbar gemachten Endpunkte standardmäßig auch den Systemschlüssel namens mcp_extension. Wenn sie nicht im x-functions-key HTTP-Header oder im code Abfragezeichenfolgenparameter bereitgestellt wird, empfängt Der Client eine 401 Unauthorized Antwort. Sie können diese Anforderung entfernen, indem Sie die system.webhookAuthorizationLevel Eigenschaft auf host.jsonAnonymous . Weitere Informationen finden Sie im Abschnitt host.json Einstellungen .

Sie können den Schlüssel mithilfe einer der unter "Get your function access keys" beschriebenen Methoden abrufen. Das folgende Beispiel zeigt, wie Sie den Schlüssel mit der Azure CLI abrufen:

az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv

MCP-Clients akzeptieren diese Konfiguration auf verschiedene Weise. Weitere Informationen finden Sie in der Dokumentation ihres ausgewählten Kunden. Das folgende Beispiel zeigt eine mcp.json Datei wie die Konfiguration von MCP-Servern für GitHub Copilot in Visual Studio Code. Im Beispiel werden zwei Server eingerichtet, die beide den Streamable HTTP-Transport verwenden. Die erste ist für lokale Tests mit den Azure Functions Core Tools. Die zweite ist für eine in Azure gehostete Funktions-App. Die Konfiguration verwendet Eingabeparameter, für die Visual Studio Code Sie beim ersten Ausführen des Remoteservers auffordert. Durch die Verwendung von Eingaben wird sichergestellt, dass geheime Schlüssel wie der Systemschlüssel nicht in der Datei gespeichert und in die Quellcodeverwaltung eingecheckt werden.

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