m365动作mcp服务器
添加的MCP服务器 写入操作 和 共享邮箱搜索 微软365——将Anthropic的只读ms365连接器转变为完全双向集成的缺失部分。
为什么存在
Anthropic内置的Microsoft 365连接器为Claude提供了强大的读取权限:搜索电子邮件、浏览日历、查找团队消息、查询SharePoint。但它 无法发送、创建、更新或删除任何内容,而且它有 对共享/委派邮箱的支持有限。此服务器填补了这两个空白。
两个连接器并排运行,Claude可以完成端到端的完整工作流程:阅读电子邮件并回复,查看日历可用性并预订会议,查找团队对话并回复——所有这些都不需要离开聊天室。
可用工具
电子邮件
| 工具 | 说明 | 适用于 |
|---|---|---|
m365_send_mail | 发送新电子邮件 | -- |
m365_reply_mail | 回复现有电子邮件(回复/全部回复) | outlook_email_search (Anthropic)获取消息ID |
m365_get_attachments | 从电子邮件下载附件 | outlook_email_search (Anthropic)获取消息ID |
m365_search_shared_mail | 在共享/委派邮箱中搜索电子邮件 | 独立,使用Graph API/用户/{邮箱}/邮件与KQL搜索 |
日历
| 工具 | 说明 | 适用于 |
|---|---|---|
m365_create_event | 创建日历事件(带有可选的团队链接) | find_meeting_availability (人为)检查插槽 |
m365_update_event | 更新现有事件 | outlook_calendar_search (Anthropic)获取事件ID |
m365_delete_event | 删除事件 | outlook_calendar_search (Anthropic)获取事件ID |
团队
| 工具 | 说明 | 适用于 |
|---|---|---|
m365_list_teams_and_channels | 列出加入的团队及其频道 | -- |
m365_send_channel_message | 向Teams频道发送消息 | m365_list_teams_and_channels 获取ID |
m365_send_chat_message | 在团队聊天中发送消息(1:1或群组) | chat_message_search (Anthropic)获取聊天ID |
m365_reply_to_message | 回复现有团队消息 | chat_message_search (Anthropic)获取消息ID |
它如何与Anthropic连接器配合使用
Anthropic ms365 connector (read) m365-actions-mcp-server (write)
───────────────────────────────── ──────────────────────────────────
outlook_email_search ──→ m365_send_mail / m365_reply_mail
outlook_calendar_search ──→ m365_create_event / m365_update_event
find_meeting_availability ──→ m365_create_event
chat_message_search ──→ m365_send_chat_message / m365_reply_to_message
sharepoint_search ──→ (read-only, no write needed)克劳德自动将这些工具链接在一起。例如:“查找Marco关于发票的电子邮件,并回复说我们将在周五前付款”触发 outlook_email_search (Anthropic)之后 m365_reply_mail (此服务器)。
共享邮箱搜索
m365_search_shared_mail工具填补了Anthropic连接器中的空白:在共享/委托邮箱之间进行可靠搜索。它通过Microsoft Graph API直接访问/用户/{邮箱}/邮件,支持:
- KQL搜索 (发件人:,主题:,自由文本)通过搜索参数
- 日期范围过滤 通过OData过滤器
- 分页回退 在搜索不可用时进行客户端筛选
- 文件夹定位 (收件箱、已发送邮件等)
这是必要的,因为Anthropic连接器outlook_email_search对共享邮箱的索引不可靠,可能会错过大容量邮箱中的电子邮件。
邮件。读。必须在Azure AD中授予共享委派权限,此工具才能工作。
先决条件
- Node.js>=18
- 在Azure AD/Entra ID上注册的应用程序
Azure应用程序配置
- 首选 参赛者ID ->应用程序注册->新注册
- 姓名:
M365 Actions MCP Server - 支持的帐户类型: 单租户
- 重定向URI:平台 网络,URI
http://localhost:3939/auth/callback - 创建一个 客户端密钥 (证书和机密->新客户机密)
- 添加 委派 权限(API权限->Microsoft Graph):
- Mail.Send - Mail.Read - Mail.Read.Shared - Calendars.ReadWrite - Chat.ReadWrite - ChannelMessage.Send - Team.ReadBasic.All - Channel.ReadBasic.All - User.Read - offline_access
- 点击 授予管理员同意
安装
git clone https://github.com/dfsolutions/m365-actions-mcp-server.git
cd m365-actions-mcp-server
npm install配置
复制 .env.example 到 .env 并填写您的Azure应用凭据:
cp .env.example .envM365_CLIENT_ID=your-client-id
M365_CLIENT_SECRET=your-client-secret
M365_TENANT_ID=your-tenant-id
M365_REDIRECT_URI=http://localhost:3939/auth/callback
M365_USER_EMAIL=your-email@domain.com构建并运行
npx tsc
node dist/index.js第一次运行时,浏览器将打开以供Microsoft登录。令牌缓存在 ~/.m365-actions-tokens.json 并自动重复使用。
与Claude Desktop/Cowork集成
添加到MCP配置文件中:
{
"mcpServers": {
"m365-actions": {
"command": "node",
"args": ["/full/path/to/m365-actions-mcp-server/dist/index.js"],
"env": {
"M365_CLIENT_ID": "your-client-id",
"M365_CLIENT_SECRET": "your-client-secret",
"M365_TENANT_ID": "your-tenant-id",
"M365_REDIRECT_URI": "http://localhost:3939/auth/callback",
"M365_USER_EMAIL": "your-email@domain.com"
}
}
}
}或者,如果变量在 .env 项目文件夹中的文件:
{
"mcpServers": {
"m365-actions": {
"command": "node",
"args": ["/full/path/to/m365-actions-mcp-server/dist/index.js"]
}
}
}认证
服务器使用带有 授权码(委托) 流量:
- 首次运行时,它会打开浏览器进行登录
- 在中保存访问+刷新令牌
~/.m365-actions-tokens.json - 到期时自动续订令牌
- 刷新令牌持续约90天,然后需要重新登录
许可证
麻省理工学院
