Skip to main content
Glama

UTN-MCP — El puente entre tu agente y los sistemas de la Universidad.

Este es el Model Context Protocol server NO OFICIAL de la UTN. Con él podés pedirle a tu agente de preferencia (Claude, ChatGPT, etc.) que busque información y lea los apuntes del aula virtual y, con tu confirmación, que publique en los foros o entregue tareas. Corre en tu computadora o como servidor HTTP con OAuth, para usarlo desde cualquier lado.

Qué podés pedirle

  • "¿Cuándo es el recuperatorio del primer parcial de Álgebra?"

  • "¿Qué avisó la profesora de Física esta semana?"

  • "Resumime la guía de la unidad 3 de Sistemas Operativos."

  • "Pasame el link para bajar el apunte de calorimetría."

  • "¿Qué nota me pusieron en el TP1 y qué me corrigieron?"

  • "Preguntá en el foro de consultas si el parcial incluye la unidad 4."

  • "Anotame en el grupo 6."

  • "Agendame el recuperatorio del 14 a las 18."

El agente recorre el aula como lo harías vos: entra al curso, mira los foros y abre los archivos que hagan falta.

Related MCP server: moodle-utn-mcp

Tools

Tool

Qué hace

aula_list_courses

Lista tus cursos. Es el punto de partida.

aula_open

Entra a un curso, un módulo, un foro o una discusión. Cada respuesta trae las direcciones de lo que hay adentro y de un nivel más arriba, así el agente navega sin perderse.

aula_read_file

Lee un archivo del aula, por partes cuando es largo.

aula_grades

Tus calificaciones en un curso, incluidas las que el docente carga a mano.

aula_study_pack

Une en un solo PDF con índice los apuntes que elijas de una materia (un 'machacado'), guardado en tu compu. Solo en modo local.

aula_get_site_info

Datos de tu usuario y de tu regional en el aula virtual.

aula_forum_post

Abre un hilo en un foro o responde en una discusión.

aula_forum_edit_post

Edita una publicación tuya.

aula_forum_delete_post

Borra una publicación tuya.

aula_assign_submit

Entrega una tarea: sube archivos de tu compu, escribe el texto en línea y confirma el envío.

aula_assign_upload_link

Solo en modo HTTP: un link para subir los archivos de una entrega, que usa el agente con curl o vos desde el navegador.

aula_choice_answer

Responde una elección o te anota en un grupo.

aula_send_message

Manda un mensaje privado a un docente o compañero.

aula_calendar_add_event

Agrega un recordatorio a tu calendario del aula.

autogestion_cursando_ahora

Las materias que estás cursando ahora según la autogestión, con comisión, aula y horarios cuando el sistema los publica. Incluye electivas. Aparece solo si tu regional tiene un conector de autogestión.

autogestion_estado_academico

Tu estado académico según la autogestión de tu regional: cada materia con su estado, plan, nota y fecha. Aparece solo si tu regional tiene un conector de autogestión.

autogestion_correlatividades

Las correlatividades de tu carrera según la autogestión, para cursar y para rendir, en vez de datos fijos del repo. Aparece solo si tu regional tiene un conector de autogestión.

autogestion_examenes

Tu historial de finales según la autogestión: fecha, materia, nota o estado, plan y código. Aparece solo si tu regional tiene un conector de autogestión.

autogestion_certificados

Los certificados y constancias que tu autogestión ofrece descargar (en Sysacad: certificado de alumno regular y actividad académica, con validación por código QR), cada uno con su referencia para pedir la descarga. Aparece solo si tu regional tiene un conector de autogestión. Solo en modo local.

autogestion_descargar_certificado

Descarga un certificado de la autogestión y lo guarda en tu compu; la respuesta trae la ruta del archivo. Solo en modo local.

Al abrir una tarea, aula_open muestra si la entregaste, cuándo vence y la devolución con la nota. Al abrir un cuestionario, muestra tus intentos y la nota final. Las tools que escriben le piden al agente que te muestre lo que va a hacer y espere tu confirmación.

Archivos que puede leer

  • PDF: el texto, página por página. Los escaneados se mandan como imagen de cada página, y el agente los lee igual.

  • Word (.docx), PowerPoint (.pptx) y Excel (.xlsx): el texto, con las tablas fila por fila.

  • Imágenes (PNG, JPG, GIF) y texto plano.

Los formatos viejos de Office (.doc, .ppt, .pps), los comprimidos (.zip, .rar) y los videos no se leen. En ese caso el agente te pasa el link para que lo bajes.

Cada archivo viene con un link del aula virtual que podés abrir en tu navegador. Funciona con tu sesión del aula (si no estás logueado te manda al login) y nunca incluye tu token: ese queda siempre en tu computadora.

Cómo instalar

Necesitás Node.js 20 o superior. No hace falta clonar el repo ni instalar nada a mano: npx descarga el paquete solo.

1. Iniciar sesión

npx -y utn-mcp login

Te pide tu regional, tu usuario y tu contraseña: los mismos con los que entrás al aula virtual. Si no tenés usuario institucional (por ejemplo, en el curso de ingreso), usá el que te dieron para el aula. En Córdoba (FRC) los alumnos entran con el mail completo (<legajo>@<especialidad>.frc.utn.edu.ar), no con el legajo solo; con una cuenta @frc.utn.edu.ar, con lo que va antes de la @. En Haedo (FRH) y San Nicolás (FRSN) se entra con el mail completo de Office 365 (en FRH, del estilo <inicial><apellido><3 dígitos del legajo>@alumnos.frh.utn.edu.ar). Se hace una sola vez: después el servidor renueva la sesión solo.

2. Agregarlo a tu cliente

Claude Code

claude mcp add utn -- npx -y utn-mcp

Claude Desktop: en Settings → Developer → Edit Config, agregá dentro de mcpServers:

"utn": {
  "command": "npx",
  "args": ["-y", "utn-mcp"]
}

En Windows, si no arranca, usá "command": "cmd" y "args": ["/c", "npx", "-y", "utn-mcp"]. Después reiniciá Claude Desktop por completo.

Codex

codex mcp add utn -- npx -y utn-mcp

Gemini CLI

gemini mcp add utn npx -y utn-mcp

OpenClaw

openclaw mcp add utn --command npx --arg -y --arg utn-mcp

Hermes: en ~/.hermes/config.yaml:

mcp_servers:
  utn:
    command: "npx"
    args: ["-y", "utn-mcp"]

Cursor: en ~/.cursor/mcp.json:

{
  "mcpServers": {
    "utn": { "command": "npx", "args": ["-y", "utn-mcp"] }
  }
}

VS Code: en .vscode/mcp.json (o con MCP: Add Server desde la paleta de comandos):

{
  "servers": {
    "utn": { "type": "stdio", "command": "npx", "args": ["-y", "utn-mcp"] }
  }
}

ChatGPT: solo se conecta a servidores MCP remotos por HTTPS, así que necesita un servidor en modo HTTP publicado en internet (ver Hostearlo para otros). Se agrega como conector desde Configuración → Apps y conectores, con el modo desarrollador activado. Los conectores propios están desde el plan Pro, y ahí solo con las herramientas de lectura; para usar también las de escritura (foros, mensajes, entregas) hace falta Business o superior.

Otros clientes (Windsurf, opencode, etc.): cualquier cliente MCP que lance servidores por STDIO sirve con el comando npx -y utn-mcp.

Instalación global (opcional)

Si preferís tener el comando utn-mcp siempre disponible:

npm i -g utn-mcp
utn-mcp login

y en la config del cliente usás "command": "utn-mcp" sin argumentos.

Regionales

La regional se elige al iniciar sesión, de una lista con las regionales de la UTN. Buenos Aires (FRBA), Córdoba (FRC), Resistencia (FRRE) y Tucumán (FRT) ya están probadas. También está el aula de la Tecnicatura en Programación a distancia del SIED (TUP). El login se adapta solo: si el aula entra por SSO, sea un Keycloak propio (FRBA) u Office 365 (Haedo, FRH, y San Nicolás, FRSN), usa el SSO; si no, el login directo de Moodle. Si tu cuenta de Office 365 pide segundo factor (MFA), el login te pregunta con qué método seguir y te pide el código o que apruebes en el celular. Como el servidor renueva la sesión sin vos delante, con MFA te va a pedir que vuelvas a iniciar sesión cuando venza (dura semanas).

La lista puede traer regionales que nadie probó todavía: su aula tiene habilitado el servicio que usa UTN-MCP, así que casi seguro anda. En un servidor hosteado, la primera persona que entra con una de esas la deja verificada para el resto. Las que no tienen el servicio habilitado aparecen como "todavía sin soporte": se pueden elegir, pero el login avisa que por ahora no se puede usar y no manda la contraseña.

Si tu campus no está en la lista, abrí un issue con la URL de su aula virtual para sumarlo. Mientras tanto, podés usarlo definiendo en un .env en la carpeta desde donde corrés utn-mcp (o en el entorno):

UTN_AULA_BASE_URL=https://tu-campus.utn.edu.ar
# UTN_SSO_HOST=auth.tu-campus.utn.edu.ar  # solo si entra por SSO: Keycloak, o login.microsoftonline.com si es Office 365

Aparece como una opción más al iniciar sesión.

UTN_REGIONAL (por ejemplo, UTN_REGIONAL=frt) elige la que viene marcada por defecto, y es la que se usa si en lugar de login definís UTN_USER y UTN_PASS.

Autogestión (Sysacad)

Si tu regional usa el Sysacad clásico, al terminar login te pregunta si querés conectarlo también. Si decís que sí, baja el conector de Sysacad (no viene con el paquete: si no lo usás, no se baja), te pide tu legajo y tu contraseña de Sysacad, que no siempre son las del aula, los prueba y los guarda en el gestor de credenciales. Para conectarlo después, o cambiar la contraseña:

npx -y utn-mcp login autogestion

Con Sysacad conectado aparecen las tools autogestion_*: tu estado académico, lo que estás cursando, tus finales y las correlatividades de tu carrera. Por ahora son solo de lectura.

Lo usan Bahía Blanca, Chubut, Concordia, Delta, General Pacheco, Haedo, La Rioja, Mar del Plata, Neuquén, Paraná, Reconquista, Santa Fe, San Francisco, San Nicolás, San Rafael, Tucumán, Tierra del Fuego y Venado Tuerto. En Tucumán anduvo con una versión anterior del conector; esta todavía no se probó con una cuenta real: si lo probás, contanos en un issue si funcionó. En algunas el usuario no es el legajo tal cual (en Delta va sin el "23-", por ejemplo); el login te dice qué escribir. Avellaneda y Rosario quedan afuera porque su Sysacad pide un captcha o un desafío del navegador, y Rafaela, Santa Cruz y Trenque Lauquen porque no tienen HTTPS válido y la contraseña viajaría expuesta.

Modo HTTP (opcional)

Necesita Node 22.13 o más nuevo. Primero, una vez:

npx -y utn-mcp login --http

Te muestra un token: configurá tu cliente MCP para que mande el header Authorization: Bearer <token>. Después:

npx -y utn-mcp --http --port 3000

Levanta el servidor en http://127.0.0.1:3000/mcp, solo accesible desde tu propia máquina. Tenés que dejar la terminal abierta mientras lo uses.

En este modo el servidor no lee archivos de tu disco: para entregar, el agente pide un link con aula_assign_upload_link y sube ahí los archivos con curl si tiene terminal, o te pasa el link para que los elijas desde el navegador.

Hostearlo para otros

En modo HTTP el servidor también es servidor de autorización OAuth: un cliente MCP (Claude, ChatGPT) que se conecta a https://tu-dominio/mcp recibe un 401, descubre el OAuth y abre una página donde el alumno elige su regional y entra con su usuario de la UTN. Cada alumno usa el aula de su regional, aunque sean de regionales distintas. Ese login vincula su aula: la contraseña se usa una sola vez para sacar el token de Moodle y no se guarda. Cuando la sesión del aula vence, el agente le pasa el link de /login para renovarla, sin reconectar el cliente.

La autogestión (Sysacad) funciona igual para cada alumno, según su regional. Al arrancar, el servidor instala los conectores del catálogo en connectors/ de su carpeta de datos. La primera vez que el agente la necesita, le pasa al alumno un link a /autogestion/... para que entre con su legajo y contraseña de Sysacad desde el navegador: la contraseña nunca pasa por el chat. Como con el aula, la contraseña se usa una sola vez y no se guarda: queda cifrada en la base solo la sesión de Sysacad. Cuando Sysacad la vence (unos minutos sin usarla), el agente le vuelve a pasar el link.

Quién puede entrar lo decidís vos: con UTN_MCP_ALLOWED_EMAILS (una lista), o con UTN_MCP_ACCESS_URL, que apunta a un servicio tuyo. El servidor le hace POST con { "email", "usuario", "regional" } y el header Authorization: Bearer <UTN_MCP_ACCESS_SECRET>, y espera { "permitido": true } o { "permitido": false, "motivo": "...", "url": "..." }. Se consulta al conectar y en cada renovación del token (cada hora), así que una baja se aplica sola.

La configuración va en variables de entorno o en un .env en la carpeta desde donde lo corrés (copiá .env.example):

Variable

Para qué

Por defecto

HOST, PORT

Dónde escucha.

127.0.0.1, 3000

UTN_MCP_PUBLIC_URL

Dirección pública (https://mcp.tu-dominio.com). Es el issuer del OAuth, la base de los links de subida y el único host, además de localhost, que se acepta en Host y Origin.

http://127.0.0.1:<PORT>

UTN_MCP_ACCESS_URL, UTN_MCP_ACCESS_SECRET

Servicio que decide quién puede entrar.

—

UTN_MCP_ALLOWED_EMAILS

Emails o dominios (@frba.utn.edu.ar) habilitados, separados por coma, si no hay UTN_MCP_ACCESS_URL.

Entra cualquiera con usuario de la UTN

UTN_MCP_REDIRECT_ALLOW

Hosts (app.ejemplo.com) o esquemas (miapp:) extra, separados por coma, a los que puede volver el login de OAuth. Loopback, Claude, ChatGPT, VS Code y Cursor pasan siempre. Cualquier otro host HTTPS (un agente propio, por ejemplo) se acepta, pero el login avisa a dónde vuelve y el alumno tiene que marcar que lo conecta bajo su responsabilidad: es la defensa contra alguien que use tu página de login para quedarse con su sesión. Los hosts de esta lista pasan sin aviso.

—

UTN_MCP_ADMIN_SECRET

Habilita la API de /admin para un panel de cuentas tuyo: POST /admin/usuarios (todos los usuarios con sus apps), /admin/clientes y /admin/clientes/revocar (las apps de un usuario, por email), /admin/regionales (las regionales con su soporte) y /admin/verificar (entra al aula con usuario y contraseña, como el login de OAuth, y le guarda la sesión; si Microsoft pide segundo factor, devuelve el paso y se sigue con /admin/segundo-factor).

—

UTN_MCP_LOGIN_URL

Página donde el usuario renueva su sesión del aula; el agente se la pasa.

<UTN_MCP_PUBLIC_URL>/login

UTN_MCP_DB, UTN_MCP_KEY

Base de sesiones y su clave de cifrado (32 bytes en base64).

En la carpeta de config

UTN_MCP_PACK_MAX_FILES, UTN_MCP_PACK_MAX_MB, UTN_MCP_PACK_MAX_FINAL_MB

Topes del compilado de estudio (aula_study_pack, solo modo local): archivos por pack, MB de descarga total y MB del PDF final, que se arma entero en memoria.

150, 300 y 30

Con Docker, detrás de un reverse proxy con HTTPS en la misma máquina (red host, para que el rate limit del login vea la IP real):

docker build -t utn-mcp .
docker run -d --name utn-mcp --network host --restart unless-stopped \
  -e HOST=127.0.0.1 -e PORT=8100 -e UTN_MCP_PUBLIC_URL=https://mcp.tu-dominio.com \
  -e UTN_MCP_KEY=$(openssl rand -base64 32) -v utn-mcp-data:/data utn-mcp

Guardá esa UTN_MCP_KEY: sin ella no se pueden descifrar las sesiones guardadas.

Dónde se guardan tus datos

Instalado en tu computadora, todo queda ahí:

  • Usuario y contraseña: en el gestor de credenciales del sistema (Windows Credential Manager, Keychain en macOS, Secret Service en Linux).

  • Token del aula virtual: en %APPDATA%\utn-mcp\session.json (Windows) o ~/.config/utn-mcp/session.json (Linux y macOS).

  • Conector de autogestión: en connectors/, dentro de esa misma carpeta. El legajo y la contraseña de Sysacad van al gestor de credenciales, aparte de los del aula.

  • En modo HTTP: la contraseña no se guarda; la sesión va cifrada en utn-mcp.db, en la misma carpeta, con la clave de store.key (o la de UTN_MCP_KEY). Del token del cliente solo se guarda el hash. Con la de Sysacad pasa lo mismo: no se guarda, y su sesión va cifrada en la misma base.

En Linux sin gestor de credenciales (servidores, Docker, WSL) podés definir las variables de entorno UTN_USER y UTN_PASS en lugar de usar login. Para Sysacad son SYSACAD_ASP_USER y SYSACAD_ASP_PASS.

Si usás un servidor hosteado por otra persona, tus sesiones del aula y de Sysacad las guarda ese servidor (cifradas, y sin tus contraseñas): revisá su política de privacidad.

Desarrollo

git clone https://github.com/nialvape/utn-mcp.git
cd utn-mcp
npm install
npm run login   # una vez
npm run dev     # servidor por STDIO desde src/, con tsx
npm run build   # compila a build/

pdf.js no es una dependencia del paquete publicado. Está como devDependency, y npm install corre el script prepare, que copia a vendor/pdfjs/ solo los archivos que usa el servidor (~4 MB). Así, quien instala utn-mcp no baja pdf.js entero ni su canvas nativo opcional (~37 MB). Si instalaste con --ignore-scripts, generalo a mano con npm run prepare.

Conectores de autogestión

Cada sistema de autogestión es un paquete aparte en packages/ (hoy, packages/sysacad-asp). No se publica en npm: utn-mcp login baja el .tgz adjunto a un release del repo, comprueba que su hash sea el de src/autogestion/client/catalog.ts y lo extrae en connectors/. El conector implementa AutogestionSystem de src/autogestion/client/connector.ts y del core importa solo tipos: lo que necesita en tiempo de ejecución (las clases de error, htmlToText) se lo pasa el core en create.

Para publicar una versión de un conector:

node scripts/pack-connector.mjs sysacad-asp

Arma el .tgz en build-connectors/ y muestra la URL y el hash que van al catálogo, y el gh release create que lo sube.

Para probar un conector sin publicarlo, compilalo, instalalo con npm install en la carpeta desde la que corrés utn-mcp y nombralo en UTN_MCP_CONNECTORS (separados por comas). Cargar un conector ejecuta su código: nombrá solo paquetes en los que confíes.

Aviso

Este proyecto no está afiliado ni avalado por la UTN. Usalo bajo tu responsabilidad.

Available Tools

13 tools
aula_assign_submitA
Destructive

Entrega una tarea (assign) del aula virtual: sube archivos, escribe el texto en línea o las dos cosas, según lo que acepte la tarea. Antes, abrila con aula_open: entrega dice qué acepta (acepta, con tipos, cantidad y tamaño), si puedeEditar y lo que ya está subido.

Los archivos nuevos se pasan en archivos con su ruta absoluta en la compu del usuario. archivos es la lista final y reemplaza lo anterior: para sumar uno sin perder los otros, incluí la url de cada archivo que ya está en la entrega. Si no pasás archivos, quedan los que estaban; lo mismo con texto.

Si la tarea no usa borradores, guardar ya es entregar. Si los usa (requiereConfirmarEnvio), la tool además confirma el envío, salvo con enviar: false; una vez enviada, en general no se puede cambiar. Con declaracion, el usuario tiene que aceptarla (aceptoDeclaracion). Devuelve cómo quedó la entrega.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme. Incluí la tarea, los nombres de los archivos y si se confirma el envío.

Inputs: direccion (required), texto, enviar, archivos, +1 more.

aula_calendar_add_eventA

Agrega un evento personal al calendario del aula virtual, que solo ve el usuario: por ejemplo un recordatorio de un parcial o una entrega. El aula avisa según la configuración de notificaciones del usuario. La fecha va con zona horaria; en Argentina es -03:00.

Inputs: inicio (required), nombre (required), descripcion, duracionMinutos.

aula_choice_answerA
DestructiveIdempotent

Responde una elección (choice: encuestas rápidas como "¿venís al parcial?") o una selección de grupos (choicegroup: anotarse en un grupo o comisión). Deja elegidas exactamente las opciones pasadas y reemplaza la respuesta anterior; con una lista vacía la borra.

Las opciones salen de eleccion al abrir el módulo con aula_open. Muchas no dejan cambiar la respuesta una vez dada (puedeCambiar: false), y las opciones deshabilitada están completas. Devuelve cómo quedó la elección.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme.

Inputs: opciones (required), direccion (required).

aula_forum_delete_postA
DestructiveIdempotent

Borra una publicación propia de un foro. No se puede deshacer. Solo se puede si tiene "borrar" en acciones. Si es la primera publicación de la discusión, se borra la discusión entera.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme.

Inputs: id (required), direccion (required).

aula_forum_edit_postA
DestructiveIdempotent

Edita una publicación propia de un foro y reemplaza el mensaje completo. Solo se puede si la publicación tiene "editar" en acciones: Moodle deja editar por un rato después de publicar.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme.

Inputs: id (required), mensaje (required), direccion (required), asunto.

aula_forum_postA

Publica en un foro del aula virtual. Con la direccion de un foro abre un hilo nuevo (hace falta asunto); con la de una discusión responde en ella, a la publicación respuestaA o, si no se indica, a la primera.

Lo que se publica lo ven docentes y compañeros, y a muchos les llega por mail. Antes de abrir un hilo, mirá puedeAbrirHilo del foro; antes de responder, que la publicación tenga "responder" en acciones.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme.

Inputs: mensaje (required), direccion (required), asunto, respuestaA.

aula_get_site_infoA
Read-only

Datos del usuario logueado y del sitio Moodle de su aula virtual. regional es la regional de la UTN de esa aula (por ejemplo, "Tucumán (FRT)"): usala para hablarle de su facultad.

Inputs: no named parameters.

aula_gradesA
Read-only

Las calificaciones del usuario en un curso, las mismas que ve en "Calificaciones" del aula: tareas, cuestionarios y también las notas que el docente carga a mano (un TP corregido en papel, un parcial), que no aparecen en ningún módulo. Usala para saber cómo va en una materia o si aprobó algo.

Cada ítem trae calificacion (como la formatea el aula, sin nota si todavía no hay), maximo, porcentaje y, si es de un módulo, su direccion para abrirlo con aula_open. tipo dice de dónde sale: el módulo (quiz, assign), "manual", "category" o "course" (el total).

Inputs: direccion (required).

aula_list_coursesA
Read-only

Lista los cursos (materias) en los que está inscripto el usuario. Es el punto de entrada: cada curso viene con su direccion, que se le pasa a aula_open para entrar.

Inputs: no named parameters.

aula_openA
Read-only

Entra a una dirección del aula virtual y devuelve lo que hay ahí: un curso con sus secciones y módulos, un módulo con sus archivos y fechas, un foro con el índice de sus discusiones, o una discusión con sus mensajes completos.

Según el tipo de módulo trae además: en una tarea (assign), entrega con el estado, el vencimiento, lo que se subió y la devolución con la nota; en un cuestionario (quiz), cuestionario con la calificacionFinal ("0,00 / 10,00") y cada intento con su estado, comienzo, fin y nota; en una elección (choice) o selección de grupos (choicegroup), eleccion con las opciones y sus ids; en un foro, puedeAbrirHilo; en una discusión, el id, el autorId y las acciones permitidas de cada publicación. Es lo que piden las tools que escriben en el aula.

No hace falta armar la dirección: cada respuesta trae las direcciones de lo que hay adentro (direccion) y la de un nivel más arriba (padre), así que se navega pasando de vuelta una de esas. Para empezar, usar aula_list_courses o la dirección "/".

Buscar algo que puede estar en cualquier parte (una fecha de parcial, un aviso) se hace entrando al curso y abriendo lo que corresponda: el índice de un foro muestra los asuntos sin volcar los mensajes enteros, y archivos como un cronograma se leen con aula_read_file.

Los archivos vienen con una url, que sirve para leerlos con aula_read_file y también para dársela al usuario si quiere bajarlo: se abre con su sesión del aula.

Inputs: direccion (required), pagina.

aula_read_fileA
Read-only

Lee un archivo del aula virtual: PDF, Word (docx), PowerPoint (pptx), Excel (xlsx), imágenes y texto. Los PDF escaneados se devuelven como imagen de cada página.

Devuelve el archivo por partes (páginas, diapositivas o fragmentos), tantas como entren en una respuesta. Si quedan más, siguiente dice desde cuál pedir; también se puede saltar directo a una parte con desde.

Formatos que no sabe leer (.doc, .ppt viejos, .zip, .rar, videos): devuelve un error con la URL para que el usuario lo baje.

Inputs: url (required), desde.

aula_send_messageA

Manda un mensaje privado por la mensajería del aula virtual a otro usuario, docente o compañero. El usuarioId sale del autorId de un foro o una discusión abiertos con aula_open: no lo inventes ni lo deduzcas del nombre. La respuesta trae el nombre del destinatario.

Antes de llamarla, mostrale al usuario exactamente lo que se va a hacer y esperá que confirme. Incluí a quién va dirigido.

Inputs: mensaje (required), usuarioId (required).

aula_study_packA

Une PDF del aula en un solo compilado de estudio con índice clickeable (cada entrada abre la página donde empieza ese material, y cada página tiene arriba un enlace para volver), guardado en la compu del usuario. Une ÚNICAMENTE PDF; si una URL pedida no es PDF, queda en omitidos con el motivo.

Conviene llamar antes a aula_open del curso: devuelve cada módulo con sus archivos (nombre, url, sección y tipo) y permite elegir los apuntes sin bajar nada. Es un compilado íntegro, no un resumen.

Hay topes por memoria: 150 archivos, 300 MB de descarga total y 30 MB el PDF final (estimado con los tamaños de entrada, para no bajar archivos de más). Lo que no entra queda en omitidos con el motivo: se pide el resto en otro pack. La respuesta trae la ruta en archivo y materiales con sección, módulo, páginas y página de inicio de cada uno.

La direccion del curso sale de aula_list_courses. Para leer o pasarle al usuario archivos que no son PDF, usá aula_open y aula_read_file.

Inputs: direccion (required), archivos.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 13 tools

    Disambiguation4/5

    Most tools target a clearly distinct resource+action (grades, forum post/edit/delete, choice answer, message, assignment submit, calendar event), and descriptions explicitly explain when to use each. The main soft spot is aula_open, a multi-purpose navigator that also surfaces course lists, grades-adjacent module data and file URLs, so it slightly overlaps aula_list_courses and aula_read_file, but the docs steer selection well.

    Naming Consistency3/5

    All names share the aula_ prefix and snake_case, which keeps them readable as a family. However the verb position and part of speech vary inconsistently: list_courses/get_site_info/read_file/send_message are verb_noun, while forum_post/choice_answer/assign_submit/calendar_add_event are noun_verb, and grades, open, study_pack are bare nouns/verbs.

    Tool Count5/5

    13 tools is squarely in the well-scoped range for a Moodle client covering navigation, reading, grades, forums, submissions, messaging and calendar. Each tool maps to a real operation with no filler; even the niche study_pack has a clear justification.

    Completeness4/5

    The surface covers the core lifecycle: list courses, navigate/open content, read files, view grades, full forum post/edit/delete, answer choices, submit assignments, send messages and add calendar events. Minor gaps remain — calendar is add-only (no list/edit/delete), there is no messaging inbox read, and file handling is read-only apart from the PDF study pack — but agents can work around these.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Connects AI agents to Argentine universities' Moodle virtual classrooms and SIU Guaraní self-service portals, enabling them to read course materials, announcements, grades, and enrollment data. With user confirmation it can also post to forums, submit assignments, answer choices, and send private messages.
      311 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Connects AI agents to Argentine university systems so they can browse Moodle virtual classrooms, read course materials and forum discussions, search across courses, and consult SIU Guaraní academic records such as grades, enrollments, and exam boards. With user confirmation it can also post in forums, submit assignments, answer choices, and send messages.
      MIT