Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het Model Context Protocol (MCP) is een client-serverprotocol dat is bedoeld om taalmodellen en agents efficiënter te laten detecteren en gebruiken van externe gegevensbronnen en hulpprogramma's.
Met de MCP-extensie van Azure Functions kunt u Azure Functions gebruiken om externe MCP-servers te maken. Deze servers kunnen triggerfuncties voor MCP-hulpprogramma's hosten, die MCP-clients, zoals taalmodellen en agents, query's kunnen uitvoeren en toegang kunnen krijgen tot specifieke taken.
| Action | Type | 
|---|---|
| Een functie uitvoeren vanuit een MCP-aanvraag voor het aanroepen van hulpprogramma's | Trigger | 
Important
De MCP-extensie biedt momenteel geen ondersteuning voor PowerShell-apps.
Prerequisites
- Wanneer u het SSE-transport gebruikt, is de MCP-extensie afhankelijk van Azure Queue Storage die wordt geleverd door het standaardhostopslagaccount (AzureWebJobsStorage). Wanneer u op identiteit gebaseerde verbindingen gebruikt, moet u ervoor zorgen dat uw functie-app ten minste het equivalent heeft van deze op rollen gebaseerde machtigingen in het hostopslagaccount: Storage Queue Data Reader en Storage Queue Data Message Processor.
- Wanneer de MCP-extensie lokaal wordt uitgevoerd, is versie 4.0.7030 van de Azure Functions Core Tools of een latere versie vereist.
- Vereist versie 2.1.0 of hoger van het Microsoft.Azure.Functions.Workerpakket.
- Vereist versie 2.0.2 of hoger van het Microsoft.Azure.Functions.Worker.Sdkpakket.
Extensie installeren
Note
Voor C# ondersteunt de McP-extensie van Azure Functions alleen het geïsoleerde werkrolmodel.
Voeg de extensie toe aan uw project door dit NuGet-pakket op de gewenste manier te installeren:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- Vereist versie 3.2.1 of hoger van de azure-functions-java-libraryafhankelijkheid.
- Vereist versie-TBD of hoger van de azure-functions-maven-pluginafhankelijkheid.
- Vereist versie 4.8.0 of hoger van de @azure/functionsafhankelijkheid
- Vereist versie 1.24.0 of hoger van het azure-functionspakket.
Bundel installeren
Als u deze bindingsextensie in uw app wilt kunnen gebruiken, moet u ervoor zorgen dat het host.json bestand in de hoofdmap van uw project deze extensionBundle verwijzing bevat:
{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}
In dit voorbeeld geeft de version waarde van [4.0.0, 5.0.0) de Functions-host opdracht om een bundelversie te gebruiken die ten minste 4.0.0 maar kleiner is dan 5.0.0, die alle mogelijke versies van 4.x bevat. Deze notatie onderhoudt uw app effectief op de nieuwste beschikbare secundaire versie van de v4.x-extensiebundel.
Indien mogelijk moet u de meest recente primaire versie van de extensiebundel gebruiken en toestaan dat de runtime automatisch de meest recente secundaire versie onderhoudt. U kunt de inhoud van de meest recente bundel bekijken op de releasepagina voor extensiebundels. Zie Azure Functions-extensiebundels voor meer informatie.
Voor de MCP-extensie is specifiek bundelversie 4.28.0 of hoger vereist. U kunt ervoor zorgen dat u deze versie krijgt door deze op te geven als de minimale versie in uw host.json bestand:
{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.28.0, 5.0.0)"
  }
}
host.json-instellingen
In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json zijn van toepassing op alle functies in een exemplaar van een functie-app. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps.
U kunt de extensions.mcp sectie gebruiken om host.json MCP-servergegevens te definiëren.
{
  "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 | Hierin wordt beschreven hoe clients toegang krijgen tot de externe MCP-server. | 
| serverName | Een beschrijvende naam voor de externe MCP-server. | 
| serverVersion | Huidige versie van de externe MCP-server. | 
| encryptClientState | Bepaalt of de clientstatus is versleuteld. De standaardwaarde is true. Het instellen op false is mogelijk handig voor foutopsporing en testscenario's, maar wordt niet aanbevolen voor productie. | 
| messageOptions | Optiesobject voor het berichteindpunt in het SSE-transport. | 
| messageOptions.UseAbsoluteUriForEndpoint | Standaardwaarde is false. Alleen van toepassing op het door de server verzonden gebeurtenissen (SSE) transport; deze instelling heeft geen invloed op het Streamable HTTP-transport. Als dit is ingesteldfalse, wordt het berichteindpunt opgegeven als een relatieve URI tijdens de eerste verbindingen via het SSE-transport. Als dit is ingesteldtrue, wordt het berichteindpunt geretourneerd als een absolute URI. Het gebruik van een relatieve URI wordt niet aanbevolen, tenzij u een specifieke reden hebt om dit te doen. | 
Verbinding maken met uw MCP-server
Als u verbinding wilt maken met de MCP-server die door uw functie-app wordt weergegeven, moet u een MCP-client met het juiste eindpunt en transportinformatie opgeven. In de volgende tabel ziet u de transporten die worden ondersteund door de MCP-extensie van Azure Functions, samen met het bijbehorende verbindingseindpunt.
| Transport | Eindpunt | 
|---|---|
| Streamable HTTP | /runtime/webhooks/mcp | 
| Server-Sent gebeurtenissen (SSE)1 | /runtime/webhooks/mcp/sse | 
1 Nieuwere protocolversies hebben het transport van Server-Sent Gebeurtenissen afgeschaft. Tenzij uw client dit specifiek vereist, moet u in plaats daarvan het streambare HTTP-transport gebruiken.
Wanneer deze worden gehost in Azure, is voor de eindpunten die door de extensie worden weergegeven, ook de systeemsleutel met de naam mcp_extensionvereist. Als deze niet is opgegeven in de x-functions-key HTTP-header of in de code querytekenreeksparameter, ontvangt uw client een 401 Unauthorized antwoord. U kunt de sleutel ophalen met behulp van een van de methoden die worden beschreven in Toegangssleutels voor uw functie ophalen. In het volgende voorbeeld ziet u hoe u de sleutel kunt ophalen met de Azure CLI:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
MCP-clients accepteren deze configuratie op verschillende manieren. Raadpleeg de documentatie voor de door u gekozen klant. In het volgende voorbeeld ziet u een mcp.json bestand dat u kunt gebruiken om MCP-servers te configureren voor GitHub Copilot in Visual Studio Code. In het voorbeeld worden twee servers ingesteld, beide met behulp van het Streamable HTTP-transport. De eerste is voor lokaal testen met de Azure Functions Core Tools. De tweede is voor een functie-app die wordt gehost in Azure. De configuratie gebruikt invoerparameters waarvoor Visual Studio Code u vraagt wanneer u de externe server voor het eerst uitvoert. Door invoer te gebruiken, zorgt u ervoor dat geheimen zoals de systeemsleutel niet worden opgeslagen in het bestand en worden ingecheckt in broncodebeheer.
{
    "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}"
            }
        }
    }
}