Dbx Mcp Server

Dbx Mcp Server

🚀 dbx-mcp-server

dbx-mcp-server 是一个与 Dropbox 集成的模型上下文协议(MCP)服务器,它为兼容的客户端提供了一组强大的工具,用于与 Dropbox 进行交互。

⚠️ 重要提示

该项目未得到官方认可、支持或赞助,它是一个独立集成,通过使用 Dropbox 的公开 API 来实现功能。

🚀 快速开始

  1. 克隆仓库。
  2. 运行npm install安装依赖项。
  3. 运行npm run build构建项目。
  4. Dropbox应用控制台注册一个Dropbox应用:
    • 选择“范围访问”API。
    • 选择所需的应用访问类型。
    • 命名你的应用并点击“创建应用”。
    • 在“权限”部分,选择所需的权限:
      • files.metadata.read
      • files.content.read
      • files.content.write
      • sharing.write
      • account_info.read
    • 添加http://localhost:3000/callback作为重定向URI。
    • 记录你的应用密钥和秘密密钥。
  5. 运行设置脚本:
    npm run setup
    
  6. 配置MCP客户端。

📦 安装指南

本项目构建使用了以下技术:

  • TypeScript
  • 模型上下文协议SDK
  • Dropbox SDK v10.34.0
  • Dropbox API v2

🔐 身份验证

应用通过OAuth 2.0与Dropbox进行通信,具体步骤如下:

初始化OAuth客户端

const dbx = new DropboxClient({
clientId: DROPBOX_CLIENT_ID,
clientSecret: DROPBOX_CLIENT_SECRET,
redirectUri: REDIRECT_URI
});

获取授权URL

const authorizeUrl = await dbx.authorizeAsync();

处理回调并获取访问令牌

const { accessToken } = await dbx.getAccessToken(redirect_response);

🛠️ 可用工具

文件操作

  • dbx.filesCreateV2/commit:创建新文件或覆盖现有文件。
  • dbx.filesReadV2/chunked:分块读取文件内容。
  • dbx.filesDeleteV2/sync:同步删除文件。
  • dbx.delta.sync:获取文件修改记录。

目录操作

  • dbx.usersGetCurrentAccount:获取当前用户信息。
  • dbx.groupsCreateSubgroup:创建子组。
  • dbx.sharingShareFolder:共享文件夹。
  • dbx.sharingRevokeAccess:撤销访问权限。

⚙️ 配置

环境变量

设置以下环境变量:

DROPBOX_CLIENT_ID=your_client_id
DROPBOX_CLIENT_SECRET=your_client_secret
REDIRECT_URI=http://localhost:3000/callback

代理配置

如果需要通过代理访问Dropbox,请在初始化时添加代理信息:

const transport = newHttps.Agent({
proxy: {
host: 'proxy.example.com',
port: 8080,
credentials: {
user: 'proxy-user',
password: 'proxy-password'
}
}
});

const dbx = new DropboxClient({
clientId: DROPBOX_CLIENT_ID,
clientSecret: DROPBOX_CLIENT_SECRET,
redirectUri: REDIRECT_URI,
transport
});

💻 使用示例

基础用法

// 上载文件
async function uploadFile(filePath, fileName) {
const fileBuffer = await fs.readFile(filePath);
const response = await dbx.filesCreateV2/commit({
path: fileName,
contents: { buffer: fileBuffer },
mode: 'overwrite'
});
return response;
}

// 下载文件
async function downloadFile(filePath, fileName) {
const response = await dbx.filesReadV2/chunked({
path: filePath,
maxBytes: 1024 * 1024 // 每次读取1MB
});
return response;
}

🧪 测试

运行测试

使用Jest运行测试:

npm test

🛠️ 开发

项目使用了以下工具:

  • TypeScript:定义文件类型并提供自动补全。
  • @dropbox/dropbox-node-sdk:访问Dropbox API的Node.js库。
  • Jest:用于单元测试和集成测试。
  • ESLint:代码规范检查。
  • Prettier:格式化代码。

📄 许可证

本项目采用 MIT 许可证。

版权 (c) 2025 MCP Server 贡献者

允许任何人免费获得本软件副本及相关文档文件(“软件”),不受限制地处理,包括但不限于以下权利:使用、复制、修改、合并、发布、分发、转授和/或出售软件副本,并允许获得该软件的人进行上述行为,但需遵守以下条件:上述版权声明和本许可声明应包含在所有软件副本或其中大部分内容中。

软件按“原样”提供,不做任何形式的担保,包括但不限于对适销性、特定用途适用性或不侵权的明示或暗示保证。在任何情况下,作者或版权持有者不对因使用或无法使用该软件而产生的任何索赔、损害或其他责任负责。

smithery badge

  • 0 关注
  • 0 收藏,25 浏览
  • system 提出于 2025-10-05 07:24

相似服务问题

相关AI产品