Token导航 LogoToken导航TokenDH.com
MCP Microsoft Office logo
办公协作未说明官方级别未说明来源级核验

MCP Microsoft Office

MCP Server

通过Graph API连接AI客户端与Microsoft 365,实现多用户协作、文件管理、邮件处理等117种工具操作。

工具数

116

提示词数

0

GitHub Stars

47

资源数

0
JavaScriptClaude团队协作Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Aanerud

提供方

Aanerud

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

](https://mseep.ai/app/aanerud-mcp-microsoft-office)

MCP微软办公软件

一台MCP服务器。多个用户。测试租户上的真实Microsoft 365流量。

______________________________________________________________________

问题

测试租户坐空了。静态测试数据不能执行真实的工作流程。当你需要能够发送真实电子邮件、安排真实会议和在真实团队渠道中协作的代理时,模拟和存根是不够的。

这解决了什么

该项目通过Graph API将任何兼容MCP的AI客户端连接到Microsoft 365。每个代理都作为不同的租户用户进行身份验证,并对真实数据执行实际操作。

  • 117工具 跨12个模块:邮件、日历、文件、, Excel, , 幻灯片、团队、联系人、待办事项、组、人员、搜索
  • 多用户:一台服务器支持整个团队,每台服务器都有独立的数据
  • 实图API调用:每个操作都会击中实际租户,而不是模拟租户
  • 安全:静态加密的令牌,第三方服务器上不存储凭据

______________________________________________________________________

建筑

                    ┌──────────────────┐
                    │  MCP Client      │
                    │  (Claude, etc.)  │
                    └────────┬─────────┘
                             │ JSON-RPC (stdin/stdout)
                    ┌────────▼─────────┐
                    │  MCP Adapter     │
                    │  (runs locally)  │
                    └────────┬─────────┘
                             │ HTTP + Bearer Token
                    ┌────────▼─────────┐
                    │  MCP Server      │
                    │  (local or       │
                    │   remote)        │
                    └────────┬─────────┘
                             │ Microsoft Graph API
                    ┌────────▼─────────┐
                    │  Microsoft 365   │
                    │  (your tenant)   │
                    └──────────────────┘

三个部分:

  1. MCP客户端 --您与之交互的AI
  2. MCP适配器 --将MCP协议转换为HTTP请求的Node.js进程(与客户端在同一台机器上运行)
  3. MCP服务器 --处理身份验证并调用Microsoft Graph API(在本地或远程服务器上运行)

______________________________________________________________________

权限

服务器需要18个Microsoft Graph委托权限。十二项工作未经管理员同意。六项要求租户管理员同意。

无需管理员同意

权限工具已解锁
User.Read身份验证、用户配置文件
Mail.ReadWritereadMail,readMailDetails,markEmailRead,flagMail,getMailAttachments,addMailAttachment,removeMailAttachment
Mail.SendsendMail,回复ToMail
Calendars.ReadWritegetEvents、createEvent、updateEvent、cancelEvent、acceptEvent、tentiveAcceptEvent、declineEvent、getAvailability、findMeetingTimes、getRooms、getCalendars、addAttachment、removeAttachment
Files.ReadWrite.AlllistFiles、uploadFile、downloadFile、getFileMetadata、getFileContent、setFileContent、updateFileContent、createSharingLink、getSharingLinks、removeSharingPermission、listChannelFiles、upload FileToChannel、readChannelFile、, 所有Excel工作簿工具, 所有Word/PowerPoint工具
Contacts.ReadWritelist联系人、获取联系人、创建联系人、更新联系人、删除联系人、搜索联系人
Tasks.ReadWritelistTaskList、getTaskList、createTaskList、updateTaskList、deleteTaskList、listTasks、getTask、createTask、updateTask、deleteTask、completeTask
Chat.ReadWritelistChats,createChat,getChatMessages,sendChatMessage
Channel.ReadBasic.AlllistTeamChannels,getChannelMessages
ChannelMessage.SendsendChannelMessage,replyToMessage
Channel.Create创建团队频道
OnlineMeetings.ReadWrite创建在线会议、获取在线会议、列出在线会议、通过JoinUrl获取会议

需要管理员同意

权限其他工具已解锁
User.Read.All跨团队解析用户ID,人员搜索
People.Read.All查找人员,获取相关人员,获取PersonById
Group.Read.AlllistGroups,getGroup,listGroupMembers,listMyGroups
ChannelMember.ReadWrite.AlladdChannelMember
ChannelMessage.Read.All读取频道消息历史记录
OnlineMeetingTranscript.Read.AllgetMeetingTranscripts,getMeetingTranscript内容

未经管理员同意,您将获得邮件、日历、文件、Excel工作簿、Word文档、PowerPoint演示文稿、联系人、待办事项、聊天和基本团队频道操作。 经管理员同意,您可以添加人员目录搜索、组、频道成员管理和会议记录。

______________________________________________________________________

快速开始

先决条件

  • Node.js 18+ (下载)
  • 克劳德桌面 (下载)或另一个MCP客户端
  • Microsoft 365帐户 (工作、学校或个人)

步骤1:Azure应用程序注册

  1. 首选 Azure门户 > 微软Entra ID > 应用注册 > 新注册
  2. 命名它 MCP-Microsoft-Office,使用您首选的帐户类型注册
  3. 复制 应用程序(客户端)ID目录(租户)ID
  4. 首选 API权限 > 添加权限 > 微软图形 > 委托权限
  5. 添加上面列出的18个权限
  6. 如果您是租户管理员,请单击 授予管理员同意
  7. 首选 认证 > 添加平台 > 网络

- 重定向URI: http://localhost:3000/api/auth/callback - 启用 允许公共客户端流

步骤2:克隆和配置

git clone https://github.com/Aanerud/MCP-Microsoft-Office.git
cd MCP-Microsoft-Office
npm install

复制 .env.example.env 并填写您的Azure应用程序详细信息:

MICROSOFT_CLIENT_ID=your-client-id
MICROSOFT_TENANT_ID=your-tenant-id

步骤3:启动服务器并进行身份验证

npm run dev:web

打开 http://localhost:3000 在您的浏览器中。点击 使用Microsoft登录,登录并授予权限。然后单击 生成MCP令牌 并复制令牌。

步骤4:配置Claude桌面

编辑您的Claude Desktop配置:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

Claude Desktop的实际限制是每个MCP服务器约55个工具。该项目公开了117个工具,因此我们将它们分为三个共享相同适配器和后端的服务器:

{
  "mcpServers": {
    "microsoft-365": {
      "command": "node",
      "args": ["/path/to/MCP-Microsoft-Office/mcp-adapter.cjs"],
      "env": {
        "MCP_SERVER_URL": "http://localhost:3000",
        "MCP_BEARER_TOKEN": "paste-your-token-here",
        "MCP_MODULES": "search,mail,calendar,files,people,contacts,groups,query"
      }
    },
    "microsoft-365-teams": {
      "command": "node",
      "args": ["/path/to/MCP-Microsoft-Office/mcp-adapter.cjs"],
      "env": {
        "MCP_SERVER_URL": "http://localhost:3000",
        "MCP_BEARER_TOKEN": "paste-your-token-here",
        "MCP_MODULES": "teams,todo"
      }
    },
    "microsoft-365-office": {
      "command": "node",
      "args": ["/path/to/MCP-Microsoft-Office/mcp-adapter.cjs"],
      "env": {
        "MCP_SERVER_URL": "http://localhost:3000",
        "MCP_BEARER_TOKEN": "paste-your-token-here",
        "MCP_MODULES": "excel,word,powerpoint,files"
      }
    }
  }
}

MCP_MODULES 过滤适配器暴露的模块。省略它以显示所有117个工具(适用于没有工具盖的客户端)。

MCP_DEBUG=1env 块以启用到stderr的诊断日志记录,这对于排除工具调度问题非常有用。

重新启动克劳德桌面。问: *“今天我的日历上有什么?”* 或 *“使用预算表创建Excel工作簿。”*

______________________________________________________________________

工具(117)

邮件(9)

工具说明
readMail阅读收件箱消息
sendMail发送电子邮件
replyToMail回复电子邮件
readMailDetails获取完整的电子邮件内容
markEmailRead将电子邮件标记为已读/未读
flagMail标记或取消标记电子邮件
getMailAttachments列出电子邮件附件
addMailAttachment在电子邮件中添加附件
removeMailAttachment从电子邮件中删除附件

日历(13)

工具说明
getEvents获取日历事件
createEvent创建会议或活动
updateEvent修改现有事件
cancelEvent取消活动
acceptEvent接受会议邀请
tentativelyAcceptEvent暂时接受
declineEvent拒绝会议邀请
getAvailability查看空闲/繁忙时间
findMeetingTimes查找最佳会议时段
getRooms查找会议室
getCalendars列出所有日历
addAttachment向事件添加附件
removeAttachment删除事件附件

文件(10)

工具说明
listFiles列出OneDrive文件
uploadFile上传文件
downloadFile下载文件
getFileMetadata获取文件信息
getFileContent读取文件内容
setFileContent写入文件内容
updateFileContent更新现有文件
createSharingLink创建共享链接
getSharingLinks列出共享链接
removeSharingPermission删除共享访问权限

Excel(30)

直接使用存储在OneDrive或SharePoint中的Excel工作簿,无需下载文件。所有操作都通过Microsoft Graph的工作簿API进行透明的会话管理。

工具说明
createWorkbookSession打开工作簿会话(持久或临时)
closeWorkbookSession关闭活动工作簿会话
listWorksheets列出工作簿中的所有工作表
addWorksheet添加新工作表
getWorksheet按名称或ID获取工作表
updateWorksheet重命名、重新定位或隐藏工作表
deleteWorksheet删除工作表
getRange读取单元格值、公式和格式
updateRange将值写入单元格范围
getRangeFormat获取格式(字体、填充、边框)
updateRangeFormat设置格式(粗体、颜色、数字格式)
sortRange在一定范围内对单元格进行排序
mergeRange合并单元格
unmergeRange取消合并单元格
listTables列出工作表中的所有表
createTable从范围创建表
updateTable重命名或重新设置表样式
deleteTable删除表格
listTableRows列出表中的所有行
addTableRow向表中添加行
deleteTableRow按索引删除行
listTableColumns列出表中的所有列
addTableColumn向表中添加列
deleteTableColumn删除列
sortTable按列对表进行排序
filterTable对表列应用筛选器
clearTableFilter清除列筛选器
convertTableToRange将表转换回纯范围
callWorkbookFunction调用300多个Excel函数中的任何一个(SUM、VLOOKUP、PMT等)
calculateWorkbook重新计算所有公式

单词(5)

创建、阅读和转换Word文档。文档由结构化JSON创建并存储在OneDrive中。阅读使用多库回退链:mammath(.docx的最佳HTML)→ 单词提取器(同时处理.doc和.docx)→ webUrl回退。二进制下载使用Graph测试版 /contentStream 用于可靠二进制传输的端点。

工具说明
createWordDocument从结构化内容(标题、段落、表格、列表、图像)创建.docx
readWordDocument以HTML和纯文本形式读取文档
getWordDocumentMetadata获取标题、作者、日期、关键字
getWordDocumentAsHtml将文档内容转换为HTML
convertDocumentToPdf将Word文档转换为PDF
注: 一些SharePoint租户在上传后几秒钟内将上传的.docx文件转换为OLE2二进制格式。当这种情况发生时,客户端解析库无法读取文件。服务器优雅地返回 webUrl 因此用户可以在浏览器中打开文档。

PowerPoint(4)

创建、阅读和转换PowerPoint演示文稿。演示文稿由结构化幻灯片数据构建并存储在OneDrive中。阅读使用Graph HTML转换和jszip回退进行幻灯片级文本提取。

工具说明
createPresentation创建一个包含标题、内容和空白幻灯片的.pptx
readPresentation读取幻灯片内容(每张幻灯片的文本元素)
getPresentationMetadata获取标题、作者、幻灯片数量、日期
convertPresentationToPdf将演示文稿转换为PDF

团队(21)

工具说明
listChats列出团队聊天记录
createChat创建新聊天
getChatMessages阅读聊天信息
sendChatMessage发送聊天消息
listJoinedTeams列出你的团队
listTeamChannels列出团队频道
createTeamChannel创建频道
addChannelMember将成员添加到频道
getChannelMessages读取频道消息
sendChannelMessage发布到频道
replyToMessage回复频道消息
listChannelFiles列出频道中的文件
uploadFileToChannel将文件上传到频道
readChannelFile读取频道文件
createOnlineMeeting创建团队会议
getOnlineMeeting获取会议详细信息
listOnlineMeetings列出在线会议
getMeetingByJoinUrl通过加入URL查找会议
getMeetingTranscripts获取会议记录
getMeetingTranscriptContent阅读成绩单内容

*(注: addChannelMember 仅适用于私人频道。标准频道自动包括所有团队成员。)*

联系人(6)

工具说明
listContacts列出联系人
getContact获取联系方式
createContact创建联系人
updateContact更新联系信息
deleteContact删除联系人
searchContacts搜索联系人

待办事项(11)

工具说明
listTaskLists列出任务列表
getTaskList获取任务列表
createTaskList创建任务列表
updateTaskList重命名任务列表
deleteTaskList删除任务列表
listTasks列出任务
getTask获取任务详细信息
createTask创建任务
updateTask更新任务
deleteTask删除任务
completeTask标记任务完成

团体(4)

工具说明
listGroups列出Microsoft 365组
getGroup获取组详细信息
listGroupMembers列出组成员
listMyGroups列出您的组

人(3)

工具说明
findPeople搜索目录
getRelevantPeople频繁联系
getPersonById获取人员详细信息

搜索(1)

工具说明
search跨电子邮件、文件、事件和聊天消息的统一搜索

______________________________________________________________________

多用户

每个用户都独立进行身份验证。服务器通过用户身份隔离所有数据。

  Alice (alice@contoso.com)          Bob (bob@contoso.com)
  ├─ Her own Microsoft tokens        ├─ His own Microsoft tokens
  ├─ Her own session                  ├─ His own session
  └─ Claude Desktop (her laptop)     └─ Claude Desktop (his PC)

              Complete data isolation.
         Alice never sees Bob's data.

对于 使用多个代理进行自动化测试,使用ROPC(资源所有者密码凭据)流以编程方式进行身份验证:

# Start the server
npm run dev:web

# Run the E2E test suite (authenticates 3 users via ROPC)
node tests/run-all.cjs

该测试套件对多个用户进行身份验证,然后在12个模块和5个跨模块工作流中练习所有117个工具。看 tests/ 为了全面实施。

______________________________________________________________________

E2E测试套件

该项目包括一个涵盖所有117个工具的全面测试套件。

# Run all tests (requires server running)
node tests/run-all.cjs

# Run a single module
node tests/run-all.cjs --bucket mail --buckets-only

# Run only workflows
node tests/run-all.cjs --workflows-only

测试结构:

tests/
  lib/           Shared auth, HTTP client, reporter
  buckets/       One file per module (12 files, 117 tools)
  workflows/     Cross-module tests (5 files)
  run-all.cjs    Master runner

测试通过ROPC进行身份验证(无需手动令牌管理),并在约100秒内运行。

______________________________________________________________________

环境变量

复制 .env.example.env 并配置:

变量必填描述
MICROSOFT_CLIENT_IDAzure应用程序客户端ID
MICROSOFT_TENANT_IDAzure租户ID
MICROSOFT_REDIRECT_URIOAuth回调URL(默认值: http://localhost:3000/api/auth/callback)
DEVICE_REGISTRY_ENCRYPTION_KEY生产用于令牌存储的32字节加密密钥
JWT_SECRET生产签署JWT代币的秘密
CORS_ALLOWED_ORIGINS生产逗号分隔的允许来源
PORT服务器端口(默认值: 3000)
NODE_ENV没有developmentproduction

______________________________________________________________________

部署

本地(建议入门)

npm install
npm run dev:web

Azure应用服务

docs/azure-deployment.md 使用GitHub Actions进行CI/CD部署。

______________________________________________________________________

安全

  • 加密存储:所有使用AES-256静态加密的Microsoft令牌
  • 没有客户机密:使用公共客户端流(PKCE)进行桌面身份验证
  • 令牌隔离:每个用户的令牌分别存储在不同的加密密钥中
  • 速率限制:内置速率限制可防止滥用
  • CORS保护:生产中的起源异物种
  • 会话到期:会话将在24小时后过期

生产清单

  • \[\]设置 NODE_ENV=production
  • \[\]设置 DEVICE_REGISTRY_ENCRYPTION_KEY (32字节)
  • \[\]设置 JWT_SECRET (强随机字符串)
  • \[\]设置 CORS_ALLOWED_ORIGINS
  • \[\]使用带有有效证书的HTTPS

______________________________________________________________________

项目结构

MCP-Microsoft-Office/
├── mcp-adapter.cjs          MCP protocol adapter (runs locally with Claude Desktop)
├── src/
│   ├── api/                 Express routes and controllers
│   ├── auth/                MSAL authentication (OAuth2, ROPC, token exchange)
│   ├── core/                Services (cache, storage, tools, error handling)
│   ├── graph/               Microsoft Graph API services
│   │   ├── graph-client.cjs   HTTP client with retry, binary support, sessions
│   │   ├── files-service.cjs  OneDrive file operations
│   │   ├── excel-service.cjs  Workbook API (sessions, ranges, tables, functions)
│   │   ├── word-service.cjs   Word create/read (docx + mammoth + word-extractor)
│   │   └── powerpoint-service.cjs  PPT create/read (pptxgenjs + jszip)
│   └── modules/             Feature modules (mail, calendar, excel, word, powerpoint, etc.)
├── public/                  Web UI for authentication
└── tests/                   E2E test suite (gitignored)

______________________________________________________________________

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

______________________________________________________________________

许可证

MIT许可证——见 许可证 文件。

目录标签

目录标签

JavaScriptClaude团队协作Microsoft365集成本地部署GraphAPI多用户协作文件管理邮件处理AI自动化

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

116

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP