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:
- Se ejecuta de forma remota en Cloudflare Workers (sin proceso local)
- Servidor de autorización OAuth 2.0 completo (no solo cliente OAuth)
- Soporte multi-cliente mediante registro dinámico de clientes
- Seguridad PKCE para clientes públicos
- Más de 22 formatos de exportación para archivos de Drive
- Operaciones de escritura (crear, eliminar, mover, compartir, subir)
- 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
- Crea un proyecto en Google Cloud Console
- Habilita las APIs:
- Google Drive API
- Google Sheets API
- Crea credenciales OAuth 2.0:
- Tipo: Aplicación web
- URI de redirección:
https://your-worker.workers.dev/google/callback\
- Á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
\`
- Descubrimiento - Inspector descubre automáticamente los endpoints OAuth
- Registro - Haz clic en "Guided Setup" → registra el cliente automáticamente
- Autorización - Redirige a Google → autentica → redirige de vuelta
- Intercambio de tokens - Intercambia automáticamente el código por un token de acceso
- 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 archivosgdrive_search_advanced\- Búsqueda avanzada con filtrosgdrive_read_file\- Lee archivos con más de 22 formatos de exportacióngdrive_create_folder\- Crea carpetasgdrive_upload_file\- Sube archivos (hasta 5 MB)gdrive_delete_file\- Mueve archivos a la papeleragdrive_move_file\- Mueve archivos entre carpetasgdrive_add_permission\- Comparte archivos/carpetas
Herramientas de Sheets
gsheets_read\- Lee múltiples rangosgsheets_update_cell\- Actualiza celdas individualesgsheets_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\yspreadsheets\ - 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
| Recurso | Límite | Notas |
|---|---|---|
| Tiempo de espera de solicitud | 30 segundos | Límite de CloudFlare Workers |
| Subida de archivos | 5 MB | Límite de la API de subida simple |
| Exportación de archivos | 10 MB | Límite de exportación de Google Drive |
| Almacenamiento de tokens | 30 días | Limpieza automática |
| Código de autorización | 10 minutos | De un solo uso |
| Token de acceso | 1 hora | Renovación automática |
🔒 Mejores prácticas de seguridad
- Nunca comprometas secretos - Usa
wrangler secret put\ - Rota los secretos del cliente - Regenera periódicamente las credenciales OAuth
- Monitorea el acceso - Usa CloudFlare Analytics para rastrear el uso
- Limita los ámbitos OAuth - Solicita solo los permisos de Google necesarios
- Usa PKCE - Usa siempre PKCE para clientes públicos
- Valida las URI de redirección - Incluye en la lista blanca las URI exactas en Google Console
- Habilita 2FA - Protege tus cuentas de CloudFlare y Google
📄 Licencia
Licencia MIT
🙏 Agradecimientos
- isaacphi/mcp-gdrive - Implementación original de STDIO
- Model Context Protocol - Especificación MCP
- CloudFlare Workers - Plataforma serverless
Hecho con ☁️ por Brian Money