Sdílet prostřednictvím


Přehled vazeb protokolu context modelu pro Azure Functions

Protokol MCP (Model Context Protocol) je protokol klienta-server, který umožňuje jazykovým modelům a agentům efektivněji zjišťovat a používat externí zdroje a nástroje dat.

Rozšíření Azure Functions MCP umožňuje používat Azure Functions k vytváření vzdálených serverů MCP. Tyto servery můžou hostovat funkce aktivačních událostí nástroje MCP, které klienti MCP, jako jsou jazykové modely a agenti, můžou dotazovat a přistupovat k určitým úlohám.

Action Typ
Spuštění funkce z žádosti o volání nástroje MCP Trigger

Important

Rozšíření MCP v současné době nepodporuje aplikace PowerShellu.

Prerequisites

  • Vyžaduje verzi 2.1.0 nebo novější balíčku Microsoft.Azure.Functions.Worker .
  • Vyžaduje verzi 2.0.2 nebo novější balíčku Microsoft.Azure.Functions.Worker.Sdk .

Instalace rozšíření

Note

V jazyce C# rozšíření Azure Functions MCP podporuje pouze izolovaný pracovní model.

Přidejte do projektu rozšíření instalací tohoto balíčku NuGet upřednostňovaným způsobem:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Instalace sady

Pokud chcete v aplikaci použít toto rozšíření vazeb, ujistěte se, že soubor host.json v kořenovém adresáři projektu obsahuje tento extensionBundle odkaz:

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

V tomto příkladu version hodnota [4.0.0, 5.0.0) dává hostiteli Functions pokyn, aby používal verzi sady, která je alespoň 4.0.0 , ale menší než 5.0.0, která zahrnuje všechny potenciální verze 4.x. Tato notace efektivně udržuje vaši aplikaci na nejnovější dostupné podverzi sady rozšíření v4.x.

Pokud je to možné, měli byste použít nejnovější hlavní verzi sady rozšíření a umožnit modulu runtime automaticky udržovat nejnovější podverzi. Obsah nejnovější sady můžete zobrazit na stránce verze sady rozšíření. Další informace najdete v sadách rozšíření Azure Functions.

nastavení host.json

Tato část popisuje nastavení konfigurace dostupné pro tuto vazbu ve verzi 2.x a novější. Nastavení v souboru host.json platí pro všechny funkce v instanci aplikace funkcí. Další informace o nastavení konfigurace aplikace funkcí najdete v host.json referenčních informacích ke službě Azure Functions.

Pomocí části v extensions.mcp této části můžete host.json definovat informace o serveru MCP.

{
  "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 Popisuje klienty, jak získat přístup ke vzdálenému serveru MCP.
serverName Popisný název vzdáleného serveru MCP.
serverVersion Aktuální verze vzdáleného serveru MCP
encryptClientState Určuje, jestli je stav klienta šifrovaný. Výchozí hodnota je true. Nastavení na false může být užitečné pro scénáře ladění a testování, ale nedoporučuje se pro produkční prostředí.
messageOptions Objekt Options pro koncový bod zprávy v přenosu SSE.
messageOptions.UseAbsoluteUriForEndpoint Výchozí hodnota je false. Vztahuje se pouze na přenos událostí odesílaných serverem (SSE); toto nastavení nemá vliv na přenos HTTP s možností streamování. Pokud je nastavená hodnota false, koncový bod zprávy se během počátečních připojení přes přenos SSE poskytuje jako relativní identifikátor URI. Pokud je nastavená hodnota true, koncový bod zprávy se vrátí jako absolutní identifikátor URI. Použití relativního identifikátoru URI se nedoporučuje, pokud k tomu nemáte konkrétní důvod.
systém Objekt Options pro konfiguraci na úrovni systému.
system.webhookAuthorizationLevel Definuje úroveň autorizace vyžadovanou pro koncový bod webhooku. Výchozí hodnota je "System". Povolené hodnoty jsou "System" a "Anonymous". Když nastavíte hodnotu na Anonymní, přístupový klíč už není vyžadován pro požadavky. Bez ohledu na to, jestli je klíč povinný nebo ne, můžete jako vrstvu řízení přístupu na základě identity použít integrovanou autorizaci serveru MCP .

Připojení k serveru MCP

Pokud se chcete připojit k serveru MCP vystaveného vaší aplikací funkcí, musíte klientovi MCP poskytnout příslušné informace o koncovém bodu a přenosu. Následující tabulka ukazuje přenosy podporované rozšířením MCP služby Azure Functions spolu s odpovídajícím koncovým bodem připojení.

Transport Endpoint
Streamovatelné HTTP /runtime/webhooks/mcp
události Server-Sent (SSE)1 /runtime/webhooks/mcp/sse

1 Novější verze protokolu vyřadily přenos událostí Server-Sent. Pokud to váš klient výslovně nevyžaduje, měli byste místo toho použít přenos HTTP streamable.

Při hostování v Azure ve výchozím nastavení vyžadují koncové body zveřejněné rozšířením také systémový klíč s názvem mcp_extension. Pokud není zadaný v x-functions-key hlavičce HTTP nebo v parametru code řetězce dotazu, klient obdrží 401 Unauthorized odpověď. Tento požadavek můžete odebrat nastavením system.webhookAuthorizationLevel vlastnosti host.json na Anonymoushodnotu . Další informace najdete v části nastaveníhost.json .

Klíč můžete načíst pomocí některé z metod popsaných v části Získání přístupových klíčů funkce. Následující příklad ukazuje, jak získat klíč pomocí Azure CLI:

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

Klienti MCP tuto konfiguraci přijímají různými způsoby. Projděte si dokumentaci ke zvolenému klientovi. Následující příklad ukazuje soubor, mcp.json který můžete použít ke konfiguraci serverů MCP pro GitHub Copilot v editoru Visual Studio Code. Příklad nastaví dva servery, oba pomocí přenosu HTTP Streamable. Prvním je místní testování pomocí nástrojů Azure Functions Core Tools. Druhým je aplikace funkcí hostovaná v Azure. Konfigurace přebírá vstupní parametry, pro které vás Visual Studio Code vyzve při prvním spuštění vzdáleného serveru. Použití vstupů zajišťuje, že tajné kódy, jako je systémový klíč, se neuloží do souboru a budou vráceny se změnami do správy zdrojového kódu.

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