dbx-mcp-server
Un servidor MCP para interactuar con archivos y servicios de Dropbox.
Documentación
dbx-mcp-server
Un servidor de Model Context Protocol (MCP) que proporciona integración con Dropbox, permitiendo que clientes compatibles con MCP interactúen con Dropbox a través de un conjunto de herramientas potentes.
Aviso importante: Este proyecto no está afiliado, respaldado ni patrocinado por Dropbox. Es una integración independiente que funciona con la API pública de Dropbox.
Tabla de Contenidos
- Inicio Rápido
- Instalación
- Autenticación
- Herramientas Disponibles
- Configuración
- Ejemplos de Uso
- Pruebas
- Desarrollo
- Licencia
Inicio Rápido
- Clona el repositorio
- Ejecuta
npm installpara instalar las dependencias - Ejecuta
npm run buildpara compilar el proyecto - Registra una aplicación de Dropbox en Dropbox App Console:
- Elige la API de "Acceso con ámbito" (Scoped access)
- Elige el tipo de acceso que tu aplicación necesita
- Nombra tu aplicación y haz clic en "Crear aplicación"
- En "Permisos", selecciona los permisos requeridos:
files.metadata.readfiles.content.readfiles.content.writesharing.writeaccount_info.read
- Añade
http://localhost:3000/callbackcomo tu URI de redirección - Anota tu clave de aplicación y secreto de aplicación
- Ejecuta el script de configuración:
npm run setup - Configura tu cliente MCP para usar el servidor
Instalación
-
Clona el repositorio
git clone https://github.com/your-username/dbx-mcp-server.git cd dbx-mcp-server -
Instala las dependencias y compila
npm install npm run build -
Ejecuta el script de configuración
npm run setup -
Añade a la configuración de MCP
Añade lo siguiente a tu archivo de configuración de MCP:
{ "mcpServers": { "dbx": { "command": "node", "args": ["/path/to/dbx-mcp-server/build/index.js"] } } }
Autenticación
El servidor utiliza OAuth 2.0 con PKCE para una autenticación segura con Dropbox.
Variables de Entorno
Requeridas:
DROPBOX_APP_KEY: La clave de tu aplicación de DropboxDROPBOX_APP_SECRET: El secreto de tu aplicación de DropboxDROPBOX_REDIRECT_URI: URI de redirección OAuthTOKEN_ENCRYPTION_KEY: Clave de 32+ caracteres para el cifrado de tokens
Opcionales:
TOKEN_REFRESH_THRESHOLD_MINUTES: Minutos antes de la expiración para renovar el token (predeterminado: 5)MAX_TOKEN_REFRESH_RETRIES: Número máximo de intentos de renovación (predeterminado: 3)TOKEN_REFRESH_RETRY_DELAY_MS: Retraso entre intentos de renovación en ms (predeterminado: 1000)
Herramientas Disponibles
Operaciones de Archivos
list_files: Lista archivos en un directorioupload_file: Sube un archivodownload_file: Descarga un archivosafe_delete_item: Elimina de forma segura con soporte de papelera de reciclajecreate_folder: Crea una nueva carpetacopy_item: Copia un archivo o carpetamove_item: Mueve o renombra un archivo/carpeta
Metadatos y Búsqueda
get_file_metadata: Obtiene metadatos de archivo/carpetasearch_file_db: Busca archivos y carpetasget_sharing_link: Crea enlaces de uso compartidoget_file_content: Obtiene el contenido de un archivo
Operaciones de Cuenta
get_account_info: Obtiene información de la cuenta
Ejemplos de Uso
// List files in root directory
await mcp.useTool("dbx-mcp-server", "list_files", { path: "" });
// Upload a file
await mcp.useTool("dbx-mcp-server", "upload_file", {
path: "/test.txt",
content: Buffer.from("Hello World").toString("base64"),
});
// Search for files
await mcp.useTool("dbx-mcp-server", "search_file_db", {
query: "report",
path: "/Documents",
max_results: 10,
});
Pruebas
Ejecuta el conjunto de pruebas:
npm test
Las pruebas verifican todas las operaciones, incluyendo autenticación, operaciones de archivos y manejo de errores.
Estructura de Pruebas
El conjunto de pruebas está organizado en varios módulos:
- Operaciones de Dropbox: Pruebas para operaciones básicas de archivos (subir, descargar, listar, etc.)
- Operaciones de Cuenta: Pruebas para acceder a la información de la cuenta
- Búsqueda y Eliminación: Pruebas para la funcionalidad de búsqueda y eliminación segura con soporte de papelera de reciclaje
- Sistema de Recursos: Pruebas para la integración del sistema de recursos de MCP
Manejo de Datos de Prueba
Las pruebas utilizan nombres de archivos y carpetas generados dinámicamente basados en marcas de tiempo para evitar conflictos. Los datos de prueba se limpian automáticamente después de la ejecución de las pruebas.
Ejecutar Pruebas Específicas
Para ejecutar un archivo de prueba o grupo de pruebas específico:
npm test -- tests/dropbox/search-delete.test.ts # Run specific test file
npm test -- -t "should search for files" # Run tests matching description
Solución de Problemas en Pruebas
Si las pruebas fallan con problemas de tiempo o autenticación:
- Verifica que las implementaciones simuladas en
tests/setup.tscoincidan con tus expectativas de prueba - Asegúrate de que los ayudantes de prueba estén configurados correctamente
- Para errores de ámbito de Jest, evita referenciar variables importadas en funciones de fábrica simuladas
Desarrollo
Construido con:
- TypeScript
- Model Context Protocol SDK
- Dropbox SDK v10.34.0
- Dropbox API v2
Licencia
Licencia MIT
Copyright (c) 2025 MCP Server Contributors
Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para tratar con el Software sin restricción, incluyendo sin limitación los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir a las personas a quienes se les proporcione el Software hacerlo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.