ms365 mcp
](https://hub.docker.com/r/lharillo/ms365-mcp) ](https://github.com/lharillo/ms365-mcp) 
Docker化部署 ms-365-mcp服务器 -用于通过Microsoft Graph API的Microsoft 365服务的模型上下文协议(MCP)服务器。
Docker 中心: lharillo/ms365-mcp
该项目提供了一个生产就绪的Docker镜像和Kubernetes清单,用于通过Streamable HTTP传输、OAuth 2.1身份验证和持久令牌缓存自托管MCP服务器。
特性
- 90+工具 适用于Microsoft 365:Outlook、日历、OneDrive、Excel、OneNote、待办事项、联系人、搜索
- 组织模式:团队、SharePoint、共享邮箱、用户管理
- OAuth 2.1 使用PKCE(代码交换证明密钥)进行身份验证
- 可流式传输的HTTP 3000港运输
- 持久令牌缓存 --容器重启后幸存
- Kubernetes就绪 具有部署、服务和PVC清单
快速开始
Docker运行
docker run -d -p 3000:3000 lharillo/ms365-mcp:latest具有组织模式和持久令牌
docker run -d \
-p 3000:3000 \
-e MS365_MCP_ORG_MODE=true \
-v ms365-data:/app/data \
lharillo/ms365-mcp:latestDocker Compose
docker compose up -d看 对于完整配置。
Kubernetes部署
将清单应用于Kubernetes集群上的部署:
kubectl apply -f k8s/这将创建:
- 持久卷声明 --100Mi用于令牌缓存持久化
- 部署 --具有健康检查和资源限制的单个副本
- 服务 --端口3000上的群集IP
看 k8s/ 完整的清单。
通过Cloudflare隧道进行曝光
要在外部公开服务,请在您的 cloudflared 配置:
- hostname: ms365-mcp.example.com
service: http://:3000
originRequest:
noTLSVerify: true
http2Origin: true
disableChunkedEncoding: true然后创建DNS记录:
cloudflared tunnel route dns ms365-mcp.example.com环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MS365_MCP_ORG_MODE | 启用组织模式(团队、SharePoint等) | false |
MS365_MCP_TOKEN_CACHE_PATH | STRATtoken缓存文件的路径 | /app/data/msal-cache.json |
MS365_MCP_SELECTED_ACCOUNT_PATH | 所选帐户元数据的路径 | /app/data/selected-account.json |
MS365_MCP_CLIENT_ID | 自定义Azure AD应用程序客户端ID | 内置 |
MS365_MCP_CLIENT_SECRET | Azure AD客户端机密 | -- |
MS365_MCP_TENANT_ID | Azure AD租户ID | common |
MS365_MCP_OAUTH_TOKEN | 预先存在的OAuth令牌(BYOT模式) | -- |
MS365_MCP_CLOUD_TYPE | 云环境(global 或 china) | global |
MS365_MCP_OUTPUT_FORMAT | 输出格式(toon 减少30-60%的代币) | -- |
READ_ONLY | 禁用写入操作 | false |
ENABLED_TOOLS | 用于筛选可用工具的正则表达式模式 | -- |
LOG_LEVEL | 日志记录级别 | info |
SILENT | 禁用控制台输出 | false |
API终点
| 方法 | 路径 | 描述 |
|---|---|---|
GET | / | 健康检查--返回服务器状态 |
POST | /mcp | MCP协议端点(需要OAuth令牌) |
GET | /.well-known/oauth-authorization-server | OAuth 2.1服务器元数据 |
GET | /authorize | OAuth授权流(重定向到Microsoft登录) |
POST | /token | OAuth令牌交换 |
认证
服务器使用 OAuth 2.1与PKCE 用于身份验证。当MCP客户端连接时:
- 客户端在以下位置发现OAuth元数据
/.well-known/oauth-authorization-server - 客户端在以下位置启动授权流
/authorize - 用户被重定向到Microsoft登录
- 登录后,客户端在以下位置交换访问令牌的授权码
/token - 客户端在后续操作中包含令牌
POST /mcp请求:
令牌缓存在持久卷中 /app/data/,因此只有在令牌过期且无法刷新时才需要重新身份验证。
支持的范围
个人: Mail.Read, Mail.ReadWrite, Mail.Send, Calendars.ReadWrite, Files.ReadWrite, Notes.Read, Notes.Create, Tasks.ReadWrite, Contacts.ReadWrite, User.Read
组织 (与 --org-mode): Chat.Read, ChatMessage.Read, ChatMessage.Send, Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All, ChannelMessage.Send, Sites.Read.All, User.Read.All, Group.Read.All, Group.ReadWrite.All
MCP客户端配置
将您的MCP客户端指向服务器URL:
https://your-host/mcp客户端必须支持OAuth 2.1和PKCE进行身份验证。
建筑
docker build -t lharillo/ms365-mcp:latest .
docker push lharillo/ms365-mcp:latest许可证
麻省理工学院
链接
- Docker 中心: 拉里洛/ms365 mcp
- GitHub: 拉里洛/ms365 mcp
学分
- Softeria/ms-365-mcp服务器 --上游MCP服务器包
