dutic-mcp
Allows interaction with the DUTIC (Moodle) virtual classroom of UNSA, providing tools to list tasks (including hidden ones), courses, and resources, and to download files from courses.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dutic-mcpshow me my upcoming tasks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dutic-mcp
Servidor MCP + herramienta de consola para el aula virtual DUTIC (Moodle) de la UNSA. Deja que tú —desde la terminal— y agentes como Claude vean tareas (incluidas las ocultas), cursos y recursos, y descarguen archivos.
Por qué existe
La app móvil previa sólo leía el calendario/timeline de Moodle, que sólo muestra tareas accionables
(futuras y sin entregar). Las tareas sin fecha de calendario, ya vencidas o ya entregadas quedaban
invisibles → entregas perdidas. Esta herramienta barre cada curso para descubrir todas las tareas,
las marca con hidden: true cuando no salían en el timeline, y ordena por urgencia lo pendiente.
Related MCP server: Moodle MCP
Cómo funciona
No usa la API pública de web services: captura la cookie MoodleSession y el token sesskey tras un
login de Google OAuth institucional (Playwright manejando tu Chrome instalado, sin descargar Chromium),
y con ellos llama al endpoint AJAX interno de Moodle (lib/ajax/service.php). El perfil del navegador es
persistente, así que el SSO de Google se mantiene y la renovación de sesión suele ser automática.
Realidad de la API en la UNSA (importante): los admins bloquearon varias funciones AJAX
(core_course_get_contents, mod_assign_get_assignments) → devuelven "El servicio Web no está disponible".
La ruta que sí funciona y usamos:
Necesidad | Fuente | Estado |
Descubrir todas las tareas de un curso |
| ✅ |
Cursos matriculados |
| ✅ |
Timeline (marca no-ocultas + fecha exacta) |
| ✅ (sólo accionables) |
Estado de entrega, nota, tiempo restante | scraping de | ✅ |
Los eventos de calendario de acción sólo aparecen cuando la tarea está pendiente y futura, por eso el estado de entrega real se obtiene scrapeando la página de cada tarea.
Requisitos
Node.js ≥ 20
Google Chrome (o Edge) instalado — Playwright lo usa vía
channel. No hace falta descargar Chromium.
Instalación
npm install
npm run buildSi prefieres el Chromium propio de Playwright:
npx playwright install chromiumy luegoDUTIC_BROWSER_CHANNEL=chromium. (Requiere ~184 MB de disco libre.)
Configuración
DUTIC_SEMESTER— semestre, p.ej.2026A(por defecto2026A). Cambia cada período; aun así el sitio real se auto-detecta tras el login.DUTIC_BROWSER_CHANNEL—chrome(def.),msedgeochromium.DUTIC_DATA_DIR— dónde guardar sesión y perfil (por defecto~/.dutic).
Uso — CLI
# Primer login (abre Chrome, inicias sesión con Google una vez)
dutic login
dutic status # estado de la sesión y semestre
dutic tasks # tareas próximas (rápido, del calendario)
dutic tasks --all # + barrido de cursos (incluye ocultas)
dutic tasks --hidden # SÓLO las tareas ocultas
dutic courses # cursos matriculados
dutic course tasks <id> # tareas de un curso (incluye ocultas)
dutic course files <id> # recursos de un curso
dutic read <url> # lee un recurso (PDF→Markdown) para analizarlo sin gastar tokens
dutic md <archivo.pdf> # convierte un PDF local a Markdown
dutic pull <id> --dest ./x # descarga todos los recursos de un cursoEn desarrollo, sin compilar: npm run dev:cli -- tasks --all.
Uso — MCP (para Claude)
Compila (npm run build) y registra el servidor. En claude_desktop_config.json (o el equivalente de tu
cliente MCP):
{
"mcpServers": {
"dutic": {
"command": "node",
"args": ["C:\\Users\\USER\\source\\MCPs\\dutic-mcp\\dist\\mcp\\server.js"],
"env": { "DUTIC_SEMESTER": "2026A" }
}
}
}En Claude Code: claude mcp add dutic -- node C:\Users\USER\source\MCPs\dutic-mcp\dist\mcp\server.js
Herramientas expuestas (11): dutic_list_tasks (scope upcoming/all, onlyHidden, detailed),
dutic_list_courses, dutic_get_course_contents, dutic_get_course_tasks, dutic_list_course_files,
dutic_download_file, dutic_read_resource (recurso → Markdown para analizar sin gastar tokens),
dutic_pull_course_files, dutic_pdf_to_markdown (PDF local → Markdown), dutic_session_status,
dutic_refresh_session.
Analizar materiales sin gastar tokens
dutic_read_resource / dutic read <url> descarga un recurso y devuelve su contenido como texto
Markdown (convierte PDFs con unpdf, sin dependencias nativas), para que el agente lo analice sin
volcar el binario al contexto. dutic_pdf_to_markdown / dutic md hace lo mismo con un PDF local.
Limitación: las carpetas (mod/folder) de algunos temas de Moodle renderizan su árbol por JS y no
exponen los enlaces; en ese caso usa el enlace directo del archivo o descárgalo y conviértelo con md.
El MCP renueva la sesión de forma headless si el SSO de Google sigue vivo. Si caducó del todo, devuelve un aviso para que corras
dutic loginen una terminal (ahí sí puede abrirse el navegador).
Configuración multi-agente (Antigravity, OpenCode, mimocode, Claude Code…)
El servidor MCP funciona con cualquier agente compatible con MCP. Para registrarlo en todos tus agentes
instalados de una vez (preservando su config existente y con backup *.dutic-bak):
npm run setup # build + instala la skill + configura los agentes
# o por separado:
npm run setup:agents # sólo registra el MCP en los agentes
npm run setup:skill # sólo copia la skill a los dirs de skills de los agentesEsquemas usados automáticamente: mcpServers (Claude Code ~/.claude.json, Antigravity
~/.antigravity/config/mcp_config.json) y mcp con type:"local" (OpenCode opencode.jsonc,
mimocode mimocode.jsonc). Reinicia cada agente tras configurarlo.
Skill dutic (instalable con npx skills)
El repo incluye una skill en skills/dutic/ que enseña a los agentes a usar este MCP (buscar tareas
ocultas, priorizar lo pendiente, descargar recursos). Instálala en todos tus agentes con el gestor de
skills del ecosistema:
# Desde una copia local del repo:
npx skills add "C:\Users\USER\source\MCPs\dutic-mcp" -a '*' -s dutic -y
# O, una vez publicado en GitHub:
npx skills add <tu-usuario>/dutic-mcp -a '*' -s dutic -y-a '*' instala en todos los agentes detectados. npx skills list muestra las instaladas.
Ordenamiento por urgencia
dutic tasks --all ordena por urgencia: las SIN ENTREGAR van primero (por fecha de entrega, las
vencidas/próximas arriba), y las entregadas/calificadas al fondo. La cabecera resume cuántas hay pendientes.
Notas de seguridad
La sesión (
~/.dutic/session.json) y el perfil del navegador contienen credenciales de tu cuenta: no se versionan (.gitignore) y el archivo de sesión se crea con permisos restrictivos.El certificado de
aulavirtual.unsa.edu.pe(CA privada UNSA) se acepta sólo para ese host.
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JOSETRA44/DUTIC-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server