具有Microsoft OAuth身份验证的简单MCP服务器
使用Microsoft OAuth(v2.0)进行用户身份验证的MCP服务器示例。它演示了OAuth集成的基本组件,以及基于Microsoft Graph API的各种工具。
概述
此演示将指导您通过以下方式设置服务器:
- 针对Microsoft Azure AD的OAuth2授权流(v2.0端点)
- 工具用于:
- 正在检索经过身份验证的用户的Microsoft Graph配置文件 - 阅读和发送电子邮件 - 创建、读取、更新和删除日历事件 - 检查团队可用性(忙/闲)
先决条件
- 在Azure AD中注册应用程序:
- 登录Azure门户: https://portal.azure.com
- 引导到 Azure Active Directory > 应用程序注册 > 新注册
- 名字:例如,“简单MCP微软认证” - 支持的帐户类型:任何组织目录中的帐户(“多租户”)+个人Microsoft帐户 - 重定向URI (网络): http://localhost:8000/microsoft/callback
- 点击 注册 并记下:
- 应用程序(客户端)ID - 目录(租户)ID
- 首选 证书和秘密,创建一个 新客户机密,并注意它的价值。
- 确保你有Python 3.9+,或者
poetry或pip安装。
所需的环境变量
在运行服务器之前,请设置以下环境变量:
export MCP_MICROSOFT_MICROSOFT_CLIENT_ID="your-application-client-id"
export MCP_MICROSOFT_MICROSOFT_CLIENT_SECRET="your-client-secret"
export MCP_MICROSOFT_MICROSOFT_CALLBACK_PATH="http://localhost:8000/microsoft/callback"安装与运行
- 安装依赖项:
uv pip install .- 启动服务器:
uv run mcp_microsoft_auth --host localhost --port 8000 --transport streamable-http如果 --transport 未指定,将使用sse作为默认值
端点
- SSE endpoint: `/sse`
- Streamable HTTP endpoint: `/mcp`可用工具
| 工具 | 说明 | 所需范围 |
|---|---|---|
get_user_profile | 返回经过身份验证的用户的Microsoft Graph配置文件 | user |
list_emails | 从收件箱读取最新电子邮件(count 参数) | mail.read |
send_email | 发送电子邮件(to, subject, body) | mail.send |
create_meeting | 创建日历事件(subject, attendees, start, duration) | calendars.readwrite |
list_events | 列出即将发生的事件(from_now_minutes, next_hours, max_results) | calendars.read |
get_user_schedule | 检索其他用户的日历(user_email, start_datetime, end_datetime) | calendars.read.shared |
get_team_availability | 返回与会者列表的忙/闲可用性 | calendars.read |
update_event | 更新现有事件(event_id, updates) | calendars.readwrite |
delete_event | 删除事件(event_id) | calendars.readwrite |
故障排除
- 验证环境变量:
- MCP_MICROSOFT_MICROSOFT_CLIENT_ID - MCP_MICROSOFT_MICROSOFT_CLIENT_SECRET - MCP_MICROSOFT_MICROSOFT_CALLBACK_PATH
- 确保Azure AD中的回调URL与配置的URL完全匹配。
- 确认没有其他服务正在使用端口8000。
- 检查运输(
sse或streamable-http)是有效的。 - 检查控制台日志中是否存在来自Microsoft Graph API响应的任何错误。
要测试服务器,您可以使用 检查员 或工具,如 curl /邮递员。
