Interactiva MCP
by john-mz
README.md
# Interactiva MCP
Servidor MCP remoto y de solo lectura para el Campus Virtual Interactiva (Moodle). Está pensado para una sola cuenta y permite que Grok Bot consulte cursos, tareas, calendario, calificaciones y recursos sin almacenar la contraseña institucional.
## Herramientas
| Herramienta | Resultado |
| --- | --- |
| `get_dashboard` | Cursos y actividad reciente del panel |
| `list_courses` | Cursos disponibles |
| `get_upcoming_work` | Eventos y entregas próximas (1–90 días) |
| `get_calendar_events` | Eventos dentro de un rango ISO-8601 |
| `get_grades` | Información disponible en el resumen de calificaciones |
| `get_course_resources` | Actividades, archivos y enlaces; texto opcional limitado |
Todas las herramientas son de solo lectura. Los resultados incluyen URL de origen y fechas ISO-8601 cuando Moodle las expone.
## Despliegue en Railway
1. Sube este repositorio a GitHub y crea un servicio desde el repositorio en Railway.
2. Añade un volumen persistente montado en `/data`. Sin él, una sesión de Moodle se perderá al redesplegar.
3. Define estas variables de Railway:
- `PUBLIC_BASE_URL`: URL HTTPS pública asignada al servicio, sin `/` final.
- `MCP_AUTH_TOKEN`: token largo aleatorio para Grok Bot. Ejemplo: `openssl rand -base64 32`.
- `SESSION_ENCRYPTION_KEY`: clave AES de 32 bytes codificada en Base64. Ejemplo: `openssl rand -base64 32`.
- `MOODLE_BASE_URL=https://interactiva.uam.edu.co`
- `DATA_DIR=/data`
4. Railway detecta el `Dockerfile`; asigna al menos 1 GB de memoria porque Chromium se ejecuta en el servicio.
5. Comprueba `GET /health`: debe responder `{ "status": "ok" }`.
## Primer inicio de sesión Office 365
1. Invoca cualquier herramienta MCP. La respuesta indicará una URL de renovación de un solo uso, válida por 10 minutos.
2. Abre la URL. La página muestra el navegador remoto; usa la imagen para hacer clic, el cuadro de texto para escribir y los botones Tab/Enter para completar Office 365 y MFA.
3. Al volver a Moodle, la sesión se cifra con AES-256-GCM en el volumen. Cierra la pestaña de renovación.
La página temporal nunca recibe ni registra las credenciales: solo reenvía acciones a Chromium. No compartas esa URL mientras esté vigente.
## Conectar Grok Bot
Registra un servidor MCP remoto con:
```text
URL: https://TU-SERVICIO.up.railway.app/mcp
Authorization: Bearer <MCP_AUTH_TOKEN>
```
Primero verifica `initialize` y `tools/list`. Rota `MCP_AUTH_TOKEN` en Railway y vuelve a registrar el conector si sospechas que se expuso.
## Desarrollo y pruebas
Requiere Node.js 20+.
```bash
npm install
copy .env.example .env
npm run build
npm test
```
No incluyas `.env`, `/data`, capturas ni resultados académicos en control de versiones o logs.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues