关于 Microsoft 365 Files
Microsoft 365 Files 是通过 Microsoft Graph 管理 OneDrive 文件的 MCP 服务,涵盖文件操作、共享、版本记录、活动查询和文本提取,并复用 Microsoft 365 Mail 主机管理的 OAuth 凭据。
主要功能
- 01列出、搜索和查看文件
- 02上传、下载、移动、复制和删除
- 03创建共享链接并管理权限
- 04查看版本记录和文件活动
- 05读取文本并提取 Word 或 PowerPoint 内容
适用场景
- 01查找并共享 OneDrive 文档
- 02恢复较早的文件版本
- 03提取 Word 或 PowerPoint 文件文本
MCP 相关
通过 Microsoft Graph 向 MCP 客户端提供 OneDrive 文件和文件夹操作,包括共享、权限、版本、活动和文档文本提取。OAuth 由主机通过 Microsoft 365 Mail 处理;此服务读取生成的凭据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @mindstone/mcp-server-microsoft-filesMS_CLIENT_IDMicrosoft Entra (Azure AD) application client IDMS_CONFIG_DIRPath to the per-user Microsoft config directory (credentials/, accounts.json)MS_ACCOUNT_EMAILAccount email when running in multi-account per-instance mode (falls back to the first account in accounts.json)MS_MCP_PACKAGE_IDLogical package ID surfaced in error responsesMICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
20收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| top | integer | 否 | 返回的最大条目数(默认值:50) |
| path | string | 否 | 文件夹路径(例如:"/Documents")或项目 ID |
详细介绍
@mindstone/mcp-server-microsoft-files
Microsoft 365 OneDrive 文件 MCP 服务——通过 Microsoft Graph API 列出、搜索、获取、下载、上传、删除、移动、复制和共享文件,管理共享权限和版本历史记录,查看文件活动,以及读取文本和 Office 文档内容。
面向 Microsoft 365 OneDrive 的 Cohort 风格 MCP。复用 @mindstone/mcp-server-microsoft-mail 所负责的 OAuth 接入,因此宿主只需登录一次,即可使用文件、邮件、日历、Teams 和 SharePoint,并共享同一组凭据。
状态
- 版本: 0.2.1 · npm
- 身份验证: OAuth(由宿主协调,与
mcp-server-microsoft-mail共享)(MS_CLIENT_ID) - 工具: 20(文件、文件夹、共享、权限、版本、活动)
- 接入方式: cloud-api
- 机器可读信息:
STATUS.json - 共享库:
@mindstone/mcp-server-microsoft-shared
项目缘起
2026 年 5 月移植本项目时,Microsoft 自家的 Graph MCP 系列尚未提供独立的 OneDrive 服务,当时的社区方案则将 OneDrive 视为独立的登录入口——每个连接器都要单独完成一次 OAuth 流程,并存储自己的刷新令牌副本。我们将 MindstoneRebel 中捆绑的连接器拆分出来,按原样移植,以便同一组由五个连接器组成的 Microsoft 365 套件(邮件、日历、文件、Teams、SharePoint)共享一组凭据、一个用于令牌持久化和请求超时处理的共享库包,以及宿主已知如何恢复的结构化 auth_required 信封。Files 复用 @mindstone/mcp-server-microsoft-mail 的 authenticate_microsoft_account 工具,而不是自行声明该工具。
交互示例
“在我的 OneDrive 中查找
Q3-plan.docx的最新版本,并提供一个团队可读取的共享链接。”
宿主调用的工具:
search_files—name:Q3-plan.docx,返回最新的匹配项。share_file— 为该项创建只读共享链接。
响应(已删节):
{
"match": {
"id": "01H7...",
"name": "Q3-plan.docx",
"lastModifiedDateTime": "2026-05-18T17:42:00Z"
},
"share": {
"type": "view",
"scope": "organization",
"webUrl": "https://example-my.sharepoint.com/:w:/g/personal/.../EZk..."
}
}
要求
- Node.js 20+
- npm
- 能够执行 Microsoft OAuth 流程,并将每个帐户的令牌文件写入
${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json,且写入${MS_CONFIG_DIR}/accounts.json索引的宿主应用。本服务读取这些文件;不会自行发起 OAuth 流程。
一键安装
点击按钮后,宿主将提示你填写:MS_CLIENT_ID、MS_CONFIG_DIR、MS_MCP_PACKAGE_ID、MICROSOFT_REQUEST_TIMEOUT_MS。
Claude Desktop / Claude Code / Goose / Continue.dev(Microsoft 365 Files)的手动配置
{
"mcpServers": {
"Microsoft 365 Files": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-files"
],
"env": {
"MS_CLIENT_ID": "",
"MS_CONFIG_DIR": "",
"MS_MCP_PACKAGE_ID": "Microsoft365Files",
"MICROSOFT_REQUEST_TIMEOUT_MS": "60000"
}
}
}
}
快速入门
安装与构建
cd <path-to-repo>/connectors/microsoft-files
npm install
npm run build
npx(发布后使用)
npx -y @mindstone/mcp-server-microsoft-files
本地
node dist/index.js
配置
此服务与负责 Microsoft 365 OAuth 流程的宿主应用并行运行。宿主会将凭据写入磁盘;此服务会读取这些凭据。
必需的环境变量
| 名称 | 说明 |
|---|---|
MS_CLIENT_ID | Microsoft Entra(Azure AD)应用程序客户端 ID。 |
MS_CONFIG_DIR | 每用户 Microsoft 配置目录的路径(credentials/、accounts.json)。 |
可选的环境变量
| 名称 | 说明 | 默认值 |
|---|---|---|
MS_ACCOUNT_EMAIL | 以每实例多账户模式运行时的账户邮箱。 | accounts.json 中的第一个账户。 |
MS_MCP_PACKAGE_ID | 错误响应中显示的逻辑软件包 ID。 | Microsoft365Files |
MICROSOFT_REQUEST_TIMEOUT_MS | 覆盖上游 Microsoft Graph 请求超时时间(最长 300000 毫秒)。 | 60000 |
MICROSOFT_DISABLE_REFRESH | 设置为 1 可在此服务端禁用令牌刷新。工具将以结构化的 auth_required 响应失败关闭,以便宿主处理重新认证。云端服务会将其设为 1。 | 未设置 |
宿主配置示例
Claude Desktop / Cursor
{
"mcpServers": {
"Microsoft365Files": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-microsoft-files"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
请先通过 @mindstone/mcp-server-microsoft-mail 的 authenticate_microsoft_account 登录;随后,文件工具会复用其写入 ${MS_CONFIG_DIR}/ 的凭据。
本地开发(无需发布到 npm)
{
"mcpServers": {
"Microsoft365Files": {
"command": "node",
"args": ["<path-to-repo>/connectors/microsoft-files/dist/index.js"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
工具(20)
| 工具 | 描述 |
|---|---|
list_files | 列出 OneDrive 中的文件和文件夹(默认列出根目录)。 |
get_file | 获取特定文件或文件夹的元数据。 |
download_file | 获取文件的短时有效下载 URL。 |
search_files | 按名称或内容搜索 OneDrive 中的文件。 |
upload_file | 将文件上传到 OneDrive(文本最大 4 MB;二进制文件以 base64 格式上传,最大 10 MB,并使用可续传上传会话)。 |
create_folder | 在 OneDrive 中新建文件夹。 |
delete_file | 删除文件或文件夹。 |
move_file | 将文件或文件夹移至新位置。 |
copy_file | 将文件或文件夹复制到新位置。 |
get_recent | 列出最近访问过的文件。 |
get_shared | 列出他人与你共享的文件。 |
share_file | 为文件或文件夹创建共享链接。 |
read_text_file | 读取文本文件的内容。 |
invite_to_file | 通过电子邮件与指定人员共享文件或文件夹(读取或写入权限)。 |
list_file_permissions | 列出文件或文件夹已授予的共享权限。 |
revoke_file_permission | 按 ID 撤销共享权限。 |
list_file_versions | 列出文件的版本历史记录。 |
restore_file_version | 恢复先前版本,替换当前内容。 |
list_file_activities | 列出最近的文件活动(整个云盘或指定项目;仅适用于 OneDrive for Business / SharePoint)。 |
read_document | 直接提取 Word(.docx)或 PowerPoint(.pptx)文件中的文本。 |
安全说明
- 本身不提供身份验证工具;登录由
@mindstone/mcp-server-microsoft-mail处理,以便整个套件共用一个 OAuth 接口。 - Token 提供程序刷新失败时,会映射为结构化的
auth_required响应,以便宿主触发重新身份验证,而不会崩溃。 upload_file会按照随附连接器的规则验证内容不能为空,拒绝将零字节上传作为误用。- 二进制文件会分块上传到预先完成身份验证的上传会话 URL,不会携带 Graph 访问令牌,这是 Graph 的要求。发送任何字节前都会验证会话 URL:必须使用默认端口上的 HTTPS、不得包含用户信息,且主机只能是 Microsoft OneDrive / SharePoint;遇到重定向时会拒绝,而不会跟随。
- 在 Microsoft 365 中创建的内容(文件名、被授权者身份、活动执行者和操作键、权限角色、提取的文档文本以及 Graph 错误消息)会放在
<untrusted-content>信封中返回;权限、版本、活动、上传和文档相关路径上的 Graph 响应会在边界处通过 Zod 验证。功能标识符(权限 / 版本 / 项目 ID)和webUrl保持结构化,以便后续工具调用能够原样传递。 - 权限 / 版本 / 活动列表会遵循
@odata.nextLink分页(设有上限,并提供明确的truncated标志);仅当续页链接指向 Graph 主机时才会跟随,以免访问令牌泄露给其他源。 read_document下载会在流传输过程中限制字节数(而不只是依赖声明的元数据大小),并对 Office ZIP 解压设置单个条目和累计上限,以防 ZIP 炸弹占用过多内存。read_document会手动跟随 Graph 重定向到预先完成身份验证的下载 URL:每一跳都会按照与上传会话相同的 OneDrive / SharePoint 主机策略重新验证,跳转次数有限制,且访问令牌只会发送到 Graph 主机,绝不会跨源转发。- 数值限制(
top、maxSize、maxChars)必须为正整数,并会在发起任何网络请求前验证;不符合要求的值会被拒绝。 - 每个工具的 Graph 调用均在调用方与套件组合而成的超时信号下运行。
许可证
FSL-1.1-MIT — Functional Source License,Version 1.1,未来将采用 MIT 许可证。可免费用于非竞争性用途;在 LICENSE 中规定的转换日期后重新授权为 MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。