项目简介
本项目是一个示例性的MCP服务器实现,展示了如何在Azure云平台上部署一个安全的、经过身份验证的MCP服务器。该服务器使用Azure Functions作为计算后端,Azure API Management作为API网关,并集成了Azure Entra ID (原 Azure Active Directory) 进行身份验证,确保只有授权用户才能访问MCP服务。项目提供了一个工具,允许客户端通过MCP协议调用Microsoft Graph API 获取当前用户的信息。
主要功能点
- MCP协议支持: 实现了MCP服务器的基本框架,能够响应MCP客户端的请求。
- 安全身份验证: 使用Azure Entra ID进行用户身份验证,保护MCP服务器的访问安全。客户端需要先获取Azure AD的访问令牌才能与服务器交互。
- 工具集成: 提供了一个名为 'get_graph_user_details' 的工具,允许LLM客户端通过调用该工具,安全地获取已认证用户的Microsoft Graph信息。
- Azure云部署: 利用Azure Functions和API Management等云服务进行部署,易于扩展和管理。
- Secretless 部署: 采用托管身份验证 (Managed Identity) 和 on-behalf-of flow 等技术,实现了无需硬编码密钥的安全访问。
安装步骤
- 安装 Azure Developer CLI (azd): 请根据您的操作系统,参考 Azure Developer CLI 安装指南 完成安装。
- 克隆仓库: 在本地克隆该GitHub仓库:
git clone https://github.com/localden/remote-auth-mcp-apim-py - 进入项目目录: 使用终端导航到克隆下来的项目目录:
cd remote-auth-mcp-apim-py - 登录 Azure: 使用 Azure Developer CLI 登录您的Azure账号:
azd auth login - 部署到 Azure: 执行以下命令将项目部署到您的Azure云环境:
部署过程可能需要一些时间,请耐心等待。部署完成后,终端会输出API Management 服务的 endpoint,请记录该 endpoint URL。azd up
服务器配置
对于MCP客户端,您需要配置以下信息以连接到此MCP服务器。以下是一个JSON格式的配置示例,您需要将 'url' 字段替换为 'azd up' 命令输出的 endpoint。
{ "serverName": "Azure Secure MCP Server", "transportType": "SSE", "url": "https://<YOUR-APIM-ENDPOINT>/mcp/sse" // 将 '<YOUR-APIM-ENDPOINT>' 替换为部署后得到的 endpoint }
- 'serverName': 为您的MCP服务器连接自定义一个名称,例如 "Azure Secure MCP Server"。
- 'transportType': 指定传输协议为 "SSE" (Server-Sent Events)。本项目使用SSE协议进行通信。
- 'url': 必须替换 为您在Azure部署完成后获得的API Management endpoint URL,并确保路径为 '/mcp/sse'。这是MCP客户端连接服务器的地址。
基本使用方法
- 启动 MCP Inspector: 确保您已安装 Node.js。在终端中运行以下命令启动 Model Context Protocol Inspector:
按照终端输出的URL,在浏览器中打开 MCP Inspector。npx @modelcontextprotocol/[email protected] - 配置服务器连接: 在 MCP Inspector 界面中,将 "Transport Type" 设置为 "SSE",并将 "URL" 设置为您在 服务器配置 步骤中配置的 'url' 值。点击 "Connect"。
- 身份验证: 您会被重定向到Azure Entra ID 登录页面进行身份验证。请使用部署该Azure资源的Azure账号进行登录。
- 连接并测试工具: 成功完成身份验证后,等待MCP Inspector 连接到服务器。连接成功后,点击 "List Tools" 按钮,您应该能看到 'get_graph_user_details' 工具。选择该工具,点击 "Run Tool" 按钮即可执行该工具,获取当前用户的Microsoft Graph 信息。
信息
分类
网页与API