mcpField
M
Microsoft 365 Files

Microsoft 365 Files

本地服务
github.com/mindstone文件与存储13今天更新

关于 Microsoft 365 Files

Microsoft 365 Files 是通过 Microsoft Graph 管理 OneDrive 文件的 MCP 服务,涵盖文件操作、共享、版本记录、活动查询和文本提取,并复用 Microsoft 365 Mail 主机管理的 OAuth 凭据。

主要功能

  1. 01列出、搜索和查看文件
  2. 02上传、下载、移动、复制和删除
  3. 03创建共享链接并管理权限
  4. 04查看版本记录和文件活动
  5. 05读取文本并提取 Word 或 PowerPoint 内容

适用场景

  1. 01查找并共享 OneDrive 文档
  2. 02恢复较早的文件版本
  3. 03提取 Word 或 PowerPoint 文件文本

MCP 相关

通过 Microsoft Graph 向 MCP 客户端提供 OneDrive 文件和文件夹操作,包括共享、权限、版本、活动和文档文本提取。OAuth 由主机通过 Microsoft 365 Mail 处理;此服务读取生成的凭据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mindstone-mcp-server-microsoft-files": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-files"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
"MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
"MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
"MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
}
}
}
}
启动命令npx -y @mindstone/mcp-server-microsoft-files
需要配置的环境变量
MS_CLIENT_IDMicrosoft Entra (Azure AD) application client ID
MS_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 responses
MICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@mindstone/mcp-server-microsoft-files0.2.1

工具

20

收录的工具列表 · 更新于 2 周前

参数类型必填说明
topinteger否返回的最大条目数(默认值:50)
pathstring否文件夹路径(例如:"/Documents")或项目 ID

详细介绍

@mindstone/mcp-server-microsoft-files

npm version License: FSL-1.1-MIT

Microsoft 365 OneDrive 文件 MCP 服务——通过 Microsoft Graph API 列出、搜索、获取、下载、上传、删除、移动、复制和共享文件,管理共享权限和版本历史记录,查看文件活动,以及读取文本和 Office 文档内容。

面向 Microsoft 365 OneDrive 的 Cohort 风格 MCP。复用 @mindstone/mcp-server-microsoft-mail 所负责的 OAuth 接入,因此宿主只需登录一次,即可使用文件、邮件、日历、Teams 和 SharePoint,并共享同一组凭据。

状态

项目缘起

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 的最新版本,并提供一个团队可读取的共享链接。”

宿主调用的工具:

  1. search_files — name:Q3-plan.docx,返回最新的匹配项。
  2. 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 流程。

一键安装

添加到 Cursor 添加到 VS Code 添加到 VS Code Insiders

点击按钮后,宿主将提示你填写: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_IDMicrosoft 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。