项目简介

本项目是一个示例性的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 等技术,实现了无需硬编码密钥的安全访问。

安装步骤

  1. 安装 Azure Developer CLI (azd): 请根据您的操作系统,参考 Azure Developer CLI 安装指南 完成安装。
  2. 克隆仓库: 在本地克隆该GitHub仓库:
    git clone https://github.com/localden/remote-auth-mcp-apim-py
  3. 进入项目目录: 使用终端导航到克隆下来的项目目录:
    cd remote-auth-mcp-apim-py
  4. 登录 Azure: 使用 Azure Developer CLI 登录您的Azure账号:
    azd auth login
  5. 部署到 Azure: 执行以下命令将项目部署到您的Azure云环境:
    azd up
    部署过程可能需要一些时间,请耐心等待。部署完成后,终端会输出API Management 服务的 endpoint,请记录该 endpoint URL。

服务器配置

对于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客户端连接服务器的地址。

基本使用方法

  1. 启动 MCP Inspector: 确保您已安装 Node.js。在终端中运行以下命令启动 Model Context Protocol Inspector
    npx @modelcontextprotocol/[email protected]
    按照终端输出的URL,在浏览器中打开 MCP Inspector。
  2. 配置服务器连接: 在 MCP Inspector 界面中,将 "Transport Type" 设置为 "SSE",并将 "URL" 设置为您在 服务器配置 步骤中配置的 'url' 值。点击 "Connect"。
  3. 身份验证: 您会被重定向到Azure Entra ID 登录页面进行身份验证。请使用部署该Azure资源的Azure账号进行登录。
  4. 连接并测试工具: 成功完成身份验证后,等待MCP Inspector 连接到服务器。连接成功后,点击 "List Tools" 按钮,您应该能看到 'get_graph_user_details' 工具。选择该工具,点击 "Run Tool" 按钮即可执行该工具,获取当前用户的Microsoft Graph 信息。

信息

分类

网页与API