Microsoft 365集成工具

Celavii M365是一款将Microsoft 365集成到Claude Desktop的工具,支持管理邮件、日历、OneDrive文件、收件箱规则以及控制Power Automate流程。

  • by CelaviiHQ
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 CelaviiHQ/celavii-m365

使用说明

塞拉维M365

将Microsoft 365连接到Claude——阅读电子邮件、管理日历、浏览OneDrive文件、组织收件箱和控制Power Automation流程,所有这些都可以在Claude Desktop内完成。

35工具 跨7个模块,完全通过Zod验证。

模块 你能做什么
电子邮件 阅读、搜索、发送、起草、标记阅读、组织
日历 列出、创建、接受、拒绝、取消、删除事件
OneDrive 浏览、搜索、上传、下载、共享文件
文件夹 列出、创建邮件文件夹、移动电子邮件
规则 列出、创建、重新排序、删除收件箱规则
电力自动化 列出环境、列出/运行/切换流、查看运行历史记录
认证 验证、检查状态、注销、关于

快速开始

先决条件

选项A:合作/聊天(推荐)

“协作”和“聊天”选项卡在无法访问本地文件的沙箱中运行MCP服务器。此设置在您的计算机上运行一个持久HTTP服务器,并通过Cloudflare HTTPS隧道连接。

git clone https://github.com/CelaviiHQ/celavii-m365.git
cd celavii-m365
./setup-cowork.sh

脚本将:

  1. 提示输入Azure AD凭据
  2. 构建MCP服务器和技能插件
  3. 启动HTTP服务器+HTTPS隧道
  4. 打开浏览器进行Microsoft登录
  5. 打印Claude Desktop的两个设置步骤

要求: node, cloudflared (如果缺少,则通过Homebrew自动安装)

注: 免费的快速隧道会生成一个随机URL,每次重新启动时都会发生变化。对于一个 持久URL 如果重启后仍能存活,请设置 命名为Cloudflare隧道 (需要免费的Cloudflare帐户):

cloudflared tunnel login
cloudflared tunnel create celavii-m365
cloudflared tunnel route dns celavii-m365 mcp.yourdomain.com

然后开始隧道 cloudflared tunnel run celavii-m365 而不是快速隧道。看 持久隧道设置 了解详情。

选项B:代码选项卡(插件)

“代码”选项卡以完全文件系统访问权限在本地运行MCP服务器。一个ZIP插件可以处理所有事情。

git clone https://github.com/CelaviiHQ/celavii-m365.git
cd celavii-m365
./build-plugin.sh --client-id YOUR_CLIENT_ID --secret YOUR_SECRET --tenant-id YOUR_TENANT_ID

然后在Claude Desktop中:

  1. 定制 → + → 上传本地插件
  2. 选择 celavii-m365-plugin.zip
  3. 开始聊天并说: “使用Microsoft 365进行身份验证”
  4. 单击身份验证链接,登录,您就设置好了

选项C:Claude代码命令行界面

claude mcp add --transport stdio --scope user \
  --env M365_CLIENT_ID=YOUR_ID \
  --env M365_CLIENT_SECRET=YOUR_SECRET \
  --env M365_TENANT_ID=YOUR_TENANT \
  celavii-m365 -- npx -y celavii-m365@latest

Azure AD安装程序

注: 如果您不是IT管理员,请让您的Microsoft 365管理员执行此步骤,并与您共享客户端ID、客户端密码和租户ID。

  1. 首选 Azure门户>应用程序注册
  2. 点击 新注册
  3. 设置名称(例如,“Celavii M365 MCP”)
  4. 集 重定向URI 到 http://localhost:3333/auth/callback (网络平台)
  5. 在...之下 证书和秘密,创建新的客户端机密--复制 价值 (不是秘密ID!)
  6. 在...之下 API权限,添加这些Microsoft Graph权限:
    • Mail.Read, Mail.ReadWrite, Mail.Send
    • User.Read
    • Calendars.Read, Calendars.ReadWrite
    • Files.Read, Files.ReadWrite
  7. 点击 授予管理员同意 (或让管理员来做)
  8. 复制这三个值:
    • 应用程序(客户端)ID → M365_CLIENT_ID
    • 客户端机密值 → M365_CLIENT_SECRET
    • 目录(租户)ID → M365_TENANT_ID

运作原理

建筑

MCP服务器支持两种传输模式:

Stdio HTTP可流式传输
它是如何运行的 克劳德推出 npx celavii-m365 作为子进程 您启动服务器,Claude通过HTTPS连接
代码选项卡 作品 作品
合作/聊天 沙盒阻止文件系统访问 有效(通过Cloudflare隧道)
身份验证服务器 嵌入式,在调用之间死亡 持久,始终可用
设置 build-plugin.sh setup-cowork.sh

协作设置流程

./setup-cowork.sh
       │
       ├── npm install && npm run build (if needed)
       ├── build-plugin.sh --skills-only → plugin ZIP (skills only, no MCP)
       ├── Start HTTP MCP server (port 3333)
       ├── cloudflared tunnel → https://xxx.trycloudflare.com
       ├── Open browser for OAuth sign-in
       │
       └── Output:
             1. Upload plugin ZIP for skills
             2. Add custom connector: https://xxx.trycloudflare.com/mcp

HTTP服务器端点

端点 描述
POST /mcp MCP流式HTTP(工具调用)
GET /mcp MCP SSE流(重新连接)
DELETE /mcp MCP会话终止
GET /auth 启动Microsoft OAuth流
GET /auth/callback OAuth重定向处理程序
GET /health 健康检查(JSON)

环境变量

变量 必填 描述
M365_CLIENT_ID 是 Azure AD应用程序(客户端)ID
M365_CLIENT_SECRET 是 Azure AD客户端机密 价值 (不是秘密ID!)
M365_TENANT_ID 否 Azure AD租户ID。默认为 common (多租户)
M365_REDIRECT_URI 否 OAuth回调URL。默认为 http://localhost:3333/auth/callback
M365_TOKEN_PATH 否 令牌存储的自定义路径。默认为 ~/.celavii-m365-tokens.json
M365_AUTH_PORT 无 HTTP服务器端口。默认为 3333
M365_ALLOWED_HOSTS 否 用于DNS重新绑定保护的逗号分隔主机名(例如。 mcp.example.com).在反向代理或隧道后面运行时需要。

持久隧道设置

快速隧道(setup-cowork.sh)生成一个随机URL,每次重新启动时都会更改。对于永久URL:

  1. 创建免费 Cloudflare帐户 并添加域

  2. 登录并创建一个命名隧道:

    cloudflared tunnel login
    cloudflared tunnel create celavii-m365
    cloudflared tunnel route dns celavii-m365 mcp.yourdomain.com
    
  3. 创建 ~/.cloudflared/config.yml:

    tunnel: <TUNNEL_ID>
    credentials-file: ~/.cloudflared/<TUNNEL_ID>.json
    
    ingress:
      - hostname: mcp.yourdomain.com
        service: http://localhost:3333
      - service: http_status:404
    
  4. 使用允许的主机启动服务器:

    M365_CLIENT_ID=... M365_CLIENT_SECRET=... M365_TENANT_ID=... \
    M365_ALLOWED_HOSTS=mcp.yourdomain.com \
    node mcp/dist/remote/index.js &
    
    cloudflared tunnel run celavii-m365
    
  5. 在Claude Desktop中设置连接器URL 到 https://mcp.yourdomain.com/mcp --这个URL永远不会改变。

启动时运行(macOS)

要在重新启动时保持MCP服务器和隧道运行,请将其安装为macOS启动代理:

./install-service.sh \
  --client-id YOUR_CLIENT_ID \
  --secret YOUR_CLIENT_SECRET \
  --tenant-id YOUR_TENANT_ID \
  --hostname mcp.yourdomain.com \
  --tunnel-id YOUR_TUNNEL_ID

这将创建两个启动代理,它们在登录时自动启动,并在崩溃时重新启动:

  • com.celavii.m365-mcp --端口3333上的HTTP MCP服务器
  • com.celavii.m365-tunnel --Cloudflare命名隧道

要管理它们:

# View logs
tail -f ~/.celavii-m365-mcp.log
tail -f ~/.celavii-m365-tunnel.log

# Stop
launchctl unload ~/Library/LaunchAgents/com.celavii.m365-mcp.plist
launchctl unload ~/Library/LaunchAgents/com.celavii.m365-tunnel.plist

# Uninstall
./install-service.sh --uninstall

全部37个工具

Click to expand full tool list

电子邮件(7个工具)

  • m365_list_邮件 --列出带有文件夹、计数、跳过、未读过滤器的电子邮件
  • m365_搜索_邮件 --按查询、发件人、主题、附件、阅读状态搜索
  • m365_电子邮件 --阅读完整的电子邮件内容(HTML自动净化以确保安全)
  • m365_send_email --发送至/CC/BCC,HTML自动检测,重要性,定时发送
  • m365_draft_email --创建草稿而不发送
  • m365_send_draft --发送现有草稿,可选择在预定时间发送
  • m365_mark_as_read --将一封或多封电子邮件标记为已读/未读

日历(6工具)

  • m365_list_事件 --列出日期范围内的事件(默认值:接下来的30天)
  • m365_create_event --创建与会者、位置、全天、时区
  • m365_接受事件 --接受带有可选评论的邀请
  • m365_declineevent --使用可选评论拒绝邀请
  • m365_取消_事件 --取消活动,通知与会者
  • m365_delete_event --永久删除事件

OneDrive(7个工具)

  • m365_onedrive_list --按路径浏览文件和文件夹
  • m365_onedrive_search --按名称或内容搜索文件
  • m365_汽车_下载 --获取临时下载URL
  • m365_onedrive_upload --上传文件(文本或base64)
  • m365_onedrive_share --创建共享链接(查看/编辑/嵌入)
  • m365_onedrive_create_folder --创建文件夹
  • m365_onedrive_delete --删除文件或文件夹

邮件文件夹(3个工具)

  • m365_list_folders --列出包含项目/未读计数的文件夹
  • m365_create_folder --创建文件夹(支持嵌套)
  • m365_移动电子邮件 --在文件夹之间移动电子邮件

收件箱规则(4个工具)

  • m365_list_rules --列出带有条件和操作的规则
  • m365_create_rule --创建规则(来源、主题、附件触发器)
  • m365_update_rule_sequence --更改规则执行顺序
  • m365_delete_rule --删除规则

电力自动化(5个工具)

  • m365_flow_list_环境 --列出Power平台环境
  • m365_flow_list --环境中的列表流
  • m365_flow_run --触发手动流程
  • m365_flow_list_run --查看流执行历史记录
  • m365_flow_toggle --启用或禁用流

身份验证(4个工具)

  • m365_身份验证 --启动OAuth流
  • m365_check_auth_status --验证令牌有效性
  • m365_痛风 --清除存储的令牌
  • m365_关于 --服务器信息和功能

脚本

脚本 目的
setup-cowork.sh 一个命令协作/聊天设置(服务器+隧道+插件+身份验证)
install-service.sh 作为macOS启动代理安装(登录时自动启动,持久)
build-plugin.sh 构建插件ZIP(支持 --skills-only, --http,标准输入模式)
install.sh 跨IDE安装程序(Claude Code、Windsurf、Cursor)

安全

  • 令牌存储:令牌存储在 0600 权限(仅限所有者读/写)
  • HTML净化:邮件正文经过消毒,防止及时注射
  • OData逃逸:过滤器中的用户输入已正确转义,以防止注入
  • CSRF保护:OAuth状态参数已验证,有效期为10分钟
  • URL中没有秘密:访问令牌仅在授权标头中发送

故障排除

Cowork says "Not authenticated" after signing in

Cowork在沙箱中运行MCP服务器,无需访问文件系统。stdio插件无法读取令牌文件。使用 setup-cowork.sh 相反,它在沙箱外运行一个持久的HTTP服务器,并通过Cloudflare隧道连接。

Cowork tools fail after server restart

当MCP服务器重新启动时,现有的Cowork会话将失去连接。要修复:

  1. 首选 定制 → 连接器
  2. 断开 那么,塞拉维-m365 重新连接 它
  3. 开始a 新聊天 --旧会话无法恢复

如果这不起作用,请完全删除连接器,并使用相同的URL重新添加。

"Failed to add connector" (HTTPS required)

Claude Desktop自定义连接器需要HTTPS URL setup-cowork.sh 脚本使用Cloudflare隧道自动处理此问题。如果您手动运行HTTP服务器,则需要设置自己的HTTPS代理或隧道。

Auth server port already in use

另一个进程正在使用端口3333。与核对 lsof -i :3333 并杀死它,或设置一个不同的端口: M365_AUTH_PORT=3334 ./setup-cowork.sh ...

Token expired or auth lost

令牌会自动刷新,但如果它们完全过期:

  1. 问克劳德: “退出Microsoft 365”
  2. 重新验证(访问 http://localhost:3333/auth 如果使用HTTP模式)

或者手动删除令牌文件: rm ~/.celavii-m365-tokens.json

MCP server not connecting
  • 确保 Node.js 18+ 已安装: node --version
  • 检查一下 npx celavii-m365 在您的终端中工作
  • 安装或更新插件后重新启动Claude Desktop
  • 检查 定制 → 连接器 查看celavii-m365是否显示连接错误

发展

cd mcp
npm install
npm run build        # Build with tsup
npm run typecheck    # Type check
npm run dev          # Watch mode

项目结构

celavii-m365/
  .claude-plugin/       Plugin manifest
  .mcp.json             MCP server config (template)
  skills/               6 Agent Skills (domain guides)
  setup-cowork.sh       Cowork/Chat one-command setup
  build-plugin.sh       Plugin ZIP builder
  install.sh            Cross-IDE installer
  mcp/                  TypeScript MCP server
    src/
      index.ts          Stdio entry point + embedded auth server
      remote/index.ts   HTTP Streamable entry point
      server.ts         Server factory + tool registration
      client.ts         GraphClient (Graph API + Flow API)
      types.ts          Shared types and constants
      auth-server.ts    Standalone OAuth server
      auth/token-store.ts  Token persistence + refresh
      tools/            35 MCP tools across 7 modules
      utils/            Folder resolution + formatters

贡献

欢迎投稿!请打开问题或PR。

许可证

麻省理工学院——见 许可证.