返回市场
麦克佩奥布奥

麦克佩奥布奥

作者:gbaeke5 星标更新:2025-07-31

项目介绍

使用Entra ID和FastMCP的On-behalf-of流程

博客文章:https://baeke.info/2025/07/29/end-to-end-authorization-with-entra-id-and-mcp/

指令

1. 创建并激活Python虚拟环境

python3 -m venv .venv
source .venv/bin/activate

2. 安装依赖项

pip install -r requirements.txt

3. 设置环境变量

在项目根目录创建一个.env文件,并添加所需的Azure和API凭证(参见示例文件以获取所需变量)。

4. 启动MCP服务器

python -m mcp.main

5. 运行MCP客户端

在新的终端中(激活虚拟环境):

python mcp_client.py

图表

sequenceDiagram
    autonumber
    participant 用户
    participant 客户端
    participant AzureAD as "Azure Entra ID"
    participant MCP
    participant MSGraph

    用户->>客户端: 初始化设备流
    客户端->>AzureAD: 开始设备代码流
    AzureAD-->>客户端: 设备代码 + 验证URL
    客户端->>用户: 显示代码 + URL

    用户->>AzureAD: 通过浏览器进行身份验证
    AzureAD-->>客户端: 返回访问令牌(用于MCP)

    客户端->>MCP: 使用Bearer访问令牌调用工具
    MCP->>AzureAD: OBO请求以调用MS Graph的令牌\n(包含访问令牌作为断言)
    AzureAD-->>MCP: 返回新访问令牌(用于MS Graph)

    MCP->>MSGraph: 使用新令牌调用Graph API
    MSGraph-->>MCP: Graph数据
    MCP-->>客户端: 返回工具结果