Microsoft 365 MCP 服务器生产转换指南
这个仓库记录了开源项目的加固部署情况 m365-mcp-server 翻译为中文是:“M365 MCP 服务器” 项目。 目标是将实验性的Cloudflare Worker发展成为一个企业级代理,具备 明确的入口控制,受监管的出口,以及可审计的操作。
您是在寻找功能级行为、工具定义还是本地开发说明? 请参阅上游仓库的文档: - README(文件) - 操作 - 技术的
范围
- 源代码 在引入AI网关绑定的同时,镜像上游工作者(或:反映上游工作者的情况),
强化的环境类型定义,以及以安全为中心的默认设置。
- 文档 在这个仓库中,我们专注于生产就绪性
以及为进入受保护的Cloudflare环境所需的转换步骤。
- 操作 该材料提供了确定性的部署程序,
验证、记录和变更管理。
安全转型目标
- 周界管控 – 使用Cloudflare Access保护工作人员
在任何MCP握手发生之前(进行单点登录(SSO)、多因素认证(MFA)、设备状态检查、服务令牌处理)。
- 应用程序授权 – 在保持Microsoft OAuth 2.1 + PKCE流程的同时
仅通过……来存储秘密 wrangler secret。
- 出口治理(或:退出机制管理) - 路由所有出站API调用(Microsoft Graph、LLMs、webhooks)
通过Cloudflare AI Gateway,并附带用于日志记录和策略执行的元数据。
- 操作护栏 – 保持可重复的部署、可观测性以及
适用于受监管环境的事件响应检查清单。
- 可审计的图数据流出(或:可审计的图形出口) – 所有 Microsoft Graph 调用均通过 Cloudflare AI 进行处理
富含元数据的网关(userId, userEmail, mcpTool, requestId)和 暴露网关日志标识符,以便调查时可以在各个Worker日志之间进行关联分析 以及网关分析。
这个分支与上游分支有何不同
| 区域 | 描述 | 推理 | Cloudflare 组件 | 示例行 |
|---|---|---|---|---|
| 工作环境绑定 | 移除本地测试标志并添加 AI 绑定加可选的Cloudflare Access头部,以便运行时配置仅通过密钥提供。 | 保持生产环境部署由密钥驱动,并向下游处理程序暴露Access上下文。 | AI网关、Access、持久对象 | src/index.ts#L30-L63 |
| 图形客户端传输 | 引入 GatewayMetadata通过代理转发请求 env.AI.run("dynamic/microsoft-graph-handler", …),并捕获 aiGatewayLogId 每次调用后。 | 确保每个Microsoft Graph请求都通过Cloudflare AI Gateway进行,以便在事件响应时提供审计元数据。 | AI Gateway | src/microsoft-graph.ts#L66-L639 |
| 持久对象元数据 + 日志记录 | 从Access/Microsoft身份构建每种工具的元数据,将其转发到Graph客户端,并记录由此产生的网关关联ID。 | 在不暴露原始令牌的情况下,提供MCP工具执行、Access身份和AI网关分析之间的可追溯性。 | Access、AI网关、持久对象 | src/microsoft-mcp-agent.ts#L109-L218 |
| 工作器配置 | wrangler.example.toml 提供占位符绑定,为必填项 [[ai]] 配置,并提供关于Cloudflare密钥的明确说明。 | 防止意外泄露租户特定标识符,并指导操作人员使用Cloudflare密钥存储。 | AI网关,Workers KV | wrangler.example.toml |
所需的 Cloudflare 密钥
| 秘密 | 目的 | 必要 | 配置 | |||
|---|---|---|---|---|---|---|
MICROSOFT_CLIENT_ID 在OAuth流程中使用的Microsoft Entra应用程序(客户端)ID。 | ✅ | wrangler secret put MICROSOFT_CLIENT_ID | ||||
MICROSOFT_TENANT_ID 用于令牌端点的 Microsoft Entra 租户标识符。 | ✅ | (这个符号在中文里通常表示“正确”或“完成”的意思,但直接翻译时可能无法完全传达其在特定语境中的含义,因此在这里保留原符号并稍作解释) wrangler secret put MICROSOFT_TENANT_ID | ||||
GRAPH_API_VERSION 微软图API版本(例如。, v1.0) 在构建路由时使用。 | ✅ | (中文可译为“ | 正确 | ”或根据上下文简化为“ | 对 | ”) wrangler secret put GRAPH_API_VERSION |
MICROSOFT_CLIENT_SECRET 用于代码/刷新交换的 Microsoft Entra 应用程序密钥。绝不能将其存储在 wrangler.toml 或者环境变量。 | ✅ | wrangler secret put MICROSOFT_CLIENT_SECRET | ||||
ENCRYPTION_KEY 用于加密持久对象状态和OAuth属性的32字节十六进制密钥。 | ✅ | (表示“已确认”或“正确”的意思,具体翻译可能根据上下文有所不同) wrangler secret put ENCRYPTION_KEY | ||||
COOKIE_ENCRYPTION_KEY 用于访问审批cookie加密的32字节十六进制密钥。 | ✅ | wrangler secret put COOKIE_ENCRYPTION_KEY | ||||
COOKIE_SECRET 用于签名访问审批cookie的HMAC密钥。 | ✅ | wrangler secret put COOKIE_SECRET | ||||
AI_GATEWAY_SERVICE_TOKEN | 如果策略要求经过身份验证的Worker访问,则为AI Gateway提供服务令牌。 | 可选 | wrangler secret put AI_GATEWAY_SERVICE_TOKEN |
仓库地图
OPERATIONS.md– 分阶段迁移指南,绝密策略,
验证检查清单,以及维护任务。
TECHNICAL.md– 深入探讨建筑(或架构)方面,涵盖访问控制、持久化对象、,
AI Gateway的调用模式、环境合约和日志记录策略。
src/– 工作人员来源与加固后的环境相匹配。wrangler.toml– 生产配置(AI绑定、持久对象、访问友好的路由)。
迁移路线图
- 提供Cloudflare Access – 创建一个自托管的应用程序防护系统
mcp.
并授权相关身份(人类+自动化)。
- 部署AI网关 – 创建
m365-egress-gateway启用日志记录/速率限制/数据防泄漏(DLP)功能,
并定义所需的动态路由(例如。, dynamic/microsoft-graph-handler)。
- 重构配置与密钥 – 通过(某种方式)绑定网关
[[ai]],移除[vars],
填充占位符ID wrangler.toml,并使用(相应工具或方法)推送所有凭据 wrangler secret put。
- 更新源代码 – 替换直接
fetch带有(或与……一起使用的)祈求/召唤env.AI.run(...),
附上;连接 gateway.metadata (用户标识符、MCP工具名称、关联ID), 并集中处理访问或网关拒绝时的错误。
- 部署并验证 – 跑
wrangler deploy --env production完成Access SSO(单点登录)的设置/配置,
微软同意,并执行工具流程;确认AI网关/访问遥测数据。
一目了然的转变
flowchart LR
A[Early MCP Worker
Direct fetch + inline secrets] --> B[Phase 1
Cloudflare Access App]
B --> C[Phase 2
MCP Portal + Linked Apps]
C --> D[Phase 3
AI Gateway Dynamic Routes]
D --> E[Phase 4
Code Refactor
env.AI.run + metadata]
E --> F[Phase 5
Deploy & Validate
Access SSO • Gateway logs]- 变更与上游对比:现在访问前端
/sse,每个出站通道(Graph API、MCP响应、流式提示)都会经过AI网关进行检查/路由/DLP处理,并且持久对象会记录日志aiGatewayLogId审计轨迹的值。上游时间线:
https://github.com/nikolanovoselec/m365-mcp-server/blob/main/README.md#why-did-i-build-this 的中文翻译为:“https://github.com/nikolanovoselec/m365-mcp-server/blob/main/README.md#我为什么要构建这个”
转换总结
大约260行工作人员代码(分布在 src/index.ts, src/microsoft-graph.ts,和 src/microsoft-mcp-agent.ts)进行了调整,同时对Cloudflare控制台做了一些更改,以 将开源原型转化为企业级加固的Microsoft 365远程MCP服务器。新增安全控制措施:
- Cloudflare Access 周界(或边界) –
/sse现在位于SSO/MFA/设备状态之后,访问头信息到达持久对象以进行审计。 - Cloudflare AI Gateway 出站(流量) – 每个出站通道(图表调用、MCP响应、提示流)都通过动态路由流动,这些路由实施策略、记录日志并执行数据丢失防护(DLP)。
- 通过 Wrangler 实现的秘密生命周期管理 – 无凭据输入
[vars]; 秘密被存储/轮换使用wrangler secret put。 - 持久对象相关性 – 工具执行日志记录在Cloudflare中
aiGatewayLogId将MCP活动与Gateway遥测系统相连接。 - 配置卫生(或配置规范性维护) – 示例配置依赖于占位符和当前的兼容性日期;生产环境
wrangler.toml专门消耗秘密(或:只关注秘密)。
参考材料
- Cloudflare 文档 – AI Gateway绑定方法
- Cloudflare 文档 – 通用端点
- Cloudflare 文档 – 动态路由
- Cloudflare 文档 – 访问与MCP服务器关联的应用程序
- Cloudflare 文档 – 持久对象 (有状态会话管理)
- Cloudflare GitHub –(可翻译为)Cloudflare在GitHub上 AI Gateway MCP服务器 (日志工具与OAuth模式)
贡献;做出贡献
所有功能开发、工具增强或一般文档改进的工作都应源自 M365-MCP-服务器这里的贡献应 专注于生产加固、部署自动化和运营操作指南。在更新时 源代码,保持两个仓库同步以确保转换指南的准确性。
