m365-native 网关把 Microsoft 365 Copilot 接入 OpenAI 与 Claude 客户端封面图 (封面图)

把 Microsoft 365 Copilot 接入任意客户端?用 m365-native 网关打通 OpenAI/Claude 格式

M365 Copilot 的额度,只能困在微软自己的聊天框里?有个开源网关能把它变成标准 API,Claude Code、Cursor、Open WebUI 想接哪个接哪个。

前阵子帮一个做内部工具的朋友折腾接入,他想让团队用上 M365 Copilot 的额度,但又不想每个人都开着网页版手动抄答案。找了一圈,最后落在 m365-native 这个项目上——它把授权的 M365 Copilot 会话,转成 OpenAI / Anthropic 兼容的 HTTP API。下面这套,是当时从零跑通的记录,从部署到接客户端一次说清。

为什么要把 M365 Copilot 接出来

网页版够用,但有几个绕不开的堵点:

  • 客户端不兼容。Claude Code、Cursor 这些只认 OpenAI 或 Claude 格式,网页版接不进去。
  • 额度用得碎。每人开一个网页,没法集中调度,频率限制也更容易撞墙。
  • 自动化做不了。想把它塞进工作流、批处理、插件,网页点不了。

网关解决的,就是"把一份授权的额度,变成哪里都能调的 API"。

m365-native 到底是什么

它本质上是个 M365 ChatHub 网关。你先在网页控制台完成 Microsoft 授权登录,它就把这次会话"翻译"成标准接口——之后任何支持 OpenAI Chat / Responses 或 Anthropic Messages 格式的客户端,都能直接打过来。

作者说明,这个项目是在 @HEXUXIU 的 M365-Copilot2API 基础上做的二次开发。所以它是站在两个开源项目肩膀上的产物,不是从零造轮子。

关键点:它暴露三层兼容 API——OpenAI Chat、OpenAI Responses、Anthropic Messages,而且都支持流式输出、多模态和工具调用(tool use)。

m365-native 网关把 Microsoft 365 Copilot 接入 OpenAI 与 Claude 客户端封面图 (m365-native 网关架构图)

 

它能干哪些活

作者列的几个典型场景,基本覆盖了日常最想要的几类:

  • Coding Agent。把端点接进 Claude Code / Codex / Cursor,用 M365 的额度跑编码任务。
  • 自托管聊天前端。在 Open WebUI、LobeChat、ChatGPT-Next-Web 里填个地址就能用。
  • 团队共享 API。多个账户轮换请求、摊薄频率限制,一套部署全队用。
  • 中型 Agent 自动化。多步工具调用 + 长会话连续,适合中等复杂度的工作流。
  • 写作 / 笔记工具。直接接 Typora、Obsidian 这类支持 OpenAI 接口的插件。

六个核心能力

  1. 三种兼容 API。OpenAI Chat / Responses、Anthropic Messages 全支持,流式、多模态、工具调用都在。
  2. 多账号轮询。请求自动在多个 M365 账户间分发,绕开单账户限流;同会话内锁定账户保上下文。
  3. 会话连续。用 session_key 持久映射上游会话,多轮对话不丢上下文。
  4. Key 过期管理。可设"永久有效"或"自定义时长",过期自动返 401。
  5. 账户管理。网页控制台增删账户、看每个账户请求量、清理失效会话。
  6. 一键部署。Docker 启动、非 root 执行、内置 Web 管理面板。

m365-native 网关把 Microsoft 365 Copilot 接入 OpenAI 与 Claude 客户端封面图 (六项核心能力信息图)

 

Docker 一键部署

官方推荐 Docker,最省心。最小步骤就这几行——

PHP
git clone https://github.com/shenping1200/m365-native.gitcd m365-nativemkdir -p data secretsprintf '%s\n' 'your strong password' > secrets/m365_admin_passwordchmod 600 secrets/m365_admin_passworddocker compose builddocker compose up -d

起来之后,浏览器开 http://127.0.0.1:4141,登录 Web 控制台 → 完成 Microsoft 授权 → 创建 API Key,客户端就能用了。

管理员密码写在 secrets 里、权限设成 600,这步别省。它管的是 OAuth 缓存和 token,漏了比漏代码严重。

接到你的客户端

拿到端点(默认本地 127.0.0.1:4141)和 Key 之后,填进客户端就完事:

  • Open WebUI / LobeChat / ChatGPT-Next-Web:在设置里把 API Base URL 指向网关地址,模型名填网关暴露的 ID。
  • Claude Code / Cursor:选自定义网关,Base URL 和 Key 用网关的,即可把 M365 能力当后端模型用。
  • Obsidian / Typora 插件:凡是支持 OpenAI 接口的写作工具,填地址即可直连。

网关暴露的模型 ID 取决于你的账户权限和微软上游(含标准对话、增强推理等类别,以及 Claude Sonnet 系列),在客户端下拉里能看到实际可用的那批。

c6591bfbfab0bbb.png插图(3)

常见问题

  • 一定要 Docker?不是,源码 go run ./cmd/server 也能跑,但 Docker 最干净可复现。
  • 要什么账号?需要你有权限使用的 Microsoft 365 Copilot 账户和租户;网关不提供账号。
  • 轮询怎么触发?不指定账号、无会话绑定时自动轮换;同 session_key 锁定首账户保上下文。
  • Key 过期?去配置页把有效期设回永久,或新建一个。
  • 删了带旧会话的账户报错?已修复(删账户清会话),有问题重启服务即可。
  • 数据存哪?./data 和 ./secrets,含 OAuth 缓存、token、key,记得备份、别提交仓库。
  • 能直曝公网?默认只绑本地 127.0.0.1:4141;公网部署要自己加 TLS 和访问控制(反向代理)。
  • 部分模型用不了?取决于账户权限和微软上游,不是网关问题。

705c00e9f929293.png插图(4)

合规与使用边界

作者原话:这是一个互操作性网关,不是鉴权绕过,只能用于你有权限访问的账户。部署前请确认你的使用方式符合该账户与 Microsoft 的服务条款;不要把它用于任何你无权调用的账户,也不要把密钥和 token 暴露或提交到公开仓库。

我把这段放在显眼位置,是因为这类"把订阅额度接出来"的工具,边界很清晰:在授权范围内做互联互通没问题,越线就另说了。守住"只用自己有权限的账户"这一条,剩下的就是纯粹的工程活。

b4157f2a8194324.png插图(5)

下一步可以做什么

部署跑通后,先把 Coding Agent 这条线接上——在 Claude Code 里填好网关端点,用 M365 额度跑几个真实编码任务,体验一下和直接调 API 的区别。接着可以加第二个账户做轮询,看频率限制是不是真的被摊薄了。最后,把 ./data 和 ./secrets 纳入备份,别等哪天重装发现 OAuth 全没了。

你也在折腾 M365 Copilot 的接入?评论区说说你卡在哪一步——是授权登录、客户端填地址,还是多账号轮询,我挑高频的下一期专门拆。

部署速查

  • 最低要求Docker + 一个 M365 Copilot 授权账户
  • 端口默认 127.0.0.1:4141(仅本地)
  • 密码写 secrets,chmod 600
  • 兼容OpenAI Chat/Responses + Anthropic
  • 轮询多账户自动分发
  • 连续session_key 绑上下文
  • 公网需自建反向代理 + TLS
本文最后更新于2026年8月4日,若涉及的内容可能已经失效,直接留言反馈补链即可,我们会处理,谢谢
声明:本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿用于任何商业目的与商业用途,如需商用请支持正版!如亲下载后改变其用途与使用方式,与本站无任何关系,本站已经进行告知义务!我们只做安全认证测试如果资源侵犯了您的版权利益,请联系站长邮箱:17606723350@163.com