OneDrive MCP服务器
一个模型上下文协议(MCP)服务器,为Claude提供与Microsoft OneDrive交互的工具——浏览文件、读取内容、上传、复制、共享和管理您的云存储。
先决条件
- Node.js 18+
- 使用OneDrive的Microsoft帐户
- Azure应用注册(免费)
Azure应用程序注册设置
- 去 Azure门户
- 点击 新注册
- 填写详细信息:
- 姓名: 任何内容(例如,“OneDrive MCP”) - 支持的帐户类型: “任何组织目录中的帐户和个人Microsoft帐户”
- 点击 注册
- 在应用程序概述页面上,复制 应用程序(客户端)ID
- 首选 认证:
- 点击 添加平台 → 移动和桌面应用程序 - 输入自定义重定向URI: http://localhost:8888/callback - 滚动到底部→ set 允许公共客户端流 到 是 - 点击 保存
- 首选 API权限 → 添加权限 → 微软图形 → 委托权限 并添加:
- Files.ReadWrite - User.Read - offline_access
注:Files.ReadWrite只需要用户同意。如果您需要访问他人与您共享的文件,请使用Files.ReadWrite.All相反(可能需要企业租户的管理员同意)。
安装
git clone https://github.com/Alethia-Intelligence/onedrive-mcp.git
cd onedrive-mcp
npm install
npm run build认证
此服务器使用OAuth 2.0和PKCE,不需要客户端密钥,只需要您的客户端ID。
export MICROSOFT_CLIENT_ID=your_client_id
npm run auth这将打开一个用于Microsoft登录的浏览器窗口。批准后,令牌将保存到 ~/.onedrive-mcp/tokens.json 到期时自动刷新。
配置
克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"onedrive": {
"command": "node",
"args": ["/path/to/onedrive-mcp/dist/index.js"],
"env": {
"MICROSOFT_CLIENT_ID": "your_client_id"
}
}
}
}克劳德代码
添加 ~/.claude/.mcp.json (全局)或您的项目 .mcp.json:
{
"mcpServers": {
"onedrive": {
"command": "node",
"args": ["/path/to/onedrive-mcp/dist/index.js"],
"env": {
"MICROSOFT_CLIENT_ID": "your_client_id"
}
}
}
}工具
| 工具 | 说明 | 关键参数 |
|---|---|---|
search_files | 按名称或内容搜索文件和文件夹 | query, limit |
list_children | 列出目录中的文件和文件夹 | path, item_id, limit |
get_item_metadata | 获取文件或文件夹的详细元数据 | path, item_id |
read_file_content | 读取文本文件内容或获取二进制文件的下载URL | path, item_id |
get_drive_info | 获取OneDrive信息和存储配额 | -- |
create_folder | 创建新文件夹 | name, parent_path, conflict_behavior |
upload_file | 上传文本文件 | parent_path, filename, content, conflict_behavior |
update_file_content | 更新现有文件的内容 | path, item_id, content |
update_item_metadata | 重命名或移动文件/文件夹 | item_id, path, new_name, new_parent_path |
delete_item | 删除文件或文件夹(移至回收站) | path, item_id |
copy_item | 将文件或文件夹复制到其他位置 | item_id, path, destination_path, new_name |
share_item | 为文件或文件夹创建共享链接 | item_id, path, type, scope, expiration |
示例用法
问克劳德这样的问题:
- “列出我的文档文件夹中的文件”
- “搜索包含“预算”的文件”
- “阅读Documents/notes.txt的内容”
- “将名为todo.txt的新文件上载到我的Documents文件夹”
- “使用仅限查看的链接共享我的演示文稿”
- “我还有多少OneDrive存储空间?”
故障排除
“未找到存储的令牌” 跑 npm run auth 随着 MICROSOFT_CLIENT_ID 设置为环境变量。
“令牌刷新失败” 您的刷新令牌可能已过期。重新运行 npm run auth 重新授权。
“权限不足” 确保你的Azure应用程序具有 Files.ReadWrite, User.Read,以及 offline_access 权限。您可能需要通过跑步重新获得同意 npm run auth 再一次。
“AADST50011:重定向URI不匹配” 确保你的Azure应用程序具有 http://localhost:8888/callback 配置为a 移动和桌面应用程序 重定向URI(非Web)。
“AADST7000218:需要客户端验证或客户端密钥” 您的应用程序仍配置为机密客户端。在Azure门户中,转到 认证 → set 允许公共客户端流 到 是,并确保重定向URI位于 移动和桌面应用程序 (不是网络)。
“AADST50194:未配置为多租户” 首选 认证 → 改变 支持的帐户类型 到“任何组织目录中的帐户和个人Microsoft帐户”。
“需要管理员批准” 你在用 Files.ReadWrite.All 这需要企业租户的管理员同意。切换 Files.ReadWrite (仅限用户的文件)或请求管理员同意。
“端口8888已在使用中” 另一个进程正在使用端口8888。停下来,或者等一下试试 npm run auth 再一次。
构建错误 请确保您已安装Node.js 18+。跑 npm install 然后 npm run build.
许可证
麻省理工学院
