Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Functions bietet zwei Möglichkeiten zum Hosten von Remote-MCP-Servern:
- MCP-Server, die mit der McP-Erweiterung "Functions" erstellt wurden
- MCP-Server, die mit den offiziellen MCP-SDKs erstellt wurden
Mit dem ersten Ansatz können Sie das Azure Functions-Programmiermodell mit Triggern und Bindungen verwenden, um den MCP-Server zu erstellen. Anschließend können Sie den Server remote hosten, indem Sie ihn in einer Funktions-App bereitstellen.
Wenn Sie bereits über einen MCP-Server verfügen, der mit den offiziellen MCP-SDKs erstellt wurde und sie nur remote hosten möchten, entspricht der zweite Ansatz wahrscheinlich Ihren Anforderungen. Sie müssen keine Codeänderungen am Server vornehmen, um sie auf Azure Functions zu hosten. Stattdessen können Sie die erforderlichen Functions-Artefakte hinzufügen, und der Server ist bereit zur Bereitstellung. Als solche werden diese Server als selbst gehostete MCP-Server bezeichnet.
Dieser Artikel enthält eine Übersicht über selbst gehostete MCP-Server und Links zu relevanten Artikeln und Beispielen.
Benutzerdefinierte Handler
Selbst gehostete MCP-Server werden als benutzerdefinierte Handler auf der Azure Functions-Plattform bereitgestellt. Benutzerdefinierte Handler sind schlanke Webserver, die Ereignisse vom Functions-Host empfangen. Sie bieten eine Möglichkeit, auf der Functions-Plattform Anwendungen auszuführen, die mit Frameworks erstellt wurden, die sich vom Programmiermodell der Functions unterscheiden, oder in Sprachen geschrieben sind, die nicht nativ unterstützt werden. Weitere Informationen finden Sie unter Benutzerdefinierte Azure Functions-Handler.
Wenn Sie einen MCP SDK-basierten Server in Azure Functions bereitstellen, müssen Sie eine host.json in Ihr Projekt einschließen. Die minimale host.json sieht wie folgt aus:
{
"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>"
}
}
Hinweis
Da die in Azure Functions bereitgestellte Nutzlast der Inhalt des bin/output Verzeichnisses ist, ist der Pfad zur kompilierten DLL relativ zu diesem Verzeichnis, nicht zum Projektstamm.
Beispiel noch nicht verfügbar.
Die Verwendung eines configuration Profile Werts von mcp-custom-handler konfiguriert automatisch diese Funktionen-Hosteinstellungen, die für die Ausführung Ihres MCP-Servers in Azure Functions erforderlich sind:
-
http.enableProxyingbistrue -
http.routesbis[{ "route": "{*route}" }] -
extensions.http.routePrefixbis""
Dieses Beispiel zeigt eine Datei host.json mit zusätzlichen benutzerdefinierten Handlereigenschaften, die dem Profil mcp-custom-handler entsprechen gesetzt werden:
{
"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 dieser Tabelle werden die Eigenschaften von customHandler.http, zusammen mit Standardwerten erläutert:
| Eigentum | Funktionsbeschreibung | Standardwert |
|---|---|---|
enableProxying |
Steuert, wie der Azure Functions-Host HTTP-Anforderungen an benutzerdefinierte Handler verarbeitet. Wenn enableProxying auf true festgelegt ist, fungiert der Functions-Host als Reverse-Proxy und leitet die gesamte HTTP-Anforderung (einschließlich Header, Body, Abfrageparameter) direkt an den benutzerdefinierten Handler weiter. Diese Einstellung ermöglicht dem benutzerdefinierten Handler vollzugriff auf die ursprünglichen HTTP-Anforderungsdetails. Wenn enableProxyingfalse ist, verarbeitet der Functions-Host zuerst die Anforderung und wandelt sie in das Anforderungs-/Antwortformat von Azure Functions um, bevor sie an den benutzerdefinierten Handler übergeben wird. |
false |
defaultAuthorizationLevel |
Steuert die Authentifizierungsanforderung für den Zugriff auf benutzerdefinierte Handlerendpunkte. Erfordert beispielsweise function einen funktionsspezifischen API-Schlüssel für den Zugriff. Weitere Informationen finden Sie unter Autorisierungsstufen. |
function |
route |
Gibt das URL-Pfadmuster an, auf das der benutzerdefinierte Handler reagiert.
{*route} passt zu jedem URL-Pfad (z. B. /, /mcp, /api/tools oder /anything/nested/path) und leitet die Anforderung an den benutzerdefinierten Handler weiter. |
{*route} |
Integrierte Serverauthentifizierung
OAuth-basierte Authentifizierung und Autorisierung, die von der App Service-Plattform bereitgestellt wird, implementiert die Anforderungen der MCP-Autorisierungsspezifikation, z. B. ausstellen von 401-Herausforderungen und Verfügbarmachen des Dokuments für geschützte Ressourcenmetadaten (Protected Resource Metadata, PRM). Wenn Sie die integrierte Authentifizierung aktivieren, werden Clients, die versuchen, auf den Server zuzugreifen, an Identitätsanbieter wie Microsoft Entra ID zur Authentifizierung umgeleitet, bevor Sie eine Verbindung herstellen.
Weitere Informationen finden Sie unter Configure built-in server authorization (preview) und Hosting MCP servers on Azure Functions.
Azure AI Foundry Agent-Integrationen
Agents in Azure AI Foundry können für die Verwendung von Tools in MCP-Servern konfiguriert werden, die in Azure-Funktionen gehostet werden.
Registrieren Ihres Servers im Azure API Center
Wenn Sie Ihren MCP-Server im Azure API Center registrieren, erstellen Sie einen privaten Toolkatalog der Organisation. Dieser Ansatz wird für die Bereitstellung von MCP-Servern zwischen Ihrer Organisation mit konsistenter Governance und Auffindbarkeit empfohlen. Weitere Informationen finden Sie unter Registrieren von MCP-Servern, die in Azure Functions im Azure API Center gehostet werden.
Unterstützung für öffentliche Vorschau
Die Möglichkeit zum Hosten eigener SDK-basierter MCP-Server in Funktionen befindet sich derzeit in der Vorschau und unterstützt diese Features:
- Zustandslose Server, die den streambaren HTTP-Transport verwenden. Wenn der Server zustandsbehaftet sein muss, sollten Sie die MCP-Erweiterung „Functions“ verwenden.
- Server, die mit den Python-, TypeScript-, C#- oder Java MCP-SDKs implementiert sind.
- Wenn Sie das Projekt lokal ausführen, müssen Sie die Azure Functions Core Tools (
func startBefehl) verwenden. Derzeit können SieF5nicht verwenden, um die Ausführung mit dem Debugger zu starten. - Server müssen als Flex-Verbrauchsplan-Apps gehostet werden.
Beispiele
Noch nicht verfügbar.