Gdrive Cloudflare worker

Servidor MCP remoto para Google Drive y Sheets que se ejecuta en Cloudflare Workers con soporte completo de OAuth 2.0.

Documentación

mcp-gdrive-cf

Servidor MCP remoto para Google Drive y Sheets que se ejecuta en Cloudflare Workers con soporte completo de OAuth 2.0.

Listo para producción ✅ | 11 herramientas | OAuth 2.0 | PKCE | Red global de edge

Adaptado de isaacphi/mcp-gdrive para ejecutarse como servidor MCP remoto HTTP/SSE en la red de edge de Cloudflare con capacidades completas de servidor de autorización OAuth 2.0.


🚀 Inicio rápido

\`bash

1. Clone and install

git clone https://github.com/brianmoney/mcp-gdrive-cf.git cd mcp-gdrive-cf npm install

2. Create KV namespaces

wrangler kv:namespace create KV_TOKENS wrangler kv:namespace create KV_CLIENTS

3. Update wrangler.toml with your namespace IDs

4. Configure Google OAuth credentials

wrangler secret put GOOGLE_CLIENT_SECRET

5. Deploy

wrangler deploy

6. Test with MCP Inspector

npx @modelcontextprotocol/inspector https://your-worker.workers.dev/sse \`


✨ Características

Operaciones de Drive

  • 🔍 Búsqueda - Búsqueda básica y avanzada con filtros (tipo MIME, propietario, fechas, unidades compartidas)
  • 📄 Lectura - Lee cualquier archivo con más de 22 formatos de exportación (PDF, DOCX, XLSX, Markdown, etc.)
  • 📁 Crear carpetas - Organiza archivos con estructuras de carpetas anidadas
  • ⬆️ Subir - Sube archivos de hasta 5 MB
  • 🗑️ Eliminar - Mueve archivos a la papelera
  • 📦 Mover - Reorganiza archivos entre carpetas
  • 🔐 Compartir - Añade permisos (lector, escritor, comentarista, propietario)

Operaciones de Sheets

  • 📊 Leer - Lectura por lotes de múltiples rangos
  • ✏️ Actualizar - Actualiza celdas individuales
  • Añadir - Agrega filas a hojas de cálculo

Infraestructura

  • ☁️ Red global de edge - Se ejecuta en Cloudflare Workers en todo el mundo
  • 🔐 Servidor OAuth 2.0 - Servidor de autorización completo con soporte PKCE
  • 🔑 Registro dinámico de clientes - Incorporación automática de clientes
  • 🔄 Renovación automática de tokens - Renovación fluida de tokens de Google
  • 📡 Transporte SSE - Eventos enviados por el servidor en tiempo real
  • 🛡️ Seguro - Solo HTTPS, almacenamiento de tokens cifrado

🎯 Qué hace que esto sea diferente

A diferencia del mcp-gdrive\ original basado en STDIO, esta implementación:

  1. Se ejecuta de forma remota en Cloudflare Workers (sin proceso local)
  2. Servidor de autorización OAuth 2.0 completo (no solo cliente OAuth)
  3. Soporte multi-cliente mediante registro dinámico de clientes
  4. Seguridad PKCE para clientes públicos
  5. Más de 22 formatos de exportación para archivos de Drive
  6. Operaciones de escritura (crear, eliminar, mover, compartir, subir)
  7. Probado en producción con cargas de trabajo reales

📋 Requisitos previos

Requeridos

  • Cuenta de Cloudflare con Workers habilitado (el plan gratuito funciona)
  • Proyecto de Google Cloud con Drive API y Sheets API habilitadas
  • Node.js LTS (v18+)
  • CLI de Wrangler (npm install -g wrangler\)

Configuración de Google Cloud

  1. Crea un proyecto en Google Cloud Console
  2. Habilita las APIs:
    • Google Drive API
    • Google Sheets API
  3. Crea credenciales OAuth 2.0:
    • Tipo: Aplicación web
    • URI de redirección: https://your-worker.workers.dev/google/callback\
  4. Ámbitos OAuth requeridos:
    • https://www.googleapis.com/auth/drive\
    • https://www.googleapis.com/auth/spreadsheets\

🔧 Instalación e implementación

1. Instalar dependencias

\`bash npm install \`

2. Crear espacios de nombres KV

\`bash

For user session tokens

wrangler kv:namespace create KV_TOKENS

For OAuth client registrations

wrangler kv:namespace create KV_CLIENTS \`

Copia los IDs de los espacios de nombres a wrangler.toml\:

\`toml [[kv_namespaces]] binding = "KV_TOKENS" id = "your-tokens-namespace-id"

[[kv_namespaces]] binding = "KV_CLIENTS" id = "your-clients-namespace-id" \`

3. Configurar variables de entorno

Añade a wrangler.toml\:

\`toml [vars] GOOGLE_CLIENT_ID = "your-client-id.apps.googleusercontent.com" \`

Configura los secretos:

\`bash

Google OAuth client secret

wrangler secret put GOOGLE_CLIENT_SECRET \`

4. Implementar

\`bash wrangler deploy \`

Tu worker estará disponible en: https://your-worker-name.your-account.workers.dev\


🔐 Flujo OAuth 2.0

Este servidor implementa un servidor de autorización OAuth 2.0 completo según la especificación MCP.

Usando MCP Inspector

La forma más fácil de probar el flujo OAuth:

\`bash npx @modelcontextprotocol/inspector https://your-worker.workers.dev/sse \`

  1. Descubrimiento - Inspector descubre automáticamente los endpoints OAuth
  2. Registro - Haz clic en "Guided Setup" → registra el cliente automáticamente
  3. Autorización - Redirige a Google → autentica → redirige de vuelta
  4. Intercambio de tokens - Intercambia automáticamente el código por un token de acceso
  5. Usar herramientas - ¡Las 11 herramientas ya están disponibles!

Características de seguridad

  • PKCE (RFC 7636) - Clave de prueba para el intercambio de código
  • Parámetro de estado - Protección CSRF
  • Solo HTTPS - Aplicado por Cloudflare Workers
  • Almacenamiento seguro de tokens - Cifrado en Workers KV
  • Expiración de tokens - Los tokens de acceso expiran en 1 hora
  • Hash del secreto del cliente - Almacenamiento con hash SHA-256
  • Código de autorización de un solo uso - Los códigos se eliminan después del intercambio

🛠️ Herramientas disponibles

Herramientas de Drive

  • gdrive_search\ - Búsqueda básica en todos los archivos
  • gdrive_search_advanced\ - Búsqueda avanzada con filtros
  • gdrive_read_file\ - Lee archivos con más de 22 formatos de exportación
  • gdrive_create_folder\ - Crea carpetas
  • gdrive_upload_file\ - Sube archivos (hasta 5 MB)
  • gdrive_delete_file\ - Mueve archivos a la papelera
  • gdrive_move_file\ - Mueve archivos entre carpetas
  • gdrive_add_permission\ - Comparte archivos/carpetas

Herramientas de Sheets

  • gsheets_read\ - Lee múltiples rangos
  • gsheets_update_cell\ - Actualiza celdas individuales
  • gsheets_append_row\ - Añade filas

🔌 Configuración del cliente

VS Code con extensión MCP

Crea .vscode/settings.json\:

\`json { "mcp.servers": { "gdrive": { "url": "https://your-worker.workers.dev/sse", "authorization": { "type": "oauth2" } } } } \`

Claude Desktop / Cline

macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json\
Windows: %APPDATA%\\Claude\\claude_desktop_config.json\

\`json { "mcpServers": { "gdrive": { "url": "https://your-worker.workers.dev/sse" } } } \`


🧪 Pruebas

Desarrollo local

\`bash npm start

Server available at http://localhost:8788

\`

Probar con MCP Inspector

\`bash npx @modelcontextprotocol/inspector http://localhost:8788/sse \`

Revisar los registros de CloudFlare

\`bash wrangler tail --format pretty \`


🐛 Solución de problemas

"No se pudo descubrir los metadatos OAuth"

Solución:

  • Asegúrate de que /.well-known/oauth-authorization-server\ devuelva JSON válido
  • Comprueba que los encabezados CORS estén presentes
  • Verifica que la última versión esté implementada: wrangler deploy\

"El intercambio de tokens falló: HTTP 400"

Soluciones:

  • Comprueba que code_verifier coincida con el code_challenge original
  • Asegúrate de que redirect_uri coincida exactamente con el registro
  • Verifica que las credenciales del cliente sean correctas
  • Revisa los registros de CloudFlare: wrangler tail\

Las herramientas no funcionan

Soluciones:

  • Comprueba que los ámbitos OAuth de Google incluyan drive\ y spreadsheets\
  • Re-autentica si los ámbitos cambiaron: visita /google/authorize\
  • Verifica que el Worker tenga un token de acceso de Google válido
  • Comprueba los enlaces de los espacios de nombres KV en wrangler.toml\

📊 Rendimiento y límites

RecursoLímiteNotas
Tiempo de espera de solicitud30 segundosLímite de CloudFlare Workers
Subida de archivos5 MBLímite de la API de subida simple
Exportación de archivos10 MBLímite de exportación de Google Drive
Almacenamiento de tokens30 díasLimpieza automática
Código de autorización10 minutosDe un solo uso
Token de acceso1 horaRenovación automática

🔒 Mejores prácticas de seguridad

  1. Nunca comprometas secretos - Usa wrangler secret put\
  2. Rota los secretos del cliente - Regenera periódicamente las credenciales OAuth
  3. Monitorea el acceso - Usa CloudFlare Analytics para rastrear el uso
  4. Limita los ámbitos OAuth - Solicita solo los permisos de Google necesarios
  5. Usa PKCE - Usa siempre PKCE para clientes públicos
  6. Valida las URI de redirección - Incluye en la lista blanca las URI exactas en Google Console
  7. Habilita 2FA - Protege tus cuentas de CloudFlare y Google

📄 Licencia

Licencia MIT


🙏 Agradecimientos


Hecho con ☁️ por Brian Money