MCP认证服务

一个基于FastAPI和FastMCP的MCP服务器认证服务,支持Microsoft Entra ID (Azure AD) OAuth2令牌认证,适用于需要安全访问控制的MCP服务器。

  • by flowsoft-org
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 flowsoft-org/mcp-authentication-samples

使用说明

MCP身份验证示例🚀

此存储库包含用于构建使用FastAPI和FastMCP进行身份验证的模型上下文协议(MCP)服务器的示例代码。

运行服务器🖥️

  1. 在VS Code中打开此文件夹
  2. (如果使用devcontainer)如果系统提示,请单击“在容器中重新打开”
  3. 安装依赖项:
    pip install -r requirements.txt
    
  4. 启动服务器:
    python server.py
    

服务器将于启动http://localhost:8000

使用Microsoft Entra ID(Azure AD)进行身份验证🔐

此示例演示了如何使用来自Microsoft Entra ID(Azure AD)的OAuth2 Bearer令牌保护您的MCP服务器。

所需的Entra ID申请设置🛠️

  1. 注册应用程序 通过Azure门户在Microsoft Entra ID(Azure AD)中。
  2. 公开API:
    • 在您的应用程序注册中转到“公开API”。
    • 设置应用ID URI(例如。, api://<APPUUID>).
    • 添加范围(例如。, mcp.tools).
  3. 配置身份验证:
    • 如果需要,为您的客户端添加重定向URI。
  4. 获取以下值 对于您的应用程序:
    • 租户ID
    • 应用程序(客户端)ID
    • 应用程序ID URI
    • 作用域名称

更新代码和资源元数据✏️

  • 更新 BearerAuthProvider 在……里面 server.py:

    • 替换 <ENTRATENANTID> 使用您的Entra租户ID。
    • 替换 <APPUUID> 使用您的应用程序(客户端)ID或应用程序ID URI。
    • 设置正确 jwks_uri, issuer, audience,以及 required_scopes.

    例子:

    auth = BearerAuthProvider(
        jwks_uri="https://login.microsoftonline.com/<ENTRATENANTID>/discovery/v2.0/keys",
        issuer="https://sts.windows.net/<ENTRATENANTID>/",
        algorithm="RS256",
        audience="api://<APPUUID>",
        required_scopes=["mcp.tools"]
    )
    
  • 更新 oauth-protected-resource.json:

    • 确保此文件与应用程序的元数据匹配,包括资源ID、作用域和颁发者。

示例:oauth-protected-resource.json📄

{
  "resource": "api://<APPUUID>",
  "issuer": "https://sts.windows.net/<ENTRATENANTID>/",
  "scopes": ["mcp.tools"]
}

用实际值替换占位符。

GitHub副本代理模式🤖

此MCP服务器也可以在VS Code的GitHub Copilot Agent模式下使用。要启用此功能,请执行以下操作:

  1. 确保服务器正在运行。
  2. 使用 mcp.json 配置GitHub Copilot的MCP服务器的文件。
  3. 从启动服务器 mcp.json 配置。

测试🧪

您可以使用curl测试受保护的端点:

curl -H "Authorization: Bearer <token>" http://localhost:8000/mcp

如果没有提供令牌或令牌无效,您将收到401 Unauthorized响应。

许可证📜

看 许可证.