返回市场
远程-mcp-dotnet-oauth

远程-mcp-dotnet-oauth

作者:anthony-c-martin5 星标更新:2025-07-14

项目介绍

Model Context Protocol (MCP) 服务器 - .NET 实现

该项目包含一个使用 .NET Web 应用程序实现的 Model Context Protocol (MCP) 服务器。该应用程序设计用于部署到 Azure 应用服务。

此项目使用 OAuth OBO,允许用户通过 MCP 进行身份验证,并赋予 MCP 代表用户访问下游 API 的能力。在此示例中,它已获得访问 Azure 资源管理器 API 的权限。

MCP 服务器提供了一个遵循 Model Context Protocol 规范的 API,允许 AI 模型在推理过程中请求额外的上下文信息。

主要功能

  • 使用 MCP csharp-sdk 在 C#/.NET 中完整实现了 MCP 协议
  • 集成 Azure 应用服务
  • 支持自定义工具
  • 支持 OAUth OBO,使服务器能够在用户的上下文中访问经过身份验证的下游 API。

项目结构

  • src/ - 包含主要的 C# 项目文件
    • Program.cs - MCP 服务器的入口点
    • Tools/ - 包含可以通过 MCP 协议由模型使用的自定义工具
      • AzureResourceManagerTools.cs - 执行基本 Azure 资源管理器操作的工具
  • infra/ - 使用 Bicep 编写的 Azure 基础设施代码
    • main.bicep - 主基础设施定义
    • resources.bicep - 资源定义
    • main.bicepparam - 部署参数

先决条件

本地开发

在本地运行服务器

  1. 克隆此仓库
  2. 导航到项目目录
    cd src
    
  3. 安装所需包
    dotnet restore
    
  4. 运行项目:
    dotnet run
    
  5. MCP 服务器将在 http://localhost:5000 可用
  6. 完成后,在终端中按 Ctrl+C 停止应用

测试可用工具

服务器提供了这些工具:

  • AzureResourceManager
    • get_subscriptions - 获取 Azure 订阅列表
    • get_resource_groups - 获取特定 Azure 订阅中的资源组列表

连接到本地 MCP 服务器

使用 VS Code - Copilot 代理模式

  1. 从命令面板中添加 MCP 服务器并添加运行服务器的 HTTP 端点 URL:
    http://localhost:5000
    
  2. 从命令面板中列出 MCP 服务器并启动服务器
  3. 在 Copilot 聊天代理模式下,输入提示以触发工具:
    获取我的 Azure 订阅
    
  4. 当提示运行工具时,点击继续以同意

使用 MCP Inspector

  1. 新的终端窗口中,安装并运行 MCP Inspector:
    npx @modelcontextprotocol/inspector
    
  2. CTRL+点击应用程序显示的 URL(例如 http://localhost:5173/#resources)
  3. 将传输类型设置为 HTTP
  4. 将 URL 设置为运行服务器的 HTTP 端点并连接
    http://localhost:5000
    
  5. 列出工具,点击一个工具并运行工具

部署到 Azure

  1. 登录到 Azure:

    azd auth login
    
  2. 初始化环境:

    azd env new
    
  3. 部署应用程序:

    azd up
    
  4. 授予管理员同意(Entra 门户 UI)- 仅首次执行:

    • 打开“应用注册”中的 Entra 应用
    • 选择“管理”->“API 权限”,然后点击“授予管理员同意”

    这将:

    • 构建 .NET 应用程序
    • 根据 Bicep 模板配置 Azure 资源
    • 将应用程序部署到 Azure 应用服务

连接到远程 MCP 服务器

使用 MCP Inspector

使用 Web 应用的 URL:

https://<webappname>.azurewebsites.net

使用 VS Code - GitHub Copilot

按照与本地应用相同的步骤进行操作,但使用你的应用服务 URL:

https://<webappname>.azurewebsites.net

清理资源

当你完成与应用及相关资源的工作后,可以使用以下命令从 Azure 删除函数应用及其相关资源,避免产生进一步的成本:

azd down