Udostępnij za pomocą


Zdalny serwer MCP hostowany samodzielnie w usłudze Azure Functions (publiczna wersja zapoznawcza)

Usługa Azure Functions udostępnia dwa sposoby hostowania zdalnych serwerów MCP:

Przy pierwszym podejściu można użyć modelu programowania usługi Azure Functions z wyzwalaczami i powiązaniami w celu utworzenia serwera MCP. Następnie można hostować serwer zdalnie poprzez wdrożenie do aplikacji Azure Functions.

Jeśli masz już serwer MCP utworzony za pomocą oficjalnych zestawów SDK MCP i chcesz go hostować zdalnie, drugie podejście prawdopodobnie odpowiada Twoim potrzebom. Nie musisz wprowadzać żadnych zmian w kodzie na serwerze, aby hostować go w usłudze Azure Functions. Zamiast tego można dodać wymagane artefakty usługi Functions, a serwer jest gotowy do wdrożenia. W związku z tym te serwery są nazywane własnymi serwerami MCP.

Diagram przedstawiający hostowanie aplikacji Function i niestandardowych aplikacji obsługujących.

Ten artykuł zawiera omówienie własnych serwerów MCP oraz linki do odpowiednich artykułów i przykładów.

Niestandardowe procedury obsługi

Własne serwery MCP są wdrażane na platformie Azure Functions jako niestandardowe programy obsługi. Niestandardowe programy obsługi to lekkie serwery internetowe, które odbierają zdarzenia z hosta usługi Functions. Zapewniają one sposób uruchamiania w aplikacjach platformy Functions utworzonych za pomocą struktur innych niż model programowania usługi Functions lub w językach, które nie są obsługiwane w ramach gotowego rozwiązania. Aby uzyskać więcej informacji, zobacz Niestandardowe programy obsługi usługi Azure Functions.

Podczas wdrażania serwera opartego na zestawie MCP SDK w usłudze Azure Functions należy uwzględnić host.json w projekcie. Minimalna host.json wygląda następująco:

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

Uwaga / Notatka

Ponieważ ładunek wdrożony w usłudze Azure Functions jest zawartością bin/output katalogu, ścieżka do skompilowanej biblioteki DLL jest względna względem tego katalogu, a nie katalogu głównego projektu.

Przykład nie jest jeszcze dostępny.

configuration Profile Użycie wartości mcp-custom-handler automatycznie konfiguruje te ustawienia hosta usługi Functions, które są wymagane do uruchamiania serwera MCP w usłudze Azure Functions:

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

W tym przykładzie przedstawiono plik host.json z dodatkowymi niestandardowymi właściwościami procedury obsługi ustawionymi zgodnie z profilem 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"
                }
            ]
        }
    }
}

W tej tabeli opisano właściwości elementu customHandler.httpwraz z wartościami domyślnymi:

Majątek Do czego służy Wartość domyślna
enableProxying Określa sposób, w jaki host usługi Azure Functions obsługuje żądania HTTP do niestandardowych procedur obsługi. Gdy enableProxying jest ustawiony na true, host Functions działa jako odwrotny serwer proxy i przekazuje całe żądanie HTTP (w tym nagłówki, treść, parametry zapytania) bezpośrednio do niestandardowej obsługi. To ustawienie zapewnia dedykowanemu programowi obsługi pełny dostęp do pierwotnych danych żądania HTTP.

Gdy enableProxying jest false, host usługi Functions najpierw przetwarza żądanie i przekształca je w format żądania/odpowiedzi usługi Azure Functions przed przekazaniem go do niestandardowego modułu obsługi.
false
defaultAuthorizationLevel Określa wymagania uwierzytelniania dla uzyskania dostępu do niestandardowych punktów końcowych obsługi. Na przykład function wymaga klucza interfejsu API specyficznego dla funkcji w celu uzyskania dostępu. Aby uzyskać więcej informacji, zobacz poziomy autoryzacji. function
route Określa wzorzec ścieżki adresu URL, na który odpowiada program obsługi niestandardowej. {*route} Odpowiada każdej ścieżce adresu URL (takiej jak /, /mcp, /api/tools lub /anything/nested/path) i przekazuje żądanie do niestandardowej procedury obsługi. {*route}

Wbudowane uwierzytelnianie serwera

Uwierzytelnianie oparte na protokole OAuth i autoryzacja udostępniane przez platformę App Service implementuje wymagania specyfikacji autoryzacji MCP, takie jak wystawianie wyzwania 401 i uwidacznianie dokumentu metadanych zasobów chronionych (PRM). Po włączeniu wbudowanego uwierzytelniania klienci próbujący uzyskać dostęp do serwera są przekierowywani do dostawców tożsamości, takich jak Microsoft Entra ID na potrzeby uwierzytelniania przed nawiązaniem połączenia.

Aby uzyskać więcej informacji, zobacz Konfigurowanie wbudowanej autoryzacji serwera (wersja zapoznawcza) i Hostowanie serwerów MCP w usłudze Azure Functions.

Integracje agentów usługi Azure AI Foundry

Agentów w narzędziu Azure AI Foundry można skonfigurować do używania narzędzi na serwerach MCP hostowanych w usłudze Azure Functions.

Rejestrowanie serwera w Centrum interfejsów API platformy Azure

Podczas rejestrowania serwera MCP w Centrum interfejsu API platformy Azure tworzysz prywatny wykaz narzędzi organizacyjnych. Takie podejście jest zalecane w przypadku udostępniania serwerów MCP w całej organizacji ze spójnym ładem i możliwościami odnajdywania. Aby uzyskać więcej informacji, zobacz Rejestrowanie serwerów MCP hostowanych w usłudze Azure Functions w Centrum interfejsu API platformy Azure.

Obsługa publicznej wersji zapoznawczej

Możliwość hostowania własnych serwerów MCP opartych na zestawie SDK w usłudze Functions jest obecnie dostępna w wersji zapoznawczej i obsługuje następujące funkcje:

  • Serwery bezstanowe wykorzystujące transport streamable-http. Jeśli chcesz, aby serwer był stanowy, rozważ użycie rozszerzenia MCP usługi Functions.
  • Serwery zaimplementowane przy użyciu zestawów SDK MCP języka Python, TypeScript, C# lub Java.
  • Podczas uruchamiania projektu lokalnie musisz użyć Azure Functions Core Tools (func start). Obecnie nie można użyć F5 do rozpoczęcia pracy z debugerem.
  • Serwery muszą być hostowane jako aplikacje planu Flex Consumption.

Samples

Jeszcze nie jest dostępny.

Niestandardowe programy obsługi usługi Azure Functions