Token导航 LogoToken导航TokenDH.com
MCP SDK Functions Hosting Dotnet logo
运维云端未说明官方来源来源级核验

MCP SDK Functions Hosting Dotnet

MCP Server

该服务允许开发者在 Azure Functions 上远程托管使用官方 MCP SDK 构建的 MCP 服务器,支持无服务器架构和事件驱动框架。

工具数

0

提示词数

0

GitHub Stars

12

资源数

0
BicepVS Code云端部署VS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Azure-Samples

提供方

Azure-Samples

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

在Azure Functions上使用官方MCP SDK构建的主机远程MCP服务器(公开预览版)

此仓库包含在Azure Functions上运行使用C#(.NET)MCP SDK构建的MCP服务器的说明和示例。该仓库使用天气样本服务器来演示如何做到这一点。您可以克隆以在本地运行和测试服务器,然后轻松部署 azd up 几分钟后就可以把它放在云端了。

在Azure Functions上以自定义处理程序运行MCP服务器

Azure Functions最近发布了 MCP扩展功能,允许开发人员使用Function编程模型构建MCP服务器,该模型本质上是Function的事件驱动框架,并在无服务器平台上远程托管它们。

对于那些已经构建了服务器的人 Anthropic的MCP SDK,也可以通过以下方式在Azure Functions上托管服务器: _自定义处理程序_,它们是从Functions主机接收事件的轻量级web服务器。它们允许您托管已经构建的MCP服务器,而无需更改代码,并受益于Function的突发规模、无服务器定价模型和安全功能。

此仓库侧重于第二种托管场景:

先决条件

确保您拥有以下内容:

\[!注意\] 此示例要求您具有创建 微软Entra应用程序 在您使用的Azure订阅中。

如果您已经有一个现有的服务器。..

\[!重要\] 您的服务器必须 无状态 并使用 可流式传输http 今天,传输将远程托管在Azure Functions上。

以下说明将引入本地服务器测试和部署所需的工件。最重要的是: host.json, local.settings.json,以及 infraAzure Functions只需要前两个JSON文件。这 infra 目录不是必需的,但它对于配置Azure资源很方便。

你的项目不太可能有同名的文件和目录,但如果有,你需要重命名它们,这样它们就不会被覆盖。

完成必要的重命名后,请按照以下步骤操作:

  1. 在MCP服务器项目中,运行 azd init --template self-hosted-mcp-scaffold-dotnet.
  2. 回答提示

- 是否继续初始化“/your/mcp/project/文件夹”中的应用程序?:选择“是”。 - 文件既存在于本地,也存在于模板中:可能唯一的文件是README,您可以保留现有的文件。 - 输入一个唯一的环境名称:这将成为部署服务器的资源组的名称。

  1. host.json:

- 确保参数的属性具有编译的DLL路径,例如。 HelloWorld.dll - 确保 port 值与MCP服务器使用的值相同

  1. 按照从中开始的说明进行操作 在本地测试服务器 部分。

您可以了解更多关于 模板.

如果你从头开始。..

克隆仓库并在Visual Studio Code中打开示例

git clone https://github.com/Azure-Samples/mcp-sdk-functions-hosting-dotnet.git

在本地测试服务器

  1. 在根目录中,运行 func start 在本地启动服务器
  1. 打开 _mcp.json_ (在 _.vcode_ 目录)
  1. 通过选择启动服务器 _开始_ 按钮上方 本地mcp服务器
  1. 点击顶部的Copilot图标打开聊天(或 Ctrl+Command+I / Ctrl+Alt+I),然后更改为 _代理_ 问题窗口中的模式。
  1. 单击工具图标并确保 本地mcp服务器 已检查Copilot是否在聊天中使用:
  1. 服务器显示可用工具的数量后,询问“使用#local mcp server返回纽约市的天气”。副驾驶应调用其中一个天气工具来帮助回答这个问题。

部署前注册资源提供程序

在部署之前,您需要注册 Microsoft.App 资源提供者:

az provider register --namespace 'Microsoft.App'

等待几秒钟以完成注册。您可以使用以下命令检查状态:

az provider show -n Microsoft.App

部署

  1. 此示例使用Visual Studio Code作为主客户端。将其配置为允许的客户端应用程序:
   azd env set PRE_AUTHORIZED_CLIENT_IDS aebc6443-996d-45c2-90f0-388ff96faa56
  1. 如果您的组织需要,请指定服务管理参考。如果您不是Microsoft员工,并且不知道需要设置此项,则可以跳过此步骤。但是,如果配置失败,并出现缺少服务管理引用的错误,您可能需要重新访问此步骤。使用Microsoft租户的Microsoft员工必须提供服务管理参考(您的服务树ID)。否则,您将无法创建Entra应用程序注册,并且配置将失败。
   azd env set SERVICE_MANAGEMENT_REFERENCE 
  1. azd up 在根目录中。然后选择一个Azure订阅来部署资源,并从可用区域中进行选择。

部署完成后,您的终端将显示类似于以下内容的输出:

     (✓) Done: Resource group: rg-resource-group-name (12.061s)
     (✓) Done: App Service plan: plan-random-guid (6.748s)
     (✓) Done: Virtual Network: vnet-random-guid (8.566s)
     (✓) Done: Log Analytics workspace: log-random-guid (29.422s)
     (✓) Done: Storage account: strandomguid (34.527s)
     (✓) Done: Application Insights: appi-random-guid (8.625s)
     (✓) Done: Function App: func-mcp-random-guid (36.096s)
     (✓) Done: Private Endpoint: blob-private-endpoint (30.67s)

     Deploying services (azd deploy)
     (✓) Done: Deploying service api
     - Endpoint: https://functionapp-name.azurewebsites.net/

在Visual Studio代码上连接到服务器

  1. 打开 _mcp.json_ 在编辑。
  2. 通过选择以下选项停止本地服务器 _停止_ 按钮上方 本地mcp服务器.
  3. 通过选择启动远程服务器 _开始_ 按钮上方 远程mcp服务器.
  4. Visual Studio代码将提示您输入函数应用程序域。从终端输出或门户复制它。
  5. 在代理模式下打开Copilot,并确保 远程mcp服务器 已在工具列表中选中。
  6. VS Code应提示您向Microsoft进行身份验证。点击 _允许_,然后登录到您的Microsoft帐户(用于访问Azure门户的帐户)。
  7. 询问Copilot“使用#remote mcp服务器返回西雅图的天气”。它应该调用一个天气工具来帮助回答。
\[!提示\] 除了在中启动MCP服务器外 _mcp.json_,您可以通过单击查看服务器的输出 _更多。.._ -> _显示输出_。输出提供了有用的信息,例如连接可能失败的原因。 您还可以单击齿轮图标将日志级别更改为“跟踪”,以获取有关客户端(Visual Studio代码)和服务器之间交互的更多详细信息。

代表(OBO)流程演示

UserInfoTools.cs 演示了如何实现On-Behalf-Of(OBO)流以代表经过身份验证的用户调用MicrosoftGraph API。当您的MCP工具需要访问下游服务时,此模式非常有用。

要测试此工具,请向Copilot提出一个问题,例如“使用#remote mcp服务器提供有关登录用户的信息”。Copilot会要求您通过提供链接来同意访问用户的信息。导航到同意URL并授予权限。然后向Copilot重新提问。

海外建筑运营管理局流程如何运作

  1. 服务器身份验证:内置身份验证功能验证用户并在 Authorization 头球
  2. 令牌提取:MCP工具从请求标头中提取承载令牌
  3. 管理身份断言:托管身份凭证获得用于令牌交换的断言令牌
  4. 代币交换: OnBehalfOfCredential 将承载令牌交换为Microsoft Graph访问令牌
  5. API调用:该工具称为Microsoft Graph /me 带有交换令牌的端点
  6. 响应:返回用户信息

备注:此工具要求将基础架构部署到Azure。如果没有额外的配置,它将无法在本地开发中工作。

重新部署

如果要在更改后重新部署服务器,请运行 azd deploy。(参见azd命令 参考.)

内置服务器身份验证和授权

服务器应用程序配置了内置的服务器身份验证和授权功能,该功能实现了 MCP授权规范例如发出401质询并暴露受保护资源元数据(PRM)。

在Visual Studio Code的调试输出中,您可以看到MCP客户端和服务器交互时的一系列请求和响应。使用内置MCP服务器授权时,您应该看到以下事件序列:

  1. 编辑器向MCP服务器发送初始化请求。
  2. MCP服务器返回一个错误,表示需要授权。响应包括指向应用程序的受保护资源元数据(PRM)的指针。内置的授权功能为服务器应用程序生成PRM。
  3. 编辑器获取PRM并使用它来标识授权服务器。
  4. 编辑器尝试从授权服务器上的已知端点获取授权服务器元数据(ASM)。
  5. Microsoft Entra ID不支持已知端点上的ASM,因此编辑器转而使用OpenID Connect元数据端点来获取ASM。它试图通过在任何其他路径信息之前插入已知的端点来发现这一点。
  6. OpenID Connect规范实际上将众所周知的端点定义为路径信息之后,这就是Microsoft Entra ID托管它的地方。因此,编辑器会再次尝试使用这种格式。
  7. 编辑器成功检索ASM。然后,它将此信息与自己的客户端ID结合使用以执行登录。此时,编辑器会提示您登录并同意该应用程序。
  8. 假设您成功登录并同意,编辑器将完成登录。它向MCP服务器重复初始化请求,这次在请求中包含授权令牌。此重新尝试在调试输出级别不可见,但您可以在跟踪输出级别看到它。
  9. MCP服务器验证令牌,并对初始化请求作出成功响应。标准MCP流程从这一点开始继续,最终发现了本示例中定义的MCP工具。

支持其他客户

除了Visual Studio Code之外,Azure AI Foundry中的代理还可以连接到配置了Easy Auth的Function托管的MCP服务器。文档即将发布。

清理资源

使用完服务器后,您可以使用此命令删除在Azure上创建的资源,从而避免产生任何进一步的成本:

azd down

下一步

在其他语言中查找此示例

语言(堆栈)回购位置
python 托管python的mcp-sdk函数
节点mcp-sdk功能托管节点

故障排除

以下是一些常见的问题。

  1. InternalServerError:发生意外的InternalServerError。请稍后再试。

检查您是否已注册 Microsoft.App 资源提供者:

   az provider show -n Microsoft.App

如果它显示为未注册,请注册它:

   az provider register --namespace 'Microsoft.App'

成功注册应显示:

   Namespace      RegistrationPolicy    RegistrationState
   -------------  --------------------  -------------------
   Microsoft.App  RegistrationRequired  Registered

然后运行 azd up 再一次。

  1. 错误:执行步骤命令“deploy--all”时出错:获取目标资源:未找到资源:找不到标记为“azd服务器名称:api”的资源。确保基础结构配置中的服务资源标记已更正,然后重新运行配置

这是一个 已知瞬态误差。尝试重新运行 azd up.

  1. 确保您安装了最新版本的Azure Functions核心工具。

你需要 版本>=4.5.0.运行检查 func --version.

  1. .vscode/mcp.json 必须位于VS Code的根目录中,才能检测MCP服务器注册

如果你没有看到 _开始_ 服务器注册上方的按钮,这可能是因为 .vscode/mcp.json 不在工作区文件夹的根目录中。

目录标签

目录标签

BicepVS Code云端部署本地部署MCP服务器AzureFunctions无服务器架构事件驱动远程托管

支持客户端

VS Code

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP