mcp-dropbox
MCP server that enables agents to save documents to Dropbox, offering tools for folder management, file upload, and link sharing.
README
mcp-dropbox
<div align="center"> <img src="mcp_dropbox.png" alt="MCP Dropbox Logo" width="300" /> </div> <br>
Servidor MCP (Model Context Protocol) construido con FastMCP para recibir documentos desde un agente (por ejemplo, un agente de OpenAI) y guardarlos en dropbox. El proyecto está pensado como un Remote MCP Server: simple, mantenible y escalable.
Descripción
Este MCP expone herramientas (tools) que un agente puede invocar de forma remota.
Tools de Dropbox disponibles
| Tool | Descripción | Parámetros |
|---|---|---|
create_folder |
Crea una carpeta en Dropbox (idempotente: si ya existe, no falla). | path: str, folder_name: str |
folder_exists |
Verifica si una carpeta existe en una ruta dada. | path: str, folder_name: str |
delete_folder |
Borra el contenido (subcarpetas) de un directorio. | directory_path: str |
create_shared_link_file |
Crea o recupera un enlace público para un archivo o carpeta. | path: str, expires_days: Optional[int], password: Optional[str], access_level: str, folder_settings: Optional[dict] |
upload_file |
Sube un archivo local a Dropbox (con soporte de sesiones para archivos >150MB). | path_local_file: str, remote_file_upload: str |
list_directories |
Lista las subcarpetas de una ruta (no recursivo). | path: str |
list_files |
Lista los archivos de una ruta (no recursivo). | path: str |
upload_file_binario |
Recibe un archivo en base64, lo guarda en HD_DESCARGAS/ y lo sube a Dropbox en segundo plano (vía process_upload.py). |
nombre_archivo: str, contenido_base64: str, dropbox_path: str |
upload_file_binario acepta dos variables de entorno opcionales para lanzar el subproceso: _APP_PATH_ (raíz del proyecto; por defecto se detecta automáticamente) y _PYTHON_APP_ (intérprete de Python; por defecto el mismo que ejecuta el servidor).
Cada tool documenta sus parámetros y valores de retorno en su propio docstring; para verlos vía CLI:
uv run fastmcp list http://127.0.0.1:8000/mcp --auth mi-token-secreto-dropbox --input-schema
Requisitos
- Python 3.13+
- uv
Instalación de uv
macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Verifica la instalación con:
uv --version
Crear el entorno virtual
uv venv
Activar el entorno:
- macOS / Linux:
source .venv/bin/activate - Windows:
.venv\Scripts\activate
Instalar dependencias (pyproject.toml)
Con el entorno virtual activo, instala las dependencias declaradas en pyproject.toml:
uv sync
Autenticación
El servidor exige un token Bearer para todas las peticiones. El token válido se define mediante la variable de entorno MCP_AUTH_TOKEN (no se hardcodea en el código) MCP_AUTH_TOKEN es el token con los permisos nesesario en dropbox.
Para levantar el servidor con autenticación activada:
MCP_AUTH_TOKEN=mi-token-secreto-dropbox uv run python3 main.py
Variables opcionales:
MCP_HOST(por defecto0.0.0.0)MCP_PORT(por defecto8000)MCP_ALLOWED_HOSTS: dominios permitidos en el headerHost(separados por coma). Necesario cuando expones el servidor a través de un túnel (ngrok, cloudflared) o dominio propio; de lo contrario el servidor responde421 Misdirected Request, ya que por seguridad solo aceptalocalhost/127.0.0.1por defecto. Ejemplo:MCP_ALLOWED_HOSTS=*.ngrok-free.appoMCP_ALLOWED_HOSTS=mi-tunel.ngrok-free.app
Cualquier cliente (incluido el agente) debe enviar el header:
Authorization: Bearer mi-token-secreto-dropbox
Ejecutar el servidor
MCP_AUTH_TOKEN=mi-token-secreto-dropbox uv run python3 main.py
Esto levanta el servidor en http://0.0.0.0:8000/mcp (o el MCP_PORT que definas).
Según cómo quieras dejarlo corriendo:
- Primer plano (para probar): el comando de arriba tal cual; se detiene con
Ctrl+C. - En segundo plano: agrega
&al final, o usanohup ... ¶ que sobreviva si cierras la terminal. - Como servicio persistente (recomendado si un agente debe conectarse en todo momento): usa algo que lo mantenga vivo y lo reinicie si falla, por ejemplo un
launchdplist en macOS, o Docker/systemd en un servidor Linux. - Accesible desde internet: como corre en
0.0.0.0, localmente solo es alcanzable en tu red. Para exponerlo a un agente remoto (por ejemplo un agente de OpenAI) necesitas un túnel (ngrok,cloudflared) mientras pruebas, o desplegarlo en un servidor/VPS con IP pública para producción.
Ver la documentación de las tools disponibles
El endpoint /mcp no es una API REST navegable (no muestra una página de documentación en el navegador): es un endpoint JSON-RPC que espera peticiones POST con headers específicos. Además, si accedes usando http://0.0.0.0:8000/mcp verás el error "Misdirected Request" (421), ya que 0.0.0.0 solo indica en qué interfaces escucha el servidor, no es una dirección válida para conectarte: usa http://127.0.0.1:8000/mcp o http://localhost:8000/mcp en su lugar.
Para listar las tools disponibles y su esquema, usa la CLI de FastMCP:
uv run fastmcp list http://127.0.0.1:8000/mcp --auth mi-token-secreto-dropbox --input-schema
Inspector visual (MCP Inspector)
Para explorar y probar las tools desde una interfaz web interactiva, usa el MCP Inspector (requiere Node.js/npx instalado). No necesitas tener el servidor corriendo por separado: el propio comando lo levanta.
MCP_AUTH_TOKEN=mi-token-secreto-dropbox uv run fastmcp dev inspector main.py
Esto abre automáticamente el navegador en una URL tipo http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=..., donde puedes ver las tools disponibles, sus esquemas y ejecutarlas manualmente con distintos parámetros.
Despliegue en Producción (Ubuntu 24.04)
Para entornos de producción (por ejemplo, en un VPS con Ubuntu 24.04 y un dominio como mcp.dominio.com), se incluye un archivo de configuración de systemd (mcp-dropbox.service).
-
Sube tu código al servidor, por ejemplo a
/var/www/mcp_dropbox. -
Asegúrate de instalar
uven el servidor y ejecutauv syncen la carpeta del proyecto. -
Configura el token (Archivo
.env): Crea un archivo.enven la ruta de tu proyecto para mantener seguro el token:sudo nano /var/www/mcp_dropbox/.envAgrega la siguiente línea:
MCP_AUTH_TOKEN=aqui-tu-token-super-seguro-dropbox -
Instala y habilita el servicio de systemd: Asegúrate de que las rutas y el usuario en
mcp-dropbox.servicecoincidan con tu servidor, luego ejecuta:sudo cp /var/www/mcp_dropbox/mcp-dropbox.service /etc/systemd/system/mcp-dropbox.service sudo systemctl daemon-reload sudo systemctl enable mcp-dropbox sudo systemctl start mcp-dropbox -
Verifica el estado del servicio:
sudo systemctl status mcp-dropbox
Nota: Necesitarás configurar un proxy inverso (como Nginx o Caddy) en el servidor para redirigir el tráfico de tu dominio (mcp.dominio.com) en los puertos 80/443 hacia el servicio interno en http://127.0.0.1:8000.
Licencia
Este proyecto se distribuye bajo una licencia de uso No Comercial. Permite su uso libre para fines personales, académicos o de investigación, pero prohíbe cualquier uso comercial o corporativo sin autorización previa. Ver LICENSE para más detalles.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。