企业级MCP服务器

一个企业级的Microsoft 365 MCP服务器,通过Cloudflare Access和AI Gateway提供安全的入口控制和可审计的操作。

  • by nikolanovoselec
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 nikolanovoselec/m365-mcp-server-production

使用说明

Microsoft 365 MCP 服务器生产转换指南

这个仓库记录了开源项目的加固部署情况 m365-mcp-server 翻译为中文是:“M365 MCP 服务器” 项目。 目标是将实验性的Cloudflare Worker发展成为一个企业级代理,具备 明确的入口控制,受监管的出口,以及可审计的操作。

您是在寻找功能级行为、工具定义还是本地开发说明? 请参阅上游仓库的文档:

范围

  • 源代码 在引入AI网关绑定的同时,镜像上游工作者(或:反映上游工作者的情况), 强化的环境类型定义,以及以安全为中心的默认设置。
  • 文档 在这个仓库中,我们专注于生产就绪性 以及为进入受保护的Cloudflare环境所需的转换步骤。
  • 操作 该材料提供了确定性的部署程序, 验证、记录和变更管理。

安全转型目标

  1. 周界管控 – 使用Cloudflare Access保护工作人员 在任何MCP握手发生之前(进行单点登录(SSO)、多因素认证(MFA)、设备状态检查、服务令牌处理)。
  2. 应用程序授权 – 在保持Microsoft OAuth 2.1 + PKCE流程的同时 仅通过……来存储秘密 wrangler secret。
  3. 出口治理(或:退出机制管理) - 路由所有出站API调用(Microsoft Graph、LLMs、webhooks) 通过Cloudflare AI Gateway,并附带用于日志记录和策略执行的元数据。
  4. 操作护栏 – 保持可重复的部署、可观测性以及 适用于受监管环境的事件响应检查清单。
  5. 可审计的图数据流出(或:可审计的图形出口) – 所有 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) 在构建路由时使用。 ✅ (中文可译为“ 正确
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绑定、持久对象、访问友好的路由)。

迁移路线图

  1. 提供Cloudflare Access – 创建一个自托管的应用程序防护系统 mcp.<domain> 并授权相关身份(人类+自动化)。
  2. 部署AI网关 – 创建 m365-egress-gateway启用日志记录/速率限制/数据防泄漏(DLP)功能, 并定义所需的动态路由(例如。, dynamic/microsoft-graph-handler)。
  3. 重构配置与密钥 – 通过(某种方式)绑定网关 [[ai]],移除 [vars], 填充占位符ID wrangler.toml,并使用(相应工具或方法)推送所有凭据 wrangler secret put。
  4. 更新源代码 – 替换直接 fetch 带有(或与……一起使用的)祈求/召唤 env.AI.run(...), 附上;连接 gateway.metadata (用户标识符、MCP工具名称、关联ID), 并集中处理访问或网关拒绝时的错误。
  5. 部署并验证 – 跑 wrangler deploy --env production完成Access SSO(单点登录)的设置/配置, 微软同意,并执行工具流程;确认AI网关/访问遥测数据。

一目了然的转变

flowchart LR
    A[Early MCP Worker<br>Direct fetch + inline secrets] --> B[Phase 1<br>Cloudflare Access App]
    B --> C[Phase 2<br>MCP Portal + Linked Apps]
    C --> D[Phase 3<br>AI Gateway Dynamic Routes]
    D --> E[Phase 4<br>Code Refactor<br>env.AI.run + metadata]
    E --> F[Phase 5<br>Deploy & Validate<br>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 专门消耗秘密(或:只关注秘密)。

参考材料

贡献;做出贡献

所有功能开发、工具增强或一般文档改进的工作都应源自 M365-MCP-服务器这里的贡献应 专注于生产加固、部署自动化和运营操作指南。在更新时 源代码,保持两个仓库同步以确保转换指南的准确性。