Lokalt installerad fjärr-MCP-server på Azure Functions (offentlig förhandsversion)

Azure Functions tillhandahåller två sätt att vara värd för fjärranslutna MCP-servrar:

Med den första metoden kan du använda Azure Functions-programmeringsmodellen med utlösare och bindningar för att skapa MCP-servern. Sedan kan du fjärrhantera servern genom att distribuera den till en funktionsapp.

Om du redan har en MCP-server som skapats med de officiella MCP-SDK:erna och bara vill vara värd för den via fjärranslutning passar den andra metoden förmodligen dina behov. Du behöver inte göra några kodändringar på servern som värd för den i Azure Functions. I stället kan du lägga till nödvändiga Functions-artefakter och servern är redo att distribueras. Därför kallas dessa servrar för lokalt installerade MCP-servrar.

Diagram som visar värd för funktionsappen och anpassade hanteringsappar.

Den här artikeln innehåller en översikt över MCP-servrar med egen värd och länkar till relevanta artiklar och exempel.

Anpassade hanterare

McP-servrar med egen värd distribueras till Azure Functions-plattformen som anpassade hanterare. Anpassade hanterare är lätta webbservrar som tar emot händelser från Functions-värden. De är ett sätt att köra på Functions-plattformsprogram som skapats med ramverk som skiljer sig från programmeringsmodellen Functions eller på språk som inte stöds direkt. Mer information finns i Anpassade Azure Functions-hanterare.

När du distribuerar en MCP SDK-baserad server till Azure Functions måste du inkludera en host.json i projektet. Den minimala host.json ser ut så här:

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

Anmärkning

Eftersom nyttolasten som distribueras till Azure Functions är innehållet i bin/output katalogen är sökvägen till den kompilerade DLL-filen relativ till den katalogen, inte till projektroten.

Exempel är ännu inte tillgängligt.

Användning av värdet configuration Profilemcp-custom-handler konfigurerar automatiskt dessa värdinställningar för Functions, vilka krävs för att köra din MCP-server i Azure Functions.

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

Det här exemplet visar en host.json fil med extra anpassade hanteringsegenskaper som är inställda på samma sätt som med profilen mcp-custom-handler :

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

I den här tabellen förklaras customHandler.httpegenskaperna för , tillsammans med standardvärden:

Fastighet Vad det gör Standardvärde
enableProxying Styr hur Azure Functions-värden hanterar HTTP-begäranden till anpassade hanterare. När enableProxying är inställt på truefungerar Functions-värden som en omvänd proxy och vidarebefordrar hela HTTP-begäran (inklusive rubriker, brödtext, frågeparametrar) direkt till den anpassade hanteraren. Den här inställningen ger den anpassade hanteraren fullständig åtkomst till den ursprungliga HTTP-begärandeinformationen.

När enableProxying är falsebearbetar Functions-värden begäran först och omvandlar den till Azure Functions-format för begäran/svar innan den skickas till den anpassade hanteraren.
false
defaultAuthorizationLevel Styr autentiseringskravet för åtkomst till anpassade hanteringsslutpunkter. Till exempel function kräver en funktionsspecifik API-nyckel för åtkomst. Mer information finns i auktoriseringsnivåer. function
route Anger det URL-sökvägsmönster som den anpassade hanteraren svarar på. {*route} matchar alla URL-sökvägar (till exempel /, /mcp, /api/toolseller /anything/nested/path) och vidarebefordrar begäran till den anpassade hanteraren. {*route}

Inbyggd serverautentisering

OAuth-baserad autentisering och auktorisering som tillhandahålls av App Service-plattformen implementerar kraven i MCP-auktoriseringsspecifikationen, till exempel att utfärda 401-utmaning och exponera dokumentet med skyddade resursmetadata (PRM). När du aktiverar inbyggd autentisering omdirigeras klienter som försöker komma åt servern till identitetsprovidrar som Microsoft Entra-ID för autentisering innan de ansluter.

För mer information, se Konfigurera inbyggd serverauktorisering (förhandsversion) och Värdskap för MCP-servrar på Azure Functions.

Azure AI Foundry-agentintegreringar

Agenter i Azure AI Foundry kan konfigureras för att använda verktyg i MCP-servrar som finns i Azure Functions.

Registrera servern i Azure API Center

När du registrerar MCP-servern i Azure API Center skapar du en katalog för privata organisationsverktyg. Den här metoden rekommenderas för att dela MCP-servrar i organisationen med konsekvent styrning och identifiering. Mer information finns i Registrera MCP-servrar som finns i Azure Functions i Azure API Center.

Stöd för offentlig förhandsversion

Möjligheten att vara värd för dina egna SDK-baserade MCP-servrar i Functions är för närvarande i förhandsversion och stöder följande funktioner:

  • Tillståndslösa servrar som använder streamable-http-transporten . Om du vill att servern ska vara tillståndskänslig bör du överväga att använda Functions MCP-tillägget.
  • Servrar som implementeras med SDK:erna Python, TypeScript, C# eller Java MCP.
  • När du kör projektet lokalt måste du använda Kommandot Azure Functions Core Tools (func start ). Du kan för närvarande inte använda F5 för att börja köra med felsökningsprogrammet.
  • Servrar måste vara värdar för Flexförbrukningsplan appar.

Samples

Inte tillgänglig än.

Anpassade Azure Functions-hanterare