项目简介
这是一个基于 .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 传输协议。
安装步骤
- 安装 Azure Developer CLI (azd): 访问 'https://aka.ms/azd' 按照指引安装 'azd' 命令行工具。
- 部署到 Azure: 在项目根目录打开终端,运行以下命令:
该命令会自动 provision (创建) 所需的 Azure 资源 (包括 Azure API Management 和 Azure App Service),并部署服务器代码。部署完成后,终端会输出 API Management 的 SSE 端点 URL。azd up
服务器配置(用于 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 在此示例中所示) 需要负责获取并传递此令牌。客户端配置本身通常不直接包含令牌,而是依赖于传输层或网关来处理授权。
基本使用方法
- 安装 MCP Inspector (可选但推荐): 在新终端窗口运行 'npx @modelcontextprotocol/inspector'。
- 启动 MCP Inspector: 打开浏览器访问 MCP Inspector 显示的本地 URL。
- 配置连接:
- 将传输类型 (Transport type) 设置为 'SSE'。
- 在 URL 字段中粘贴 'azd up' 命令输出的 Azure API Management SSE 端点 URL。
- 点击 Connect 按钮建立连接。
- 列出工具: 连接成功后,点击 List Tools 按钮,您应该会看到列出的 'ShowUserProfile' 工具。
- 运行工具: 点击 'ShowUserProfile' 工具旁边的 Run Tool 按钮。服务器将执行该工具,并返回通过 Microsoft Graph 获取的当前用户 JSON 格式的个人资料信息。
信息
分类
网页与API