Dropbox文件管理服务

一个基于Model Context Protocol (MCP)的Dropbox文件管理服务,用于AI助手与Dropbox文件和文件夹的交互。

  • by EmilyThaHuman
  • 本地部署
  • 更新于
在 GitHub 查看 EmilyThaHuman/dropbox-mcp-server

使用说明

Dropbox MCP服务器

Dropbox的模型上下文协议(MCP)服务器实现,使AI助手能够与Dropbox文件和文件夹进行交互。使用TypeScript构建并部署在Cloudflare Workers上,以实现全球边缘性能。

特性

  • 🔐 OAuth 2.0与PKCE -安全身份验证流程
  • 🔍 文件搜索 -搜索所有Dropbox文件和文件夹
  • 📥 文件获取 -下载文件内容(文本或二进制)
  • 📋 最近文件 -列出最近修改的文件
  • 👤 用户档案 -访问Dropbox帐户信息
  • ⚡ 边缘部署 -在Cloudflare Workers上运行以实现低延迟
  • 🔄 许可证管理 -自动令牌刷新和会话管理

可用工具

工具 说明 所需范围
dropbox_search 在Dropbox中搜索与查询匹配的文件 files.metadata.read, account_info.read
dropbox_fetch 使用可选的原始下载按路径获取文件 files.content.read
dropbox_search_files 搜索Dropbox文件并返回结果(别名) files.metadata.read, account_info.read
dropbox_fetch_file 检索文件的文本或原始内容(别名) files.content.read, account_info.read
dropbox_list_recent_files 返回最近修改的文件 files.metadata.read, account_info.read
dropbox_get_profile 检索当前用户的Dropbox个人资料 account_info.read

先决条件

  • Node.js 18+(用于本地开发)
  • Dropbox应用程序凭据(应用程序密钥和应用程序密钥)
  • Cloudflare帐户(用于部署)
  • Wrangler CLI已安装(npm install -g wrangler)

设置

1.创建Dropbox应用程序

  1. 首选 Dropbox应用程序控制台
  2. 点击“创建应用”
  3. 选择“范围访问”
  4. 选择“完整Dropbox”访问类型
  5. 为你的应用命名
  6. 点击“创建应用”
  7. 在应用程序设置中:
    • 注意你的 应用key (客户端ID)
    • 注意你的 应用密钥 (客户机密)
    • 添加重定向URI: https://your-worker-domain.workers.dev/oauth/callback
    • 在“权限”选项卡下,启用:
      • files.metadata.read
      • files.content.read
      • account_info.read
  8. 点击“提交”以保存权限

2.安装依赖项

cd dropbox-mcp-server
npm install

3.配置环境

创建一个 .env 文件:

cp env.example .env

编辑 .env 使用您的Dropbox应用凭据:

DROPBOX_CLIENT_ID=your_app_key_here
DROPBOX_CLIENT_SECRET=your_app_secret_here
DROPBOX_REDIRECT_URI=http://localhost:3003/oauth/callback
PORT=3003
NODE_ENV=development
MCP_SERVER_NAME=dropbox-mcp-server
MCP_SERVER_VERSION=1.0.0
FRONTEND_URL=http://localhost:5173
BACKEND_API_URL=http://localhost:3002

4.创建KV命名空间

# Create KV namespace for session storage
npm run kv:create

# Note the namespace ID and update wrangler.toml

5.配置Cloudflare机密

wrangler secret put DROPBOX_CLIENT_ID
# Enter your Dropbox App Key

wrangler secret put DROPBOX_CLIENT_SECRET
# Enter your Dropbox App Secret

wrangler secret put DROPBOX_REDIRECT_URI
# Enter: https://your-worker-domain.workers.dev/oauth/callback

wrangler secret put FRONTEND_URL
# Enter your frontend URL (e.g., https://zerotwo.app)

wrangler secret put BACKEND_API_URL
# Enter your backend API URL (optional)

发展

本地开发服务器

运行本地Express服务器:

npm run dev

服务器将于启动 http://localhost:3003

使用Cloudflare Workers进行测试

与牧马人一起在当地跑步:

npm run dev:worker

为生产而建

npm run build

部署

部署到Cloudflare Workers

# Deploy to production
npm run deploy

# Or deploy to specific environment
npm run deploy:production

更新wrangler.toml

部署前,更新 wrangler.toml 使用您的KV命名空间ID:

[[kv_namespaces]]
binding = "SESSIONS"
id = "your_kv_namespace_id_here"

API终点

健康检查

GET /health

返回服务器状态和版本信息。

OAuth流

1.获取授权URL

GET /oauth/authorize?userId={userId}&state={state}

答复:

{
  "authorizationUrl": "https://www.dropbox.com/oauth2/authorize?...",
  "state": "user-state",
  "codeVerifier": "pkce-code-verifier"
}

前端应:

  1. 商店 codeVerifier 会话/本地存储
  2. 将用户重定向到 authorizationUrl

2.OAuth回调

GET /oauth/callback?code={code}&state={state}

使用代码和状态参数重定向到前端。

3.代币交易代码

POST /oauth/exchange
Content-Type: application/json

{
  "code": "authorization_code",
  "codeVerifier": "pkce_code_verifier",
  "userId": "user_id"
}

答复:

{
  "accessToken": "sl.xxx",
  "refreshToken": "xxx",
  "expiresIn": 14400,
  "timestamp": "2024-01-01T00:00:00.000Z"
}

4.刷新令牌

POST /oauth/refresh
Content-Type: application/json

{
  "userId": "user_id",
  "refreshToken": "refresh_token"
}

5.断开连接

POST /oauth/disconnect
Content-Type: application/json

{
  "userId": "user_id"
}

MCP协议端点

POST /mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "dropbox_search",
    "arguments": {
      "userId": "user_id",
      "query": "contract",
      "maxResults": 20
    }
  },
  "id": 1
}

工具示例

搜索文件

{
  "name": "dropbox_search",
  "arguments": {
    "userId": "user123",
    "query": "budget 2024",
    "maxResults": 10,
    "fileExtensions": [".pdf", ".xlsx"]
  }
}

获取文件

{
  "name": "dropbox_fetch",
  "arguments": {
    "userId": "user123",
    "path": "/Documents/contract.pdf",
    "rawDownload": true
  }
}

列出最近使用的文件

{
  "name": "dropbox_list_recent_files",
  "arguments": {
    "userId": "user123",
    "limit": 20
  }
}

获取用户资料

{
  "name": "dropbox_get_profile",
  "arguments": {
    "userId": "user123"
  }
}

建筑

组件

  • OAuth管理器 -使用PKCE处理OAuth 2.0流
  • Dropbox客户端 -包装Dropbox API调用
  • MCP服务器 -实现模型上下文协议
  • 快递服务器 -本地开发服务器
  • Cloudflare工作人员 -生产边缘部署

会话管理

会话存储在:

  • 本地开发:内存映射
  • 生产:Cloudflare KV(具有30天TTL)

令牌刷新

在以下情况下,令牌会自动刷新:

  1. 访问令牌已过期
  2. 会话中存在有效的刷新令牌

回退:如果缺少KV会话,则从用户配置文件中查询后端API中的令牌。

安全

  • ✅ OAuth 2.0与PKCE(代码交换证明密钥)
  • ✅ Cloudflare KV中的安全令牌存储
  • ✅ 自动令牌刷新
  • ✅ CORS保护
  • ✅ 没有令牌暴露在前端(OAuth流期间除外)

故障排除

“OAuth2客户端ID无效”

  • 检查你的 DROPBOX_CLIENT_ID 是正确的
  • 验证应用程序是否在Dropbox应用程序控制台中正确配置

“重定向URI不匹配”

  • 确保Dropbox应用程序中的重定向URI与您部署的工作URL匹配
  • 对于本地开发人员: http://localhost:3003/oauth/callback
  • 生产: https://your-worker.workers.dev/oauth/callback

“缺少作用域”

  • 转到Dropbox应用程序控制台→ “权限”选项卡
  • 启用所需范围
  • 点击“提交”以保存更改
  • 用户可能需要重新进行身份验证

“找不到KV命名空间”

  • 跑 npm run kv:create 创建命名空间
  • 更新 wrangler.toml 具有命名空间ID
  • 重新部署 npm run deploy

开发脚本

npm run dev              # Run local Express server
npm run dev:worker       # Run Cloudflare Workers locally
npm run build            # Build TypeScript
npm run build:worker     # Build and validate for Workers
npm run deploy           # Deploy to Cloudflare Workers
npm run deploy:production # Deploy to production environment
npm run kv:create        # Create KV namespace
npm run lint             # Run ESLint
npm run format           # Format with Prettier

贡献

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

许可证

MIT许可证-有关详细信息,请参阅许可证文件

支持

对于问题和疑问:

相关项目


由ZeroTwo提供技术支持

此Dropbox MCP连接器是 ZeroTwo人工智能平台 --通过GPT-5、Claude和Gemini,您可以管理文件、搜索文档并自动化Dropbox工作流程。

🌐 ZeroTwo——一个应用程序中的所有AI模型 使用GPT-5、Claude和Gemini在一个地方搜索和管理您的Dropbox文件。
✨ 零两个功能 AI文件管理、文档分析、网络搜索和MCP驱动的云存储工具。
🤖 人工智能模型——GPT-5、克劳德和双子座 使用世界上最好的人工智能来查找、分析和组织您的文件。
🔌 ZeroTwo连接器和集成 将Dropbox、Google Drive、SharePoint、Gmail等连接到您的AI工作流程。
💰 零二定价 一个替代ChatGPT Plus、Claude Pro和Gemini Advanced的订阅。
📝 ZeroTwo博客 AI文件管理技巧、生产力指南和ZeroTwo产品更新。
🚀 免费试用ZeroTwo 让AI组织你的Dropbox——立即免费开始。

专为ZeroTwo打造 --使用此Dropbox MCP服务器 ZeroTwo的AI连接器系统 通过人工智能助手中的自然语言搜索、获取和管理Dropbox文件。