塞拉维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脚本将:
- 提示输入Azure AD凭据
- 构建MCP服务器和技能插件
- 启动HTTP服务器+HTTPS隧道
- 打开浏览器进行Microsoft登录
- 打印Claude Desktop的两个设置步骤
要求: node, cloudflared (如果缺少,则通过Homebrew自动安装)
注: 免费的快速隧道会生成一个随机URL,每次重新启动时都会发生变化。对于一个 持久URL 如果重启后仍能存活,请设置 命名为Cloudflare隧道 (需要免费的Cloudflare帐户): ``bash 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中:
- 定制 → + → 上传本地插件
- 选择
celavii-m365-plugin.zip - 开始聊天并说: *“使用Microsoft 365进行身份验证”*
- 单击身份验证链接,登录,您就设置好了
选项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。
- 首选 Azure门户>应用程序注册
- 点击 新注册
- 设置名称(例如,“Celavii M365 MCP”)
- 集 重定向URI 到
http://localhost:3333/auth/callback(网络平台) - 在...之下 证书和秘密,创建新的客户端机密--复制 价值 (不是秘密ID!)
- 在...之下 API权限,添加这些Microsoft Graph权限:
- Mail.Read, Mail.ReadWrite, Mail.Send - User.Read - Calendars.Read, Calendars.ReadWrite - Files.Read, Files.ReadWrite
- 点击 授予管理员同意 (或让管理员来做)
- 复制这三个值:
- 应用程序(客户端)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/mcpHTTP服务器端点
| 端点 | 描述 |
|---|---|
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:
- 创建免费 Cloudflare帐户 并添加域
- 登录并创建一个命名隧道:
cloudflared tunnel login
cloudflared tunnel create celavii-m365
cloudflared tunnel route dns celavii-m365 mcp.yourdomain.com- 创建
~/.cloudflared/config.yml:
tunnel:
credentials-file: ~/.cloudflared/.json
ingress:
- hostname: mcp.yourdomain.com
service: http://localhost:3333
- service: http_status:404- 使用允许的主机启动服务器:
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- 在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会话将失去连接。要修复:
- 首选 定制 → 连接器
- 断开 那么,塞拉维-m365 重新连接 它
- 开始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
令牌会自动刷新,但如果它们完全过期:
- 问克劳德: *“退出Microsoft 365”*
- 重新验证(访问
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。
许可证
麻省理工学院——见 许可证.
