项目简介

这是一个基于 .NET 的示例项目,展示了如何构建一个实现 Model Context Protocol (MCP) 的服务器。该服务器部署在 Azure App Service 上,并通过 Azure API Management (APIM) 作为 AI 网关向 MCP 客户端提供服务。它特别演示了 MCP 的第三方授权流程,并包含一个调用 Microsoft Graph API 获取当前用户信息的工具。

主要功能点

  • 实现 MCP 服务器核心功能: 通过 .NET 库实现 MCP 协议,处理来自客户端的请求。
  • 提供 Microsoft Graph 工具: 包含一个名为 'ShowUserProfile' 的工具,用于安全地调用 Microsoft Graph API 获取用户的显示名称、邮箱、ID 等信息。
  • 集成 Azure API Management: 利用 APIM 作为代理,增强安全性、管理和监控 MCP 流量。
  • 演示 MCP 授权流程: 实现了 MCP 规范中定义的特定第三方授权流程,允许服务器通过客户端提供的访问令牌代表用户调用外部 API (如 Microsoft Graph)。
  • 支持 SSE 传输: 服务器配置为支持 Server-Sent Events (SSE) HTTP 传输协议。

安装步骤

  1. 安装 Azure Developer CLI (azd): 访问 'https://aka.ms/azd' 按照指引安装 'azd' 命令行工具。
  2. 部署到 Azure: 在项目根目录打开终端,运行以下命令:
    azd up
    该命令会自动 provision (创建) 所需的 Azure 资源 (包括 Azure API Management 和 Azure App Service),并部署服务器代码。部署完成后,终端会输出 API Management 的 SSE 端点 URL。

服务器配置(用于 MCP 客户端连接)

MCP 客户端需要配置连接信息才能与此服务器通信。对于此示例,客户端需要知道服务器的访问地址和传输方式。

配置信息通常以 JSON 格式提供给 MCP 客户端。尽管具体格式可能因客户端而异,但核心信息包括:

  • 服务器名称 (name): 一个用户友好的名称,例如 "Remote Microsoft Graph MCP Server"。
  • 传输协议 (transport): 此服务器示例通过 Azure API Management 暴露,使用 'sse' (Server-Sent Events) 传输协议。
  • 连接 URL (url): 在执行 'azd up' 命令成功后,终端输出中显示的 Azure API Management SSE 端点 URL。例如,'https://<your-apim-instance-name>.azure-api.net/mcp/sse'。

请注意,此服务器通过自定义请求头 'X-Resource-Access-Token' 接收 Microsoft Graph 的访问令牌。客户端或其使用的 AI 网关 (如 Azure APIM 在此示例中所示) 需要负责获取并传递此令牌。客户端配置本身通常不直接包含令牌,而是依赖于传输层或网关来处理授权。

基本使用方法

  1. 安装 MCP Inspector (可选但推荐): 在新终端窗口运行 'npx @modelcontextprotocol/inspector'。
  2. 启动 MCP Inspector: 打开浏览器访问 MCP Inspector 显示的本地 URL。
  3. 配置连接:
    • 将传输类型 (Transport type) 设置为 'SSE'。
    • 在 URL 字段中粘贴 'azd up' 命令输出的 Azure API Management SSE 端点 URL。
    • 点击 Connect 按钮建立连接。
  4. 列出工具: 连接成功后,点击 List Tools 按钮,您应该会看到列出的 'ShowUserProfile' 工具。
  5. 运行工具: 点击 'ShowUserProfile' 工具旁边的 Run Tool 按钮。服务器将执行该工具,并返回通过 Microsoft Graph 获取的当前用户 JSON 格式的个人资料信息。

信息

分类

网页与API