博客文章:https://baeke.info/2025/07/29/end-to-end-authorization-with-entra-id-and-mcp/
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
在项目根目录创建一个.env文件,并添加所需的Azure和API凭证(参见示例文件以获取所需变量)。
python -m mcp.main
在新的终端中(激活虚拟环境):
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-->>客户端: 返回工具结果