MCP服务器远程托管功能

Azure Functions提供无需代码更改即可远程托管基于MCP SDK构建的服务器的能力,支持自动基础设施配置和服务器部署。

  • by Azure-Samples
  • Bicep
  • 本地部署
  • 更新于
在 GitHub 查看 Azure-Samples/self-hosted-mcp-scaffold-dotnet

使用说明

基于MCP SDK的远程服务器的Azure Functions脚手架(C#)

Azure Functions允许您远程托管使用官方MCP SDK构建的服务器,无需更改代码。如果您已经使用C#MCP SDK构建了服务器,请使用此脚手架快速远程托管服务器。脚手架包含所需的Azure Function工件,以及用于自动基础设施配置和服务器部署的二头肌文件。 Bicep 是一种特定于域的语言,它使用声明性语法来部署Azure资源。

遵循中的说明 mcp-sdk函数托管的.NET仓库 利用此脚手架托管远程MCP服务器。

[!注意] 托管功能当前处于 早期预览.

部件巡检

回购有以下主要组成部分:

  1. host.json
  2. local.settings.json
  3. infra 包含用于资源配置和服务器部署的二头肌文件的目录

host.json

Azure Functions部署时需要此文件。Azure Functions主机使用它来配置MCP服务器运行的正确设置(通过配置文件)。它还告诉主机如何运行服务器以及监听哪个端口。

{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "dotnet",
            "arguments": ["<Path to the compiled DLL, e.g. HelloWorld.dll>"] 
        },
        "http": {
            "DefaultAuthorizationLevel": "anonymous"
        },
        "port": "<MCP server port>"
    }
}

我们将配置服务器以使用内置的身份验证和授权功能,因此我们禁用Azure Functions基于主机的身份验证并允许匿名访问。

内置功能实现了 MCP授权规范 例如发出401质询和托管受保护资源元数据(PRM)。启用该功能后,尝试访问服务器的客户端将被重定向到身份提供程序,如Microsoft Entra ID,以便在连接前进行身份验证。

本地设置

仅当您想使用Azure Functions核心工具在本地运行服务器时,才需要此文件,该工具提供Azure Functions主机的本地版本。它允许您在本地运行服务器,就像它在云中的Azure Functions环境中运行一样。

{
    "IsEncrypted": false,
    "Values": {
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "AzureWebJobsFeatureFlags": "EnableMcpCustomHandlerPreview"
    }
}

二头肌锉

所有二头肌文件都在 infra 目录。这 main.bicep 文件指定了各种Azure资源的配置及其设置和/或配置。除了Azure Functions应用程序和部署服务器的托管计划(Flex Consumption)之外,还创建了其他资源,如Azure存储帐户、应用程序洞察、虚拟网络、Entra应用程序等。