内容
edrive-blcp
适用于 OneDrive 文件操作的令牌高效CP](https://modelcontextprotocol.io) 服务器,通过 Microsoft Graph18 种工具,涵盖浏览、读取、搜索、上传、分享、版本控制、增量同步和 SharePoint — 支持管道分隔输出、写门控和双重身份验证。
## 为什么选择这个通用?
| | **onedade-mcp** | 通 / Graph MCPs |
|| **输出** |分隔,省略空值 | JSON 数据块(多 倍令牌) |
增量同步** |_delta` 增量跟踪文件更改 | 每次完整重新列出 |
| **SharePoint** | 原生浏览站点、库和文件 | 仅 OneDrive 或不支持 |
| **安全性** | 默认写门控,删除需要 `confirm=true` | 各不相同 |
| **身份验证** | 双重:设备代码(交互式)+ 客户端凭证(无头/CI) | 单一流程 |
| **版本控制** | `drive_versions` 获取完整文件历史 | 未公开 **缩略图** | `drive_thumbnail` 获取图像预览 | 不可用 |
增是 AI 工作流的关键功能 — 在无需重新数千个文件的情况下跟踪文件夹中的更改。
## 功能
- **18 种工具** — 浏览、读取、搜索、上传、版本历史、增量同步、SharePoint
- **高效输出** — 管道分隔、字段选择、省略空值
默认写门控** — 读取免费,写入需要 `RIVE_WRITE_ENABLED=true`
- **增量同步** — 使用增量令牌跟踪文件更改 **SharePoint 集成** — 站点、文档库和文件
- **双重身份验证** — 设备代码用于交互式凭证用于无头
-管理** — 创建链接权限、控制范围
- **CP 2.0** — stdio 和 HTTP 传输
## 快速入门
```bash
# 安装
git clonegithub.com/groupthink-dev/onedade-mcp.git
cd onedrive-blade-mcp
uv sync
# 配置
export ONEDRIVE_TENANT_ID="your-tenant-id"
export ONEDRIVE_CLIENT_ID="your-client-id"
export ONEDRIVE_AUTH_MODE="device_code"
# 运行(stdio)
uv runrive-blade-mcp
```
## 工具(18) 元数据
| 工具 |
|------|-------------|
| `drive_info` | 存储信息类型、配情况、所有者 |
### 读取(8)
| 工具 | 描述 |
|------|-------------|
drive_list` | 内容(路径或 ID) `drive_read` |内容 — 文本文件为文本,二进制文件为 base64 |
| `drive_metadata` | 详细元数据 — 大小、日期、创建者IME、共享 |
| `drive_search` | 按名称或文件(Microsoft Search) `drive_download` |的短时下载 URL |
drive_versions` | 版本,包含日期、作者、| `drive_delta`增量令牌的增量更改跟踪 |
| `drive_thumbnail` | 图片和文档的缩略(小/中) |
### SharePoint)
| 工具 | 描述 |
|------|-------------|
| `drive_sites` | 列出或搜索 SharePoint 站点 |
| `drive_site_libraries` | SharePoint 站点的文档库 |
| `drive_site_list` | SharePoint 文档库中的文件 |
### 写入(4, gated)
| 工具 | 描述 |
|------|-------------|
| `drive_upload` | 上传文件(最大 4MB, 内容) |
| `drive_create_folder` | 创建新| `drive_move 移动和/或重或文件夹 |
| `` | 删除到回收站 `confirm=true`) |
共享(2)
工具 | 描述 |
|------|| `drive_share`共享链接(查看/嵌入,组织/匿名 |
| `drive_permissions`谁有权访问和现有的共享链接 |
## 增
在无需重新列出的情况下跟踪文件更改:# 第一次调用 —状态 + delta_link
drive_delta(folder_path="/Documents")
#调用 — 仅返回自上次调用以来的更改
drive_delta(delta_link="aHR0cHM6Ly9ncmFwaC5taW...")
```
、修改和删除,并为下一次调用提供新的 delta_link。
## 身份验证
### 设备代码(交互式)
```bash
export ONEDRIVE_AUTH_MODE="device_code"
export ONEDRIVE_TENANT_ID="your-tenant-id"
export ONEDRIVE_CLIENT_ID="your-client-id"
```
### 客户端凭证(无头)
```bash
export ONEDRIVE_AUTH_MODE="client_credentials"
export ONEDRIVE_TENANT_ID="your-tenant-id"
export ONEDRIVE_CLIENT_ID="your-client-id"
EDRIVE_CLIENTyour-client-secret"
```
## 安全模型
| 层 | |
|-------|-----------|
| **写门控** |所有突变(`RIVE_WRITE_ENABLED=true |
| **删除安全性** | `drive_delete` 需要 `confirm=true`(移动到回收站| **凭证清理**令牌从未出现在工具错误消息中 |
Bearer 身份验证** | 可ONEDRIVE_API_TOKEN` 用于 HTTP |
## Claude 桌面```json
{
cpServers": {
"onedrive": {
"commanduv",
"args":", "--directory",/to/onedrive-blade", "onedrive-mcp"],
" {
"ONEDRENANT_ID": "tenant-id",
"ONEDRIVE_CLIENT_ID":-client-id",
"RIVE_AUTH_MODE": "device_code"
}
}
}
}
```
## Claude 代码
```bash
claude mcp add onedrive -- uv run --directory /path/to/onedrive-blade-mcp onedrive-blade-mcp
```
## 环境变量
| 变量 | 必需 | 默认值 | 描述 |
|----------|----------|---------|-------------|
| `IVE_TENANT_ID` | 是 | — | Azure AD 租 |
| `ON_CLIENT_ID` | 是 | 应用注册客户端 ID |
ONEDRIVE` | 客户端凭证 | 应用注册客户端密钥 `ONEDRIVE` | 否 | `device_code` | `device_code `client_credentials` |
ONEDRIVE_WRITE | 否 | `false`启用写入/删除| `ONEDRCP_TRANSPORT` | 否 | `stdio` | `stdio `http` |
| `RIVE_MCP | 否 | `127.0.1` | HTTP 绑定地址 |
| `ONEDRIVE_MCP_PORT` | 否 | `800 | HTTP 端口 |
ONEDRIVE_M` | 否 | HTTP 身份验证的令牌 |
## ```
src/onedrive_mcp/
├── server — FastMCP 0 服务器,18 个 @mcp.tool 装饰器
├── client.py — Graph API 重身份验证,写,增量同步
├── formatters.py 牌高效输出(管道分隔,省略空值 models.py — 配置,常└── auth.py — 设备代码 + 客户端凭证 中间件
```
使用 [FastMCP 2.https://github.com/jlowin/fastmcp)httpx](https://github.com/encode/httpx) 构建。
## 开发bash
uv sync #
uv run on-blade-mcp # 本地运行(stdio)
ruff check . # 校验
uv run/ # 测试(模拟,无需 OneDrive)
```
## 许可证
MIT