Delen via


Zelf-gehoste externe MCP-server in Azure Functions (openbare preview)

Azure Functions biedt twee manieren om externe MCP-servers te hosten:

Met de eerste benadering kunt u het Azure Functions-programmeermodel gebruiken met triggers en bindingen om de MCP-server te bouwen. Vervolgens kunt u de server extern hosten door deze te implementeren in een functie-app.

Als u al een MCP-server hebt gemaakt met de officiële MCP-SDK's en deze alleen op afstand wilt hosten, past de tweede benadering waarschijnlijk aan uw behoeften. U hoeft geen codewijzigingen aan te brengen op de server om deze te hosten in Azure Functions. In plaats daarvan kunt u de vereiste Functions-artefacten toevoegen en de server is klaar om te worden geïmplementeerd. Als zodanig worden deze servers aangeduid als zelf-hostende MCP-servers.

Diagram met het hosten van Function-app en Custom Handler-apps.

Dit artikel bevat een overzicht van zelf-hostende MCP-servers en koppelingen naar relevante artikelen en voorbeelden.

Aangepaste handlers

Zelfgehoste MCP-servers worden uitgerold op het Azure Functions-platform als aangepaste handlers. Aangepaste handlers zijn lichtgewicht webservers die gebeurtenissen ontvangen van de Functions-host. Ze bieden een manier om te worden uitgevoerd op de Functions-platformtoepassingen die zijn gebouwd met frameworks die afwijken van het Functions-programmeermodel of in talen die niet standaard worden ondersteund. Zie aangepaste handlers van Azure Functions voor meer informatie.

Wanneer u een MCP SDK-server implementeert in Azure Functions, moet u een host.json opnemen in uw project. De minimale host.json ziet er als volgt uit:

{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "python",
            "arguments": ["Path to main script file, e.g. hello_world.py"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "npm",
            "arguments": ["run", "start"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "dotnet",
            "arguments": ["Path to the compiled DLL, e.g. HelloWorld.dll"] 
        },
        "port": "<MCP server port>"
    }
}

Opmerking

Omdat de payload die is geïmplementeerd in Azure Functions de inhoud van de bin/output map is, is het pad naar de gecompileerde DLL relatief tot die map, niet tot de hoofdmap van het project.

Voorbeeld is nog niet beschikbaar.

Met een waarde van configuration Profile voor mcp-custom-handler configureert u automatisch deze Functions host-instellingen, die nodig zijn om uw MCP-server in Azure Functions uit te voeren.

  • http.enableProxying tot en met true
  • http.routes tot en met [{ "route": "{*route}" }]
  • extensions.http.routePrefix tot en met ""

In dit voorbeeld ziet u een host.json bestand met extra aangepaste handlereigenschappen die gelijk zijn aan het gebruik van het mcp-custom-handler profiel:

{
    "version": "2.0",
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    },
    "customHandler": {
        "description": {
            "defaultExecutablePath": "",
            "arguments": [""]
        },
        "http": {
            "enableProxying": true, 
            "defaultAuthorizationLevel": "anonymous", 
            "routes": [ 
                {
                    "route": "{*route}",
                    // Default authorization level is `defaultAuthorizationLevel`
                },
                {
                    "route": "admin/{*route}",
                    "authorizationLevel": "admin"
                }
            ]
        }
    }
}

In deze tabel worden de eigenschappen van customHandler.http, samen met standaardwaarden uitgelegd:

Vastgoed Wat het doet Standaardwaarde
enableProxying Hiermee bepaalt u hoe de Azure Functions-host HTTP-aanvragen verwerkt voor aangepaste handlers. Wanneer enableProxying is ingesteld op true, fungeert de Functions-host als een omgekeerde proxy en stuurt de volledige HTTP-aanvraag (inclusief headers, body, queryparameters) rechtstreeks door naar de aangepaste handler. Met deze instelling krijgt de aangepaste handler volledige toegang tot de oorspronkelijke HTTP-aanvraagdetails.

Wanneer enableProxying is false, verwerkt de Functions-host de aanvraag eerst en transformeert deze in de Azure Functions-aanvraag-/-antwoordindeling voordat deze wordt doorgegeven aan de aangepaste handler.
false
defaultAuthorizationLevel Hiermee bepaalt u de verificatievereiste voor toegang tot aangepaste handler-eindpunten. Hiervoor is bijvoorbeeld function een functiespecifieke API-sleutel vereist voor toegang. Zie autorisatieniveaus voor meer informatie. function
route Hiermee geeft u het URL-padpatroon op waarop de aangepaste handler reageert. {*route}komt overeen met een URL-pad (zoals /, /mcpof /api/tools/anything/nested/path) en stuurt de aanvraag door naar de aangepaste handler. {*route}

Ingebouwde serververificatie

Verificatie en autorisatie op basis van OAuth die door het App Service-platform worden geleverd, implementeert de vereisten van de MCP-autorisatiespecificatie, zoals het uitgeven van 401-vraag en het weergeven van het PRM-document (Protected Resource Metadata). Wanneer u ingebouwde verificatie inschakelt, worden clients die toegang proberen te krijgen tot de server omgeleid naar id-providers zoals Microsoft Entra ID voor verificatie voordat ze verbinding maken.

Zie Ingebouwde serverautorisatie (preview) configureren en MCP-servers hosten op Azure Functions voor meer informatie.

Integraties van de Azure AI Foundry-agent

Agents in Azure AI Foundry kunnen worden geconfigureerd voor het gebruik van hulpprogramma's in MCP-servers die worden gehost in Azure Functions.

Uw server registreren in Azure API Center

Wanneer u uw MCP-server registreert in Azure API Center, maakt u een persoonlijke organisatiehulpprogrammacatalogus. Deze benadering wordt aanbevolen voor het delen van MCP-servers binnen uw organisatie met consistente governance en vindbaarheid. Zie MCP-servers registreren die worden gehost in Azure Functions in Azure API Center voor meer informatie.

Ondersteuning voor openbare preview

De mogelijkheid om uw eigen OP SDK gebaseerde MCP-servers in Functions te hosten, is momenteel in preview en biedt ondersteuning voor deze functies:

  • Staatloze servers die gebruikmaken van het streamable http-transport . Als u wilt dat uw server stateful is, kunt u overwegen om de Functions MCP-extensie te gebruiken.
  • Servers die zijn geïmplementeerd met de Python-, TypeScript-, C#- of Java MCP-SDK's.
  • Wanneer u het project lokaal uitvoert, moet u de Azure Functions Core Tools (func start opdracht) gebruiken. U kunt momenteel niet gebruiken F5 om te beginnen met het foutopsporingsprogramma.
  • Servers moeten worden gehost als Flex Consumption plan-apps.

Samples

Nog niet beschikbaar.

Aangepaste handlers van Azure Functions